matlab实现字符识别,字符识别 - MATLAB Simulink Example - MathWorks 中国

定义问题

脚本 prprob 定义了一个包含 26 列的矩阵 X,每列对应一个字母。每列有 35 个值,值可能是 1,也可能是 0。每列(包含 35 个值)定义一个字母的 5×7 位图。

矩阵 T 是一个 26×26 的单位矩阵,它将 26 个输入向量映射到 26 个类。

[X,T] = prprob;

以下命令将第一个字母 A 绘制为一个位图。

plotchar(X(:,1))

6eb62be1dd7b63748526ce0762d752f7.png

创建第一个神经网络

为求解此问题,我们将使用针对模式识别建立的具有 25 个隐藏神经元的前馈神经网络。

由于神经网络以随机初始权重进行初始化,因此每次运行该示例进行训练后的结果都略有不同。为了避免这种随机性,请设置随机种子以便每次都重现相同的结果。这对于您自己的应用情形不是必需的。

setdemorandstream(pi);

net1 = feedforwardnet(25);

view(net1)

a736356b166b5c0791a7df3b70054f90.png

训练第一个神经网络

函数 train 将数据划分为训练集、验证集和测试集。训练集用于更新网络,验证集用于在网络过拟合训练数据之前停止网络,从而保持良好的泛化。测试集用作完全独立的测量手段,用于衡量网络针对新样本的预期表现。

当网络针对训练集或验证集不再可能有改善时,训练停止。

net1.divideFcn = '';

net1 = train(net1,X,T,nnMATLAB);

Computing Resources:

MATLAB on GLNXA64

训练第二个神经网络

我们希望网络不仅可以识别形状标准的字母,还可以识别含噪的字母。因此,我们将尝试针对含噪数据训练第二个网络,并将其泛化能力与第一个网络进行比较。

以下命令为每个字母 Xn 创建 30 个含噪副本。值由 min 和 max 限制在 0 和 1 之间。还定义了相应的目标 Tn。

numNoise = 30;

Xn = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*0.2,0),1);

Tn = repmat(T,1,numNoise);

以下是 A 的含噪版本。

figure

plotchar(Xn(:,1))

acea0882060be0865ea374b1d46c80a5.png

以下命令将创建并训练第二个网络。

net2 = feedforwardnet(25);

net2 = train(net2,Xn,Tn,nnMATLAB);

Computing Resources:

MATLAB on GLNXA64

测试两个神经网络

noiseLevels = 0:.05:1;

numLevels = length(noiseLevels);

percError1 = zeros(1,numLevels);

percError2 = zeros(1,numLevels);

for i = 1:numLevels

Xtest = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*noiseLevels(i),0),1);

Y1 = net1(Xtest);

percError1(i) = sum(sum(abs(Tn-compet(Y1))))/(26*numNoise*2);

Y2 = net2(Xtest);

percError2(i) = sum(sum(abs(Tn-compet(Y2))))/(26*numNoise*2);

end

figure

plot(noiseLevels,percError1*100,'--',noiseLevels,percError2*100);

title('Percentage of Recognition Errors');

xlabel('Noise Level');

ylabel('Errors');

legend('Network 1','Network 2','Location','NorthWest')

10265c4b7939bb123f6089b0c2762760.png

由于存在噪声,在无噪声情况下训练的网络 1 的错误数多于在有噪声情况下训练的网络 2。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

批处理结束某个进程_进程调度

当计算机系统是多道程序设计系统时,常常会出现多个进程或线程竞争CPU的情况。如果有大于处理器数的进程(线程)处于就绪态时,就必须要选择下一个要执行的进程(线程)。在操作系统,用于选择接下来要执行的进程的程序称之为调度程序(Scheduler)&a…

动态游标for循环_数据结构系列循环链表

前面留的一个问题,后文更跟新回答单链表可以表示任意的线性关系,有些线性关系是循环的,既没有队尾元素。将单链表中的终端结点指针端由空指针改为指向头结点,这时的单链表形成国恒一个环,改为循环链表。插入与删除与单链表的原理甚…

sas sql 读取最后一行数据_SAS基础编程和数据处理

前几天讲了数据分析中SQL的基本使用方法以及具体案例分析思路,接下来会继续讲统计基础以及在SAS软件内的应用,在这之前,本文先进行SAS基础使用编程的基础介绍,后续会主要阐述SAS软件内的统计数学的应用,如分析或初步建…

代码合并工具_分享几款比较常用的代码比较工具

俗话说:三句不离本行,对于程序员这个可爱的群体来说也是一样,即使面对无休无止的编程工作,程序员们依旧任劳任怨的埋头苦干,梦想着用自己码下的代码改变世界。工欲善其事,必先利其器,每一位程序员都有自己私…

循环控制

循环控制 定义 Python 循环语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。 并在符合条件的情况下跳出该段循环。 类似于控制语句。 如下图所示。 WHILE 循环 while 判断条件: 语句 求1~100的和 n 0 sum 0 while…

rest风格的get加密字符串怎么接收_RESTful Api的设计与风格,你该学一下咯

REST的重要概念REST全称是Representational State Transfer,中文意思是表征性状态转移。RESTful是指具有REST表征的web架构风格,并非必须遵守的规则。REST分离了API的结构和逻辑,主要应用于客户端和服务器交互类的软件。基于这种风格设计的软…

接口批量同步数据_千手接口平台+电商ERP,助德嵘大药房征战拼多多

拼多多对C端经营者来说,是一个处于红利期的第三方C端电商平台,进驻费比天猫低很多,而且流量成本也低,很多商家都跃跃欲试。但对于没有C端平台运营经验的商家,进驻后会发现几个"坑":客单价低、退货…

php 接口有几种,【后端开辟】php接口有哪些范例?

接口是什么?运用接口(interface),能够指定某个类必需完成哪些要领,但不须要定义这些要领的具体内容。接口是经由过程 interface 关键字来定义的,就像定义一个规范的类一样,但个中定义一切的要领都是空的。接口中定义的…

java是编译型语言还是解释型语言?

首先拿python和C说明,python运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地被python解释器翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C/C程序是编译…

typedef函数指针_C语言函数指针之回调函数

1 什么是回调函数?首先什么是“回调”呢?我的理解是:把一段可执行的代码像参数传递那样传给其他代码,而这段代码会在某个时刻被调用执行,这就叫做回调。如果代码立即被执行就称为同步回调,如果过后再执行&a…

fedora 安装oracle 12c,Fedora 12下安装Oracle 11客户端

目标:将oracle-client(v11)安装到rdquo;/opt/oracle/rdquo;下准备好如下三个安装包,放在某个目录下,如:/root/software/ora目标:将Oracle-client(v11)安装到”/opt/oracle/”下准备好如下三个安装包,放在某…

轨迹跟踪主要方法_DELMIA教程:基于指令形式的机器人TCP轨迹局部跟踪方法

上一期为大家介绍了基于工具条中的“TCP Trace”命令按钮的全局TCP轨迹跟踪,之所以称之为全局轨迹跟踪,是因为只要命令被打开,机器人运行的全部轨迹都将实现跟踪。既然有全局TCP轨迹跟踪,那么就一定有局部TCP轨迹跟踪,…

[转帖]开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 https://www.geek-workshop.com/thread-1860-1-1.htmlliamjeal电梯直达1# 发表于 2012-9-10 13:41:43 | 只看该作者 |只看大图 因CooCox用户数及影响力越来越大,CooCox团队也逐渐提高了对软件及代码协议的重…

qt 定时器累加值_零基础入门单片机定时器详解

一、基本定时器介绍在STM32中,基本定时器有TIM6、TIM7等。基本定时器主要包含时基单元,提供16位的计数,能计数0~65535。基本定时器除了计数功能以外,还能输出给DAC模块一个TRGO信号。基本定时器框图如下:二、时基单元介…

jvm 安装位置_简单了解JVM

1、JVM的位置:JVM是在操作系统上面的应用软件JVM虚拟机有三种如下:① Sun公司的HotSpot;    ② BEA公司的JRockit;    ③ IBM公司的J9 JVM;java虚拟机属于第一种:2、JVM的体系结构:3、类…

前端安全之 XSS攻击

参看: XSS的原理分析与解剖 前端安全 -- XSS攻击 web大前端开发中一些常见的安全性问题 1、前言 XSS 是面试时,hr提出来给我的,然后大体的浏览一遍,今天才查阅资料大体了解了它。 XSS 攻击:攻击者向HTML页面传入恶意的…

图片

转载于:https://www.cnblogs.com/water-1/p/11138418.html

idea 调节背景护眼_夜间用电脑亮瞎眼睛?这份夜间护眼指南来帮你。

题图:来自 Unsplash文/彭宏豪,笔名/安哥拉不知从什么时候起,「头秃」成了网友和周围人口中的一个高频词汇,似乎很多事情都离不了头秃——学到头秃、工作到头秃、熬夜到头秃等等,就连「突然」也渐渐演变成「秃然」。但对…

编写有效用例电子版_剖析用例设计方法的使用

今天给大家讲解的是用例设计方法的使用,在设计用例时该如何应用用例设计方法、设计出覆盖率高的测试用例呢?场景简介:普遍登录页面测试用例设计分析拿到需求,首先要做需求分析。我们看到登录界面有三个测试点:1.账号2.…

一个参数大小写引发的uploadify报错 Syntax error, unrecognized expression: #

上传控件uploadify 报错"Syntax error, unrecognized expression: #" 版本为 uploadify3.2 报错原因:参数ID【hidInfoId】小写错写成了大写。debug过程: ①:报错 "Syntax error, unrecognized expression: #" ②&#xf…