人工神经网络设计课程报告byHHU_第1页
人工神经网络设计课程报告byHHU_第2页
人工神经网络设计课程报告byHHU_第3页
人工神经网络设计课程报告byHHU_第4页
人工神经网络设计课程报告byHHU_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、人工神经网络课程报告姓名:张进 学号:151307040035 专业:计算机科学与技术指导老师:曾晓勤 2015年12月基于BP神经网络的英文字母识别技术报告摘要:本技术报告主要介绍了利用BP神经网络进行英文字母的识别主要过程,为了检测网络的容错性能和抗干扰能力,试验中我还准备了隐藏16%和33%样本数据,因为题目中没有特别要求,故本次实验程序的编写主要使用了作者较为熟悉的JAVA语言。关键词:BP神经网络;噪声干扰;模式识别;JAVA语言一、项目设计题目用多层感知机网络实现对样本图像A-Z的识别,输出相应的数值0-25,通过分析实验结果讨论感知机网络的识别和容错性能。二、实验设计概要1、 实

2、验数据预处理模式识别应用的领域非常广泛,其中字母的识别是一个经常研究的课题。由于在不同的课题中,由于具体的条件不同,解决的方法也不尽相同,因而字符识别的研究仍具有理论和实践意义。这里讨论的是用BP神经网络对26个英文字母的识别,BP网络算法是学者Rumelhart、McClelland和他们的同事在20世纪80年代中期提出的多层前馈网络MFNN(MutltilayerFeedforward Neural Networks)的反向传播学习算法。BP网络是对非线性可微分函数进行权值训练的多层前向网络。在对字母进行识别之前,需要将字母进行预处理,即将待识别的26个字母中的每一个字

3、母都通过的方格形式进行数字化处理,其有数据的位置设为1,其他位置设为-1。如图1给出了字母A、B和C的数字化过程。下面给出了字母A的数字化处理结果,是用一个1*30向量表示,其结果为:P030=-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,1;其他字母对应的向量也做类似的处理。最终的标准输入矩阵P2630,包含26个字母向量。-1-11-1-1-11-11-11-1-1-11111111-1-1-111-1-1-11-1111-11-1-1-111-1-1-1-11-1-1-1-11-1-1-

4、11-1111-11111-11-1-1-111111-11-1-1-111-1-1-111111-1 A B C图1 字母数字化样式2、 网络的初始设计本次网络主要选择如图2所示的网络结构,其中有一个输入层,一个隐含层,一个输出层,网络结构为30-30-1,其中,。图2 网络结构本次如图2所示的网络中,p为待输入的学习(识别)向量,因为每个字母都有30个元素的向量表示,所以p的维数为30*1,w1为第一层权值,维数30*30,w2为第二层权值,维数30*1,b1为第一层偏值,维数30*1,b2为第二层偏值,维数1*1,a1为第一层输出,维数30*1,a2为网络最后的输出,至此基本的网络结构初

5、始设计完毕。3、 初始化各项参数本次初始化参数主要包括初始化隐含层第一层的权值w13030和偏置值b130,初始换隐含层第二层的权值w230和偏置值b2,本次实验选取的初始值为0-0.5之间的随机实数。其中随机实数可以通过调用JAVA语言的random()方法得到。对于学习速度可以先设置为:=0.01,当然,也可以在后面的实验过程中不断的调节的值使得学习的更快更好,具体代码实现见附录。4、 前向传播设计在前面工作完成的基础上,首先需要根据BP算法的公式和计算第一层网络的输出a1,然后根据公式计算出最后输出层的a2,这就是BP神经网络的前向传播过程。最后根据计算出误差e,具体代码实现见附录。5、

6、 敏感性计算由于在计算敏感性之前需要用到传输函数的导数,故需要提前计算出来。具体导数推导如式(5.1)和式(5.2)所示: (5.1) (5.2)然后根据式(5.1)和式(5.2)可以得到s2的计算公式和第一层敏感性s1的计算公式,具体代码实现见附录。6、 权值和偏值的更新这里需要用到我之前设置的学习速度,实验中可以尝试修改的值,观察实验效果。具体的权值偏值计算可以根据公式(6.1)、公式(6.2)、公式(6.3)、公式(6.4)计算得到,具体代码实现见附录。 (6.1) (6.2) (6.3) (6.4)7、 测试网络性能BP算法需要不停地迭代去更新权值和偏置直至某次迭代后误差e满足了实验的

7、要求或者达到了最大的迭代次数。学习后预期的效果应当是当使用训练样本给BP网络识别时,它能够识别出字母A-Z,输出对应的数字0-25;当使用隐藏部分数据的样本给它识别时,如果它能够识别多数A-Z破损数据,说明该BP网络的抗干扰、容错能力较强,反之如果大部分无法识别,则说明本网络容错能力较差。3、 实验结果展示1、实验一学习速度a=0.1,误差e=0.01,迭代次数m=2000,学习结束效果如图3所示。图3 实验一结果部分展示2、实验二学习速度a=0.01,误差e=0.01,迭代次数m=2000,实验结果如图4所示。图4 实验二结果部分展示3、实验三学习速度a=0.01,误差e=0.0001,迭代

8、次数m=2000,实验结果如图5所示。图5 实验三结果部分展示4、实验四学习速度a=0.015,误差e=0.0001,迭代次数m=3000,实验结果如图6所示。图6 实验四结果部分展示通过观察四次实验的效果图可以清楚的发现,学习速度,误差标准和迭代次数对识别的效果都有影响。显然本次实验最合适的学习速度a=0.015,可以发现当学习速度不变时,误差选取的越小,迭代次数越大,则识别的效果越好。5、实验五为了简单的验证一下BP网络的容错能力,下面进行实验五,在原始数据p基础上隐藏最后一行(隐藏16%)进行识别,具体参数为:a=0.015,e=0.0001,m=3000,实验结果如图7所示。图7 实验

9、五结果部分展示由图7可以发现,绝大部分破碎的数据无法被正确识别,小部分字母可以被识别。因此可以说明本次实验构造的BP网络的容错性较差。4、 实验总结本次实验主要实现基于BP网络的字母识别功能,通过实验我深入了解了BP算法的原理,能够通过编程搭建一个简单的BP网络。在实验中通过调整学习速度,迭代次数,误差大小,实现了对BP网络性能的优化。通过本次实验,我也体会到了BP算法还有有它很大的局限性的,比如:训练次数多使得学习效率较低,算法的收敛速度较慢,易形成局部极小而得不到全局最优等。在实验中,我发现当学习速度设为0.1的时候,算法的震荡较为验证,结果不好,并且需要的迭代次数大,但是当学习速度设为0

10、.01时。算法明显稳定很多,结果处理的好,需要的迭代次数少,能较快的给出相应的正确的结果。附录public class BP_Algorithm public static void main(String args) /BP主方法Data data = new Data();show(data.p);/输出元数据BP_init(data);/初始化参数BP_learn(data, 3000); /调用BP学习算法,5200为学习迭代次数,可以调节BP_test(data,data.p); /测试BP算法的正确性BP_test(data,data.p_test_16); /测试隐藏了16%数据

11、的正确性BP_test(data,data.p_test_33); /测试隐藏了33%数据的正确性static void show(float p) /根据矩阵用*打印出字幕图像 的方法 int i,j,k; for(i=0;i<26;i+)for(j=0;j<6;j+) for(k=0;k<5;k+) if(pij+6*k=1) System.out.print("*"); else System.out.print(" "); System.out.println(); System.out.println(); static vo

12、id BP_init(Data data) /初始化参数方法,给权值和偏值赋初值(w1,w2,b1,b2)int i,j;for(i=0;i<30;i+) for(j=0;j<30;j+) /调用java的random方法生成00.5之间的实数 data.w1ij=(float) (Math.random()/2.0); data.w2i=(float) (Math.random()/2.0); data.b1i=(float) (Math.random()/2.0);data.b2=0.48f;static void BP_learn(Data data,int count) /

13、BP算法的学习过程,其中m为迭代次数 int i,j,m;for(m=0;m<count;m+)/BP算法的学习过程 for(i=0;i<30;i+) /对于某一个字母 一轮结束初始化a1,a2,s1,s2 data.a1i=0; data.s1i=0;data.a2=0;data.s2=0;if(m%26=0&&m!=0&&(data.e/26)>=0&&(data.e/26)<=0.0001) /满足误差要求,结束迭代 System.out.println("OK,误差为: "+data.e); b

14、reak;else if(m%26=0&&m!=0) /一轮结束,重置均误差data.e=0;for(i=0;i<30;i+) /前向传播for(j=0;j<30;j+) data.a1i+=data.w1ij*data.pm%26j; for(i=0;i<30;i+) /使用s型函数 计算第一层结果值 data.a1i=data.a1i+data.b1i; data.a1i=(float)(1/(1+Math.pow(Math.E, -data.a1i);for(i=0;i<30;i+) /使用线性函数计算第二层结果值 data.a2=data.a2+

15、data.w2i*data.a1i;data.a2=data.a2+data.b2;data.e_true=(m%26)-data.a2;data.e=data.e+data.e_true; /累加一次迭代的真实误差data.s2=(-2)*data.e_true; /计算s2敏感性 for(i=0;i<30;i+)/针对计算第一层敏感性初始化F(n) for(j=0;j<30;j+) if(i=j) data.tempij=(1-data.a1i)*data.a1i; for(i=0;i<30;i+) /计算s1 敏感性 data.s1i=data.tempii*data.

16、w2i;data.s1i=data.s1i*data.s2;for(i=0;i<30;i+) /第二层权值偏置值修正data.w2i=data.w2i-data.a*data.s2*data.a1i;data.b2=data.b2-data.a*data.s2;for(i=0;i<30;i+) /计算s2* a1 for(j=0;j<30;j+) data.tempij=data.s1i*data.pm%26j;for(i=0;i<30;i+) /第一层权值偏置值修正 for(j=0;j<30;j+) data.w1ij=data.w1ij-data.a*data

17、.tempij; for(i=0;i<30;i+)data.b1i=data.b1i-data.a*data.s1i;/BP测试方法,输出结果static void BP_test(Data data,float p) int i,j,k; for(i=0;i<26;i+) for(j=0;j<6;j+) /展示测试数据 for(k=0;k<5;k+) if(pij+6*k=1) System.out.print("*"); else System.out.print(" "); System.out.println(); for

18、(j=0;j<30;j+) /初始化网络第一层第二层输出 data.a1j=0; data.a2=0; for(j=0;j<30;j+) /前向传播 for(k=0;k<30;k+) data.a1j+=data.w1jk*pik; for(j=0;j<30;j+) data.a1j=data.a1j+data.b1j; data.a1j=(float)(1/(1+Math.pow(Math.E, -data.a1j); for(j=0;j<30;j+) data.a2+=data.w2j*data.a1j; data.a2=data.a2+data.b2; Sy

19、stem.out.println("对应数字:"+data.a2); public class Data /原始A-Z数据protected float p= -1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,1/A,1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1 /B ,-1,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1

20、,-1,1,-1,1,-1,-1,1,-1 /C,1,1,1,1,1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,1,-1 /D,1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,-1,-1,1 /E,1,1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1 /F,-1,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,

21、1,1,-1,-1,1,1,-1,-1,1,-1,1,1,1 /G,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,1,1 /H,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1 /I,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /J,1,1,1,1,1,1,-1,-1,1,1

22、,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1 /K,1,1,1,1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1 /L,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1 /M,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1

23、/N,-1,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,1,-1 /O,1,1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1 /P,-1,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,1,1,1,1,1 /Q,1,1,1,1,1,1,1,-1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-

24、1,-1,-1,-1,-1 /R,-1,1,1,-1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1 /S,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1 /T,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,1,1,-1 /U,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,

25、-1,-1,1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,-1 /V,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1 /W,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1 /X,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1 /Y,1,-1,-1,-

26、1,1,1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1; /Z/隐去33%的A-Z数据 protected float p_test_33=-1,-1,1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1 /A,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1 /B,-1,1,1,1,-1,-1,1,-1,-1,-1

27、,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1 /C,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1 /D,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1 /E,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1

28、,-1 /F,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1 /G,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1 /H,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /I,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,

29、1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /J,1,1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /K,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /L,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,-1,-1 /

30、M,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1 /N,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1 /O,1,1,1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1 /P,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,

31、-1,-1,-1,-1,-1,-1,1,1,1,-1,-1 /Q,1,1,1,1,-1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /R,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1 /S,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1 /T,1,1,1,1,-1,-1,

32、-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1 /U,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1 /V,1,1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1 /W,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1

33、,-1,1,-1,-1,-1,-1,-1 /X,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1 /Y,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1; /Z/隐去16的A-Z的数据 protected float p_test_16= -1,-1,1,1,1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,1,-1,-1,

34、-1,-1,1,1,1,-1/A,1,1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1 /B,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,-1 /C,1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1 /D,1,1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,

35、-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1 /E,1,1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,-1,1,-1,-1,-1,-1,-1 /F,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,1,-1 /G,1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1 /H,-1,-1,-1,-1,-1,-1,

36、1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /I,-1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /J,1,1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /K,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,

37、-1,-1,-1,-1,-1,-1,-1 /L,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1 /M,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1 /N,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1 /O,1,1,1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,

38、1,-1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1 /P,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,-1 /Q,1,1,1,1,1,-1,1,-1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /R,-1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,-1 /S,1,-1,-1,

39、-1,-1,-1,1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1 /T,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,-1 /U,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,-1 /V,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,

40、-1,-1,1,1,1,1,1,-1 /W,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1 /X,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1 /Y,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1; /Zfloat w1 = new float303

41、0; /网络第一层权值矩阵w1float w2=new float30; /网络第二层权值矩阵w2float a1=new float30; /网络第一层输出a1float a2=0; /网络最终输出a2float b1=new float30; /网络第一层偏值b1float b2=0; /网络第二层偏值b2float s1=new float30; /网络第一层敏感性s1float s2=0; /网络第二层敏感性s2float e_true=1; /一次迭代真实误差e_truefloat a=0.015f; /学习速度afloat e=0; /一轮迭代的平均误差efloat temp=ne

42、w float3030; /第一层输出导数的对角矩阵tempint num = 0; /用于接收一个10以内随机正整数 自联想与异联想技术报告摘要:本次技术报告主要介绍了两个实验,第一个实验是验证02的线性自联想的可行性,第二个实验是实现AJ到09的异联想。本次实现主要使用JAVA语言编程实现,最后通过实验结果分析基于有监督的Hebb学习的线性联想器的联想和容错性能,因为题目中没有特别要求,故本次实验程序的编写主要使用了作者较为熟悉的JAVA语言。关键词:Hebb学习;自联想;异联想;JAVA语言一、项目设计题目1、编程实现书中第7章7.2.4节中的例题的联想器,验证书中给出的结果(即实现02

43、的线性自联想器)2、把输入图像的样本从02扩大到09,实现从图像09到图像AJ的异联想器,利用实验结果分析线性联想器的联想和容错性能。二、实验设计概要8、 验证02的自联想自联想神经网络(Auto-Associative Neural Network , 缩写为AANN)是1992年Kramer提出的,是BP神经网络的一种特殊情形。其特点是有对称拓扑结构,即输出量等于输入量。1.1数据预处理和网络初始设计数据预处理主要是将02数字向量话,转化为程序可以处理的数据。如图1所示,本实验将每个数字用一个6*5的表格表示。为了方便程序的处理,再将数字向量化,比如

44、数字0对应的向量形式为:P030=-1,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,-1。-1111-11-1-111-1-1-111-1-1-111-1-1-11-1111-1111-1-1-1-1-11-1-1-1-11-1-111-1-1-11-1-1-1-11111-111-1-1-1-11-1-1-1-11-1-1-1-11-1-1-1-11-1-1-1-11-1-1 A B C图1 02图像表格表示自联想的网络设计图如2所示。p为待输入的学习(识别)向量,因为每个字母都有30图2 自联想网络设计图个元素的向量表示,所以p的维数

温馨提示

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

评论

0/150

提交评论