




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人工智能导论课程基于人工神经网络的数码识别班级:计1103学号:201107010330姓名:贾梦洁成绩评定:评阅老师:日 期:实验报告正文一、实验目的基于神经网络的数字识别系统二、实验内容通常实现手写体数字识别技术的方法有很多种,比如说Fisher线性判别方法,最小风险贝叶斯判别方法,朴素贝叶斯判别方法,神经网络方法等。这些方法都可以实现手写体数字的识别,本课题是采用后向传播(BP)神经网络算法,先用MATLAB自带的函数im2bw把输入的数字图像二值化处理,然后取得图片数字部分的最大行列和最小行列,对图片进行实际大小的裁剪,为接下来的归一化做铺垫,取得图像的矩阵特征值,输入到设置好的BP网络中,让网络学习,并保存网络,最后用sim函数仿真识别。运行程序后,训练好的神经网络对输入的数字进行识别。但是有时识别同一数字图片后所得出的结果会不相同,训练网络的时长,精确度也不相同。由此我们可以得出神经网络具有不稳定性和局限性,同时很多因素都能影响网络,比如加入噪声,所以神经网络仍需要人们进一步的研究。三、实验所用智能算法基本原理与流程学习过程中由信号的正向传播与误差的逆向传播两个过程组成.正向传播时,模式作用于输入层,经隐层处理后,传入误差的逆向传播阶段,将输出误差按某种子形式,通过隐层向输入层逐层返回,并“分摊”给各层的所有单元,从而获得各层单元的参考误差或称误差信号,以作为修改各单元权值的依据.权值不断修改的过程,也就是网络学习过程.此过程一直进行到网络输出的误差准逐渐减少到可接受的程度或达到设定的学习次数为止.BP网络模型包括其输入输出模型,作用函数模型,误差计算模型和自学习模型.BP网络由输入层,输出层以及一个或多个隐层节点互连而成的一种多层网,这种结构使多层前馈网络可在输入和输出间建立合适的线性或非线性关系,又不致使网络输出限制在-1和1之间.该系统使用自建样本库,应用BP神经网络算法对样本进行训练识别。系统分为预处理、特征提取、分类器三部分。其中,预处理包括数据的读取,灰度转换,二值化,去噪,然后得到特征值,分类器的设计是整个系统的核心部分。具体程序流程图如下:四、系统构成与程序设计#includetvec.h#includetmat.h#include五、核心代码#includetvec.h#includetmat.h#includetypedeftmatCMatrix;typedeftvecCVector;一个简单易用的矩阵类库使用简介:初始化矩阵:tmaxA(3,2);-生成一个3行2列的零阵初始化矩阵:tmaxB(2,2,a);-生成一个2行2列的矩阵并利用数组a的前22个元素为其赋值。这里要求a至少要包含22个元素给矩阵元素赋值: 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矩阵的前22个元素来构造新尺寸的A另外,tvec.h则包含了一个矢量(向量)类库,这里也简要介绍一下初始化向量:tvecA; -生成一个一维的向量。默认初始值为0初始化向量:tvecB(4); -生成一个4维的向量初始化向量:tvecC(4,0.1); -生成一个4维的向量,并将每一维元素初始化为0.1初始化向量:tvecD(5,a); -生成一个5维的向量,并用数组a的前5个元素为其赋值初始化向量:tvecE(B); -由向量B来初始化向量E。相当于复制向量给向量的元素赋值:B(1)=2.0; -给B向量的第1维元素赋值为2.0提取向量元素的值:f=B(2); -将B向量的第2维元素提取出来,赋给变量f得到向量的维数:B.nsize();【注意】:1.本类库的矩阵、向量运算采用值传递2.本类库的矩阵和向量的第一个元素的起始下标为1,不是0。这点尤其要注意。这和C语言中的数组不一样CVectorV3;booltest()V0.resize(4);V0(1)=1;doublek=V0(1);coutk;returntrue;intmain()doublea=1,2,3,4,5,6,7,8,9;doubleb=1.12,2.45,5.67,-2.2,3.4,6.4,0,7.1;/创建一个2行3列的零阵mACMatrixmA(2,3);mA(1)=2;mA(2)=4;mA(3)=mA(2);mA(4)=5; /mA(4)其实就是mA(2,1)mA(2,3)=9;cout测试1:nmA;coutmA(4)=mA(4)n;coutmA(2,1)=mA(2,1)n;/由mA来创建一个一模一样的矩阵mBCMatrixmB(mA);cout测试2:nmB;coutA的内存地址:&mA;coutnB的内存地址:&mBn;/resize矩阵mA。保留原来mA中的前22个元素mA.resize(2,2);cout测试3:nmA;coutA的内存地址:&mAn;/可见resize后,A的地址不变/由数组a来创建一个矩阵mCCMatrixmC(3,2,a);cout测试4:nmC;/求mD转置CMatrixmD(2,3,a);cout测试5:nmDn转置前mD的地址:&mDn;mD=transpose(mD);coutmDn转置后mD的地址:&mDn;/可见,虽然转置后行数、列数互换,这里仍然可以直接把转置后的矩阵赋给自身/位于等号左边的矩阵可以自动调整行数和列数。这很便利!/求逆矩阵CMatrixmE(2,2,b);cout测试6:nmE;mE=inv(mE);coutmE;coutinv(mE); /再求逆回来。注意这句不会改变mE本身,但可以显示出再次求逆后的结果coutmE;/矩阵的连续运算CMatrixA(2,2,a);CMatrixB(3,2,a);CMatrixC(2,3,a);CMatrixD;D=inv(A)*transpose(B)+C;/求D=A的逆乘以B的转置,再加上C/可见,该类库来进行矩阵的一系列运算非常简单!cout测试7:nA的逆乘以B的转置,再加上CnABCD;coutAinv(A)A*inv(A);coutdiagprod(A)n;/以下进入向量部分CVectorvA(3,a);cout测试8:向量nvA;/由向量构造矩阵CMatrixmAA(3,1,vA);cout由向量构造矩阵nmAA;/这里,将列向量vA(3行、1列)转化为3行、1列的矩阵,于是就可以使用矩阵计算公式来兼容向量了!/最后,调用diagbyarray函数来由一个数组来构造一个矩阵。这里矩阵对角线的元素为该数组的元素CMatrixmBBdoubleaa=1,2,3,4,5;diagbyarray(mBB,aa,5);cout最后一个测试:nmBB;diagbyarray(mBB,aa,3);coutnmBB;/*CVectorv1,v2;v1.resize(4);v1(1)=2;v2.resize(4);coutv1;coutv2;doublekkk=v1(1);coutkkk:kkkLoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW|FWS_ADDTOTITLE,NULL,NULL);/Theoneandonlywindowhasbeeninitialized,soshowandupdateit.pFrame-ShowWindow(SW_MAXIMIZE);pFrame-UpdateWindow();returnTRUE;/CDigitRecAppmessagehandlers/CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialogpublic:CAboutDlg();/DialogData/AFX_DATA(CAboutDlg)enumIDD=IDD_ABOUTBOX;/AFX_DATA/ClassWizardgeneratedvirtualfunctionoverrides/AFX_VIRTUAL(CAboutDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX); /DDX/DDV support/AFX_VIRTUAL/Implementationprotected:/AFX_MSG(CAboutDlg)/Nomessagehandlers/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg():CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoidCAboutDlg:DoDataExchange(CDataExchange*pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg,CDialog)/AFX_MSG_MAP(CAboutDlg)/Nomessagehandlers/AFX_MSG_MAPEND_MESSAG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖南长沙市望城区招聘事业单位人员31人模拟试卷附答案详解(突破训练)
- 公务员行测逻辑判断基础知识-保证合同7篇
- 岩土证考试题库及答案
- 教师编制考试题库及答案
- 保安安全考试题库及答案
- 2025年锅炉司炉考试题及答案
- 2025年贵州省遵义市公需课培训(专业技术人员继续教育)试题及答案
- 2025年贵州省安顺市辅警招聘考试题库及答案
- 火柴人数学考试题及答案
- 急诊专科护士结业考试题及答案
- 组织细胞的适应
- 农业企业技术创新与国际市场竞争研究-洞察阐释
- 禁毒社工考试试题及答案
- 2025-2030年中国教辅书市场发展趋势与前景展望研究报告
- TCECS24-2020钢结构防火涂料应用技术规程
- 养老机构膳食服务基本规范
- 银行业风险管理知识题库及案例分析题集
- 雨季防汛防洪隐患排查制度
- 各工种操作规程
- 销售部销售激励方案
- 华为公司考勤管理制度
评论
0/150
提交评论