文档介绍:该【某实验报告材料BP神经网络(2150230509) 】是由【春天阳光】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【某实验报告材料BP神经网络(2150230509) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)1/11某实验报告资料BP神经网络(2150230509)深圳大学实验报告实验课程名称:神经网络与进化算法实验项目名称:BP神经网络对蝴蝶花进行分类学院:计算机与软件专业:软件工程报告人:文成学号:2150230509同组人:无指导教师:朱安民实验时间:2016年4月1日至2016年4月7日实验报告提交时间:2016年4月7日教务处制某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案一、实验目的初步熟悉BP神经网络,并设计一个BP神经网络对蝴蝶花进行分类二、实验内容设计一个BP神经网络对蝴蝶花进行分类,要求提交试验报告,内容包括:。。,包括输入层、隐含层、输出层节点个数的设计。。,注意原始数据的通用化,数据输入的随机性。,注意训练数据与考据数据分开。,更正隐含层节点个数,更正学****率,分别对结果的影响。,比方对以下问题的理解:1)BP学****算法的基本思想?2)BP网络设计中结点个数如何确定?3)为什么要对数据进行通用标准化,即转为[-1,1]?4)为什么要对训练数据的输入序次进行随机化办理?5)为什么训练数据与测试数据要分开?注意:若是用MatLab编程序,将以下数据存放到一个文本文件(),编写程序存放到一个m文件中(),数据文件和程前言件放在同一文件夹下。运行MatLab后,指定上述文件夹为工作地域,在命令行运行m文件。某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)3/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案三、实验步骤先期工作:第一将数据分两,一用于,一用于。(115数据和35数据)。如所示:各列数据代表的意以下:序号种叶叶花花(位:cm)1149301422266294613?150365336025(本一个BP网,先用75%的数据网行,尔后用25%的数据行。)某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)5/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案网络设计:输入层用4个节点,分别对应文件中的3/4/5/6列,隐层用3个节点。由于输出有3类,我们也用3个节点来表示,分别对应100/010/001。算法描述:BP学****算法近似于LMS算法,它是基于梯度下降:即权值依照错误信号的负梯度方向进行更正。其主要优点在于将高层的错误表现反向传达为低层,进而更正权值。第一步,初始化权值随机赋值,取值范围[-1,+1]第二步,输入层FA输入样品,计算出隐层FB活动第三步,计算出输出层FC活动第四步,网络输出和希望输出对照较,计算出输出层FC的错误第五步,反传,计算出隐层FB的错误第六步,更正FC层和FB之间的权值wij第七步,更正FA层和FB之间的权值vhj第八步,更正误差i、j重复第二到第八步,直到输出层FC的错误足够小MATLAB编程:使用Matlab建立前馈神经网络主要会使用到下面3个函数:某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)7/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案newff:前馈网络创办函数train:训练一个神经网络sim:使用网络进行仿真MATLAB代码以下,依照隐含层节点个数、学****率、激活函数的选择不一样只要要要稍作更正。%读取训练数据[id,class,f1,f2,f3,f4,]=textread('','%f%f%f%f%f%f');%特色值归一化[input,minI,maxI]=premnmx([f1,f2,f3,f4]');%构造输出矩阵s=length(class);output=zeros(s,3);fori=1:soutput(i,class(i)+1)=1;end%创办神经网络net=newff(minmax(input),[33],{'logsig''logsig'},'traingdx');%=50;=1500;=;=;%开始训练net=,input,output');%读取训练数据[id2ct1t2t3t4]=textread('','%f%f%f%f%f%f');%测试数据归一化testInput=tramnmx([t1,t2,t3,t4]',minI,maxI);%仿真Y=,testInput)%取最大者为1的地址作为鉴别结果[resultmax,r]=max(Y);testclass=r'-1;某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)9/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案%统计鉴别正确率[s1,s2]=size(Y);hitNum=0;fori=1:s2[m,Index]=max(Y(:,i));if(Index==c(i)+1)hitNum=hitNum+1;endendsprintf('ê?±e?êê?%%%',100*hitNum/s2)%{1,1}%{1}%{2,1};%{2}以上程序的鉴别率牢固在94%左右,训练250次左右达到收敛,训练曲线以以下列图所示:某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案我们也能够用下面的语句来定位有误差的数据:plot(id2,c)%展望数据holdon%此命令能使所绘制的图形发生在已有的同一张纸上plot(id2,testclass)%已知数据holdoff某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)13/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案本例中我得出的结果是(训练的结果是不一样的)输入到隐层的权值:w1=-:w2=隐层阙值:bias1=输出层阙值:bias2=结果解析:我在实验中试一试调整隐含层结点的个数,选择不一样的激活函数,设定不一样的学****率,说明以下:<1>隐含层节点个数隐含层节点的个数对于鉴别率的影响其实不大,但是节点个数过多会增加运算量,使得训练较慢。<2>激活函数的选择激活函数无论对于鉴别率或收敛速度都有显然的影响。在逼近高次曲线时,形函数精度比线性函数要高得多,但计算量也要大得多。上面的代码中我用的是'logsig''logsig',鉴别率只有94%,但我换了'logsig''purelin'后发现鉴别率凑近100%。<3>学****率的选择学****率影响着网络收敛的速度,以及网络能否收敛。学****率设置偏小能够保证网络收敛,但是收敛较慢。相反,学****率设置偏大则有可能使网络训练不收敛,影响鉴别收效。ThetableshowsthedifferentresultCaseHiddenPermittedLearningEpochAccuracynodeserrorrate(100%)131241261147某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)15/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案391067431196535836311597343831**********(由于测试数据只有35组,因此正确率反响的情况不好,33/35即94%,34/35期97%)当学****率和赞同的误差太大的时候,训练情况是不收敛的。对于本例来说,而当Permittederror和Learningrate合适的时候正确率基本牢固在94%。四、总结解析由于对MATLAB的不熟悉,自己将BP神经网络实现出来还是有难度的,于是我学****使用了MATLAB自带的神经网络工具箱,进而认识怎么样使用BP神经网络来进行蝴蝶花的分类。思虑题:1)为什么要对数据进行通用标准化,即转为[-1,1]?答:输入数据的单位不一样样,有些数据的范围可能特别大,以致的结果是神经网络收敛慢、训练时间长。数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用即可能会偏小。由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据照射到激活函数的值域。比方神经网络的输出层若采用S形激活函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),因此训练数据的输出就要归一化到[0,1]区间。2)为什么要对训练数据的输入进行随机化办理?答:BP网络实质上是个支持向量机,对输入序次进行随机化办理是为了保证能够有督查学****同时使算法依照梯度下降法规进行学****若是训练数据是有序的,那么会以致训练结果很难收敛到偏置值。只有保证数据的随机性才能使得BP算法训练结果尽可能地收敛。3)为什么训练数据与测试数据要分开?答:用于测试的数据不能够参加训练,否则鉴别度必定是100%,我们的目的是经过某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)17/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)合用标准文案对训练数据的学****来展望未知的数据。4)BP网络设计中结点的个数如何确定?答:并没有正确的确定方法,只要合理即可。输入层和输出层的结点数量要足够表示,隐含层结点数量视情况而定。5)BP学****算法的基本思想?答:BP算法,误差反向流传(ErrorBackPropagation,BP)算法。BP算法的基本思想是,学****过程由信号的正向流传与误差的反向流传两个过程组成。由于多层前馈网络的训练经常采用误差反向流传算法,人们也常把将多层前馈网络直接称为BP网络。某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)19/11某实验报告资料BP神经网络(2150230509)优秀文档某实验报告资料BP神经网络(2150230509)某实验报告资料BP神经网络(2150230509)11/11某实验报告资料BP神经网络(2150230509)