实验一基于人工神经网络的数码识别.docVIP

实验一基于人工神经网络的数码识别.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一基于人工神经网络的数码识别

《人工智能导论》课程 基于人工神经网络的数码识别 班级:计1103 学号:201107010330 姓名:贾梦洁 成绩评定: 评阅老师: 日 期: 实验报告正文 一、实验目的? ????基于神经网络的数字识别系统 二、实验内容? 通常实现手写体数字识别技术的方法有很多种,比如说Fisher线性判别方法,最小风险贝叶斯判别方法,朴素贝叶斯判别方法,神经网络方法等。这些方法都可以实现手写体数字的识别,本课题是采用后向传播(BP)神经网络算法,先用MATLAB自带的函数im2bw把输入的数字图像二值化处理,然后取得图片数字部分的最大行列和最小行列,对图片进行实际大小的裁剪,为接下来的归一化做铺垫,取得图像的矩阵特征值,输入到设置好的BP网络中,让网络学习,并保存网络,最后用sim函数仿真识别。运行程序后,训练好的神经网络对输入的数字进行识别。但是有时识别同一数字图片后所得出的结果会不相同,训练网络的时长,精确度也不相同。由此我们可以得出神经网络具有不稳定性和局限性,同时很多因素都能影响网络,比如加入噪声,所以神经网络仍需要人们进一步的研究。 三、实验所用智能算法基本原理与流程? 学习过程中由信号的正向传播与误差的逆向传播两个过程组成.?正向传播时,?模式作用于输入层,?经隐层处理后,?传入误差的逆向传播阶段,?将输出误差按某种子形式,?通过隐层向输入层逐层返回,?并“分摊”给各层的所有单元,?从而获得各层单元的参考误差或称误差信号,?以作为修改各单元权值的依据.?权值不断修改的过程,?也就是网络学习过程.?此过程一直进行到网络输出的误差准逐渐减少到可接受的程度或达到设定的学习次数为止.?BP网络模型包括其输入输出模型,?作用函数模型,?误差计算模型和自学习模型.?BP网络由输入层,?输出层以及一个或多个隐层节点互连而成的一种多层网,?这种结构使多层前馈网络可在输入和输出间建立合适的线性或非线性关系,?又不致使网络输出限制在-1和1之间.?? 该系统使用自建样本库,应用BP神经网络算法对样本进行训练识别。系统分为预处理、特征提取、分类器三部分。其中,预处理包括数据的读取??灰度转换,二值化,去噪,然后得到特征值,分类器的设计是整个系统的核心部分。具体程序流程图如下:? 四、系统构成与程序设计? #include?tvec.h? #include?tmat.h ?#include?crtdbg.h 五、核心代码? #include?tvec.h? #include?tmat.h ?#include?crtdbg.h? typedef?tmatdouble?CMatrix;? typedef?tvecdouble?CVector; 一个简单易用的矩阵类库?????????????????? 使用简介:??? 初始化矩阵:?tmaxdoubleA(3,2);????????-生成一个3行2列的零阵? 初始化矩阵:?tmaxdoubleB(2,2,a);??????-生成一个2行2列的矩阵并利用数组a的前2×2个元素为其赋值。??????????? 这里要求a至少要包含2×2个元素? 给矩阵元素赋值: ?A(1,2)=1.0;?? ?-将1.0赋给矩阵A的第1行、第2列 ?取矩阵元素的值:?f=A(2,2);?????? ?-取出矩阵A第2行、第2列的值赋给f? 矩阵的加、减、乘:?A=B+C;C=B*A;等等,可以像普通数据类型那样直接进行运算符运算?矩阵转置:????? ?transpose(A);? 求矩阵行列式:?? ?det(A);????? 注意:必须是方阵? 矩阵求逆:?????? ?inv(A);??注意:必须是方阵?? 得到矩阵的行数和列数:? ? A.nrows();??? A.ncols();?? resize矩阵:?? A.resize(2,2);???????????-取原来A矩阵的前2×2个元素来构造新尺寸的A? ?另外,tvec.h则包含了一个矢量(向量)类库,这里也简要介绍一下?? 初始化向量:?tvecdoubleA;???????? ?-生成一个一维的向量。默认初始值为0? 初始化向量:?tvecdoubleB(4);????? ?-生成一个4维的向量? 初始化向量:?tvecdoubleC(4,0.1);?? -生成一个4维的向量,并将每一维元素初始化为0.1? 初始化向量:?tvecdoubleD(5,a);??? ?-生成一个5维的向量,并用数组a的前5个元素为其赋值? 初始化向量:?tvecdoubleE(B);????? ?-由向量B来初始化向量E。相当于复制向量 给向量的元素赋值:?B(1)=2.0;??????? ?-给B向量的

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档