ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:165.24KB ,
资源ID:21925733      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21925733.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验报告 BP神经网络2150230509Word格式文档下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验报告 BP神经网络2150230509Word格式文档下载.docx

1、4算法步骤。5编程,注意原始数据的通用化,数据输入的随机性。6网络训练,注意训练数据与验证数据分开。7网络验证7结果分析,修改隐含层节点个数,修改学习率,分别对结果的影响。8体会,例如对下列问题的理解:1)BP学习算法的基本思想?2)BP网络设计中结点个数如何确定?3)为什么要对数据进行通用标准化,即转为-1,1?4)为什么要对训练数据的输入顺序进行随机化处理?5)为什么训练数据与测试数据要分开?注意:如果用MatLab编程序,将下列数据存放到一个文本文件(例如data.dat),编写程序存放到一个m文件中(例如你的学号.m),数据文件和程序文件放在同一文件夹下。运行MatLab后,指定上述文

2、件夹为工作区域,在命令行运行m文件。三、实验步骤前期工作:首先将实验数据分为两组,一组用于训练,一组用于测试。分别保存在trainData.txt和testData.txt中(115组训练数据和35组测试数据)。如图所示:各列数据代表的意义如下: 序号 种类 叶长 叶宽 花长 花宽(单位:cm) 1 1 49 30 14 2 2 2 66 29 46 13 150 3 65 33 60 25(本实验设计一个BP网络,先用75%的数据对网络进行训练,然后用25%的数据进行检测。)网络设计:输入层用4个节点,分别对应文件中的3/4/5/6列,隐层用3个节点。因为输出有3类,我们也用3个节点来表示,

3、分别对应100/010/001。算法描述:BP学习算法类似于LMS算法,它是基于梯度下降:即权值按照错误信号的负梯度方向进行修改。其主要优点在于将高层的错误表现反向传递为低层,从而修改权值。第一步,初始化 权值随机赋值,取值范围-1, +1第二步,输入层FA输入样品,计算出隐层FB活动第三步,计算出输出层FC活动第四步,网络输出和期望输出相比较,计算出输出层FC的错误第五步,反传,计算出隐层FB的错误第六步,修改FC层和FB之间的权值wij第七步,修改FA层和FB之间的权值vhj第八步,修改偏差ti 、fj重复第二到第八步,直到输出层FC的错误足够小MATLAB编程:使用Matlab建立前馈神

4、经网络主要会使用到下面3个函数:newff :前馈网络创建函数train:训练一个神经网络sim :使用网络进行仿真MATLAB代码如下,根据隐含层节点个数、学习率、激活函数的选择不同只需要要稍作修改。%读取训练数据id,class,f1,f2,f3,f4, = textread(trainData.txt , %f%f%f%f%f%f);%特征值归一化input,minI,maxI = premnmx( f1 , f2 , f3 , f4 ) ;%构造输出矩阵s = length( class ) ;output = zeros( s , 3 ) ;for i = 1 : s output(

5、 i , class( i )+1 ) = 1 ;end%创建神经网络net = newff( minmax(input) , 3 3 , logsig , traingdx ) ;%设置训练参数net.trainparam.show = 50 ;net.trainparam.epochs = 1500 ;net.trainparam.goal = 0.01 ;net.trainParam.lr = 0.01 ;%开始训练net = train( net, input , outputid2 c t1 t2 t3 t4 = textread(testData.txt%测试数据归一化testIn

6、put = tramnmx ( t1,t2,t3,t4 , minI, maxI ) ;%仿真Y = sim( net , testInput ) %取最大者为1的位置作为识别结果resultmax,r = max(Y);testclass=r-1;%统计识别正确率s1 , s2 = size( Y ) ;hitNum = 0 ; s2 m , Index = max( Y( : , i ) ) ; if( Index = c(i)+1 ) hitNum = hitNum + 1 ; endsprintf( %3.3f%,100 * hitNum / s2 )%输入到隐层权值w1=net.iw

7、1,1 %隐层阙值bias1=net.b1 %隐层到输出层权值w2=net.lw2,1;%输出层阙值 bias2=net.b2以上程序的识别率稳定在94%左右,训练250次左右达到收敛,训练曲线如下图所示:我们也可以用下面的语句来定位有误差的数据:plot(id2,c) %预测数据hold on %此命令能使所绘制的图形发生在已有的同一张纸上plot(id2,testclass)%已知数据hold off本例中我得出的结果是(训练的结果是不同的)输入到隐层的权值:w1 = 16.3795 5.2873 -5.1517 -1.2917 0.9802 -3.2833 -0.3474 -0.3002

8、5.9488 2.2175 -2.6289 1.2639隐层到输出层权值:w2 = -3.3628 1.1942 -11.31829.4958 -11.6694 -4.0900-16.82 -4.1606 7.9779隐层阙值:bias1 = -9.3618 0.40423.9510输出层阙值:bias2 = 4.9943 5.7593 -0.4679结果分析: 我在实验中尝试调整隐含层结点的个数,选择不同的激活函数,设定不同的学习率,说明如下:隐含层节点个数隐含层节点的个数对于识别率的影响并不大,但是节点个数过多会增加运算量,使得训练较慢。2激活函数的选择激活函数无论对于识别率或收敛速度都有

9、显著的影响。在逼近高次曲线时,S形函数精度比线性函数要高得多,但计算量也要大得多。 上面的代码中我用的是 logsig ,识别率只有94%,但我换了purelin后发现识别率接近100%。3学习率的选择学习率影响着网络收敛的速度,以及网络能否收敛。学习率设置偏小可以保证网络收敛,但是收敛较慢。相反,学习率设置偏大则有可能使网络训练不收敛,影响识别效果。The table shows the different resultCaseHidden nodesPermitted errorLearning rateEpochAccuracy(100%)130.01124194.28626114791

10、06740.0051196558397.1430.5115970.34328.57180.051119771.429109654.286(因为测试数据只有35组,所以准确率反映的情况不好,33/35即94%,34/35期97%) 当学习率和允许的误差太大的时候,训练情况是不收敛的。对于本例来说,而当Permitted error和Learning rate合适的时候准确率基本稳定在94%。四、总结分析由于对MATLAB的不熟悉,自己将BP神经网络实现出来还是有难度的,于是我学习使用了MATLAB自带的神经网络工具箱,进而了解怎么样使用BP神经网络来进行蝴蝶花的分类。思考题:1)为什么要对数据进

11、行通用标准化,即转为-1,1?答:输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。例如神经网络的输出层若采用S形激活函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到0,1区间。2)为什么要对训练数据的输入进行随机化处理? BP网络本质上是个支持向量机,对输入顺序进行随机化处理是为了保证能够有监督学习,同时使算法按

12、照梯度下降法则进行学习。假如训练数据是有序的,那么会导致训练结果很难收敛到偏置值。只有保证数据的随机性才能使得BP算法训练结果尽可能地收敛。3)为什么训练数据与测试数据要分开? 用于测试的数据不能参与训练,否则识别度肯定是100%,我们的目的是通过对训练数据的学习来预测未知的数据。4)BP网络设计中结点的个数如何确定?并没有准确的确定方法,只要合理即可。输入层和输出层的结点数量要足够表示,隐含层结点数量视情况而定。5)BP学习算法的基本思想?BP算法,误差反向传播(Error Back Propagation, BP)算法。BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。由于多层前馈网络的训练经常采用误差反向传播算法,人们也常把将多层前馈网络直接称为BP网络。指导教师批阅意见: 实验报告内容的确完整性(20分)实验步骤的清晰程度实验数据的准确性实验结果和分析的正确性实验态度(实验表现、格式排版、独立完成、按时提交)(20分)完整20较完整15不够完整清晰较清晰不够清晰准确较准确不够准确正确较正确不够正确规范较规范不够规范说明:成绩评定: 指导教师签字:朱安民 2016 年 4 月 10 日备注:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。 2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1