基于MATLAB的数字识别_第1页
基于MATLAB的数字识别_第2页
基于MATLAB的数字识别_第3页
基于MATLAB的数字识别_第4页
基于MATLAB的数字识别_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机与信息工程学院本科生毕业论文基于 BP 神经网络的手写数字识别算法的设计与实现班 级: 13 汉班 学 号: 20131102507 姓 名: 江晓雪 指导教师: 李艳玲 2017 年 3 月 31 日毕 业 论 文 目 录1 绪论 .11.1 图像识别的提出 .11.2 图像识别的现状与发展趋势 .12 BP 神经网络的概述 .23 手写体数字识别的实现过程 .43.1 整体线路图 .43.2 算法流程 .53.3 图像预处理 .103.4 结果分析 .104 结论 .11参考文献 .12全文共 13 页 4834 字0基于 BP 神经网络的手写数字识别算法的设计与实现计算机与信息工程学院 2013 级汉班 江晓雪 20131102507指导教师 李艳玲 副教授摘要 本文实现了基于 MATLAB 关于神经网络的手写数字识别算法的设计过程,采用神经网络中反向传播神经网络(即 BP 神经网络)对手写数字的识别,由 MATLAB 对图片进行读入、灰度化以及二值化等处理,通过神经网络进行训练和测试。实验证明:该神经网络对手写数字的识别可以达到 95.65%。关键词 手写数字识别;BP 神经网络;MATLAB 语言1 绪论1.1 图像识别的提出图像识别在信息技术发达的今天已经占据了很重要的地位,在我们实际生活中也有很多应用。所谓的图像识别,就是指通过计算机对图像进行相应的处理、分析,来达到识别不同模型的目标和任务的一种技术。对于它的提出,简单的来说,它的发展经历了三个阶段:第一个是文字识别 、第二个是数字图像处理与识别、第三个是物体识别。第一种相对来说比较简单,它的研究是从1950 年开始的,一般情况是识别字母、符号和数字,无论是印刷体识别还是手写体识别,它的应用都非常广泛,但是也伴随着,这个识别的过程会更加的耗时、费力,无论是人力还是物力,都会有很大的损失;第二种就是我们所说的数字图像处理与识别,在图片的识别过程中,图片识别会有一定的误差,也会带来小小的麻烦;第三就是物体识别,而物体的识别主要指的是:在三维世界中,对于个体、环境的感知和认识进行识别,这不同于二维世界的认知,相对来说是更高级的计算机图像识别,它是以二维世界中对数字图像和模拟图像处理的办法为依据,进行更高一级的,并且结合了现代人工智能技术等学科的研究目标,研究成果已经被广泛的应用在各种工业探测机器人上,为人们的安全提供了很大的帮助。11.2 图像识别的现状与发展趋势随着网络的发达、电子的信息化,图像识别的应用已经非常广泛,而主要的研究工作也包括各行各业,整理以下几点对其应用的广泛度进行说明:在生物学中,对生物的原型进行研究。从生物的脑细胞结构、物体解剖等其他科学研究的方向对生物的体系结构、神经结构、神经细胞组织等生物的原型结构及其功能机理进行研究,增强对生物学更加全面的理解。在实际应用中,建立我们需要的理论模型。根据需要应用的信息在生物学中的应用,建立需要的生物原型,也可以建立类似神经元、神经网络这样不可见的理论模型,以便可以让其更加有效的应用在生活中。建立我们生活中不能直观表现的事物模型,以便我们可以更方便的、更直观的理解事物的本质。在信息时代中,建立网络模型以及算法研究。就是通过上面所说的,建立相应的理论模型,在这个基础上加以理解,建立我们所需要的网络模型,实现计算机应用,主要应用在网络学习算法的研究,这方面的研究工作也被人们称为技术模型研究。信息时代的发展,让我们在生活中有很多的应用,例如:完成某种函数图像的绘制以及对其变化的形式进行分析、对图片信号的处理、模式识别等功能,建立需要的应用系统、制造机器人等等。通过上面的说明,也就是说从开始根据生物学原理的应用,直到建立需要的神经网络模型,最后应用到图像识别当中,可以看出其模型的建立是在生活中实例的基础上,其可靠性和准确性是显而易见的,这样就大大的增加了可信度,与此同时,也减少了工作中不必要的麻烦与困扰。而在网络信息发达的今天,人类在基本粒子、宇宙空间、生命起源等科学领域方面都已经显现出很高的兴趣度,而这其中难免会有图像提取后的处理工作,所以图像识别的应用就会越来越广泛。2 BP 神经网络的概述反向传播(Back-Propagation,BP)学习算法简称 BP 算法,采用 BP 算法的前馈型神经网络简称 BP 网络。BP 网络是多层感知器的一种,它具备多层感知器的特点,同时也有自己的特点。多层感知器包括输入层、隐藏层、输出层,2其中隐藏层可以有多个,而我们 BP 网络中隐藏层只有一个,其简单构造如图所示:图 1 多层感知器结构图而我们用到的 BP 网络中的具体信号流如图所示,它有一个反向传播的过程,这也是对传播进行调整,使精确度更高的一种办法。如图所示,其中有两种信号流通:图 2 多层感知器的信号流第一:函数信号简单来说就是信号进入输入层,然后通过隐藏层到达输入层,通过输出层输出所得值,就可以完成一个函数信号。第二:误差信号误差信号就是在逆向的传播的过程中传输的信号。其中,有两个重要参数。一个是函数信号即 sigmoid 函数,还有一个就是权值的梯度运算即梯度向量。(注:sigmoid 函数、权重的修正函数,如图所示。)3(1)ezzgsimod1)(( 2))()()()( lijlijlijlij mDJ通过对两个参数的调整,完成整个算法的应用。3 手写体数字识别的实现过程3.1 整体线路图整体流程图如图 3 所示:部分文件调用流程图如图 4 所示:图 3 整体流程图图像测试损失函数的设计与应用可视化测试数据神经网络的设计与训练sigmoid 函数4sigmoidcheckNNGradientsnnCostFunction第八部分:实现正规化第八部分:训练 NN fmincgnnCostFunction sigmoidGradient sigmoidnnCostFunctionsigmoidGradient randInitializeWeightscheckNNGradients debugInitializeWeightsnnCostFunctioncomputeNumericalGradient第五部分:sigmoid 函数第六部分:初始化参数第七部分:实现反向传播第三部分:前馈网络第四部分:前馈正规化图 4 整体流程图3.2 算法流程图片识别要经过训练好的模型来提取我们要得到的手写数字,而模型是经过多次的训练得到的,为了提高程序的准确度、增加可信度的一种数据集,所以,程序的开始,我们设计了多个可用的数据,来训练我们的神经网络。如图3 所示,一开始可视化我们的手写体测试数据,每个数字都保存在 20*20 的像素里,其中设置 25 个隐藏单位,0 到 9 共 10 个数字标签。将我们需要的参数保存到需要的函数中,也就是我们用到的 1 和 2 中。也就是保存在我们用的.mat 文件中的数据,如图 5 所示。5注:其中,.mat 文件中保存的是二位数组,用来保存我们测试需要的数据。其次,使用前馈神经网络,当参数 =0 时,运行 nnCostFunction.m 文件,而文件再调用 sigmoidGradient.m、sigmoid.m 两个参数文件(其中,sigmoid-GradiEnt.m 文件,就是对 sigmoid 函数的求导,为得就是得到 sigmoid 函数的梯度值,以便更好的了解数值变化的程度。而 sigmoid.m 文件中保存的就是sigmoid 函数)。运行结果是损失函数 J=0.287629。其中也会实现损失函数的正规化和梯度。而为了检测它的正确性,又使 =1 进行测试,调式,看结果是否符合要求,来检测正确性,得到的结果如图 8 所示,也是通过两组数据的对比,让我们更加清晰的体会它的不同之处。图 5 手写体训练数据图 6 数据保存文件6图 7 实验数据对比图 miKk kiikkiik xhyxhyJ1 )()()()( 1loglog)( (3))()(2)(1log)(log1)(10252,5140, ()()( jkjjkjmiKk kiikkiik xhyxhyJ (4)第三,sigmoid 函数的运行。运行文件 ex4.m 文件中,提到函数 g = sig-moidGradient(),是指调用 sigmoidGradient.m 文件,文件中写了 sigmoid函数的梯度表达式,而其中的 g(z)函数,是 sigmoid 函数的方程式,(5))(1)()( zgzgdz(6)ezsimo)(通过对文件的调用,输入测试值 1、-0.5、0、0.5、1,可以得到输出的梯度数,而当 z=0 时,可以得到导数值为 0.25。越接近于 0,它的变化越明显。sigmoid 函数梯度指的是标量场中变化的方向,而梯度值的大小就是用来表示变化的大小,简单来说就是我们数学中的斜率,而这么说也只是为了让人们更好的接受。7对于 sigmoid 函数的测试,我们用一组数据对它进行测试,得到的结果如图 8 所示:图 8 梯度函数测试值初始化参数(权重 W 文件的调用说明),文件中使用 randInitializeWei-ghts.m 文件,来初始化 1,2,产生随机变量,为下边的调用起到很重要的作用。上文 BP 神经网络中也曾提到过,权重值是整个过程中很重要的一个参数。而我们的 randInitializeWeights.m 文件中,也对其进行了新的定义,给定一个较小的 值,计算出新的 W 值。这个文件的作用是为了让我们打破对称而训练神经网络。其中初始化 W 的一部分代码如图所示:图 9 初始化权重值其中,L_out,L_in 是 ex4.m 文件中传输的数据。 最后,就是这个程序最重要的部分,神经网络的应用。而神经网络的形成与训练又被分为以下几个部分来实现:初始化神经网络、实现反向传播、实现正则化、训练 NN。而具体的函数调用部分可以从图 3 代码调用流程图看见,初始化神经网络用 randInitializeWeights.m 文件进行数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论