63BP神经网络实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

深圳大学实验报告实验课程名称:人工神经网络技术实验项目名称:BP神经网络对蝴蝶花分类学院:专业:软件工程报告人:学号:班级:同组人:无指导教师:实验时间:实验报告提交时间:教务处制一、实验目的初步熟悉MATLAB工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。二、实验内容1、网络设计,包括输入层、隐含层、输出层节点个数的设计。2、算法步骤3、编程,注意原始数据的通用化,数据输入的随机性。4、网络训练,注意训练数据与验证数据分开。5、网络验证6、结果分析,修改隐含层节点个数,修改学习率,分别对结果的影响。三、实验步骤直接在Matlab软件中的Editor中运行以下代码:(完善的代码用红色字体表示)%li.m%ABPNNwithmomentumtosolveFisher'sIrisFlowerproblem%bylixiujuan,Nov13,2011%%theNNarchitecture%itisathreelayersneuralnetwork4-3-3.%%parameterdescription%h=4thenodenumerofinputlayer%i=3thenodenumerofhiddenlayer%j=3thenodenumerofoutputlayer%V[h,i]theweightsbetweeninputandhiddenlayers%W[i,j]theweightsbetweenhiddenandoutputlayers%Pi[i]thethresholdsofhiddenlayernodes%Tau[j]thethresholdsofoutputlayernodes%a[h]theinputvalues%b[i]thehiddenlayernodeactivations%c[j]theoutputlayernodeactivations%ck[j]thedesiredoutputofoutputlayernodes%d[j]theerorinoutputlayernodes%e[i]theerorinhiddenlayernodes%DeltaW[i,j]theamountofchangefortheweightsW[i,j]%DeltaV[h,i]theamountofchangefortheweightsV[h,i]%DeltaPi[i]theamountofchangeforthethresholdsPi[i]%DeltaTau[j]theamountofchangeforthethresholdsTau[j]%Alpha=0.1theleaningrate%Beta=0.1theleaningrate%Gamma=0.8theconstantdetermineseffectofpastweightchanges%Tor=0.001thetorrelancethatdetermineswhentostoptraining%Maxepoch=1000themaxiteratenumber%%otherparameters%Ntrain=115thenumberoftrainningsets%Ntest=35thenumberoftestsets%Otrain[115]theoutputoftrainingsets%Otest[35]theoutputoftestsets%Odesired[150]thedesiredoutputoftrainingandtestsets%%functiondescription%f(x)=logsig(x)%f(x)=1/(1+exp(-x))%%datafile%inputfile:data.dat%closeall;clc;clf;clearall;%parametersfortheNNstructureh=4;i=3;j=3;Alpha=0.1;Beta=0.1;Gamma=0.85;Tor=0.0005;Maxepoch=2000;Accuracy=0;Ntrain=115;Ntest=35;%assignrandomvaluesintherange[-1,+1]V=2*(rand(h,i)-0.5);W=2*(rand(i,j)-0.5);Pi=2*(rand(1,i)-0.5);Tau=2*(rand(1,j)-0.5);DeltaWOld(i,j)=0;%setthedelatofWijto0DeltaVOld(h,i)=0;%setthedelatofVijto0DeltaPiOld(i)=0;%setthedelatofPito0DeltaTauOld(j)=0;%setthedelatofTauto0%thelearningprocessEpoch=1;Error=10;%loadthetrainingsetdataandtestsetdataloaddata.datOdesired=data(:,2);%getthedesiredofoutputof150datasets%normalizetheinputdatatorang[-1+1]datanew=data(:,3:6);maxv=max(max(datanew));minv=min(min(datanew));datanorm=2*((datanew-minv)/(maxv-minv)-0.5);whileErrorTorErr(Epoch)=0;fork=1:Ntrain%k=theindexoftranningseta=datanorm(k,:);%gettheinput%setthedesiredoutputck[j]ifdata(k,2)==0ck=[100];elseifdata(k,2)==1ck=[010];elseck=[001];end;%calculatethehiddennodesactivationforki=1:ib(ki)=logsig(a*V(:,ki)+Pi(ki));end;%calculatetheoutputnodesactivationforkj=1:jc(kj)=logsig(b*W(:,kj)+Tau(kj));end;%calculateerrorinoutputLayerFCd=c.*(1-c).*(ck-c);%calculateerrorinhiddenlayerFBe=b.*(1-b).*(d*W');%adjustweightsWijbetweenFBandFCforki=1:iforkj=1:jDeltaW(ki,kj)=Alpha*b(ki)*d(kj)+Gamma*DeltaWOld(ki,kj);endend;W=W+DeltaW;DeltaWOld=DeltaW;%adjustweightsVijbetweenFAandFBforkh=1:hforki=1:iDeltaV(kh,ki)=Beta*a(kh)*e(ki);endend;V=V+DeltaV;DeltaVold=DeltaV;%adjustthresholdsPiandTauDeltaPi=Beta*e+Gamma*DeltaPiOld;Pi=Pi+DeltaPi;DeltaPiold=DeltaPi;DeltaTau=Alpha*d+Gamma*DeltaTauOld;Tau=Tau+DeltaTau;DeltaTauold=DeltaTau;%theerroristhemaxofd(1),d(2),d(3)Err(Epoch)=Err(Epoch)+0.5*(d(1)*d(1)+d(2)*d(2)+d(3)*d(3));end%fork=1:NtrainErr(Epoch)=Err(Epoch)/Ntrain;Error=Err(Epoch);%thetrainingstopswheniterateistoomuchifEpochMaxepochbreak;endEpoch=Epoch+1;%updatetheiteratenumberend%testdatafork=1:Ntest%k=theindexoftestseta=datanorm(Ntrain+k,:);%gettheinputoftestsets%calculatethehiddennodesactivationforki=1:ib(ki)=logsig(a*V(:,ki)+Pi(ki));end;%calculatetheoutputoftestsetsforkj=1:jc(kj)=logsig(b*W(:,kj)+Tau(kj));end;%transfertheoutputtoonefieldformatif(c(1)0.9)Otest(k)=0;elseif(c(2)0.9)Otest(k)=1;elseif(c(3)0.9)Otest(k)=2;elseOtest(k)=3;end;%calculatetheaccuracyoftestsetsifOtest(k)==Odesired(Ntrain+k)Accuracy=Accuracy+1;end;end;%k=1:Ntest%plottheerrorplot(Err);%plottheNNoutputanddesiredoutputduringtestN=1:Ntest;figure;plot(N,Otest,'b-',N,Odesired(116:150),'r-');%displaytheaccuracyAccuracy=100*Accuracy/Ntest;t=['TESTINGRESULT,theaccuracyoftestsetsis:'num2str(Accuracy)'%'];disp(t);当中间隐藏层结点数为i=3时,得出下图:当Alpha=0.08;Beta=0.08时;如下图:当Alpha=0.05;Beta=0.05时;如下图:当Alpha=0.2;Beta=0.2时;如下图:当Alpha=0.3;Beta=0.3时;如下图:当Alpha=0.2;Beta=0.3时;如下图:当Alpha=0.3;Beta=0.2时;如下图:当中间隐藏层结点数为i=4时,得出下图:当中间隐藏层结点数为i=2时,得出下图:当Alpha=0.05;Beta=0.05时;如下图:当中间隐藏层结点数为i=1时,得出下图:四、总结分析由于对MATLAB的不熟悉,一开始还是不知道怎么完成这个实验,但是在同学的帮助下,渐渐懂得怎么导入数据和代码实现,进而了解怎么样使用BP神经网络来进行蝴蝶花的分类。通过修改中间隐藏层的结点数,进行对比,发现i=3以及i=4的时候所得到的图是一样的,说明在i大于等于3的时候,实验结果误差较小以至于可以忽略不计,又进行了一次i=2的实验,结果发现结果也是几乎一样的,再进行进一步的实验,将i改为1,发现期望输出与实际输出存在明显区别,到后期才重合。所以,我觉得在这次的实验中,中间隐藏层结点数需要大于等于2比较合适。还有就是学习率的问题,刚开始实验,就只是改了隐藏节点,而忽略了学习率的问题。所以在原来的基础上,有改动了一下学习率,发现Figure1还是有很大地变动的,但是Figure2反而没什么不同。我觉得学习率的范围应该在0.1以内的。可是还是不知道学习率具体是起什么作用的。这次实验还是大概的完成了,但是对MATLAB还是有一些不懂的地方,仍需在接下来的实验中继续学习。指导教师批阅意见:成绩评定:指导教师签字:朱安民2011年10月日实验报告内容的确完整性(20分)实验步骤的清晰程度(20分)实验数据的准确性(20分)实验结果和分析的正确性(20分)实验态度(实验表现、格式排版、独立完成、按时提交)(20分)完整20较完整15不够完整10清晰20较清晰15不够清晰10准确20较准确15不够准确10正确20较正确15不够正确10规范20较规范15不够规范10说明:说明:说明:说

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功