数学建模必备 BP神经网络matlab实现和matlab工具箱使用实例
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-1-
new 2
星星星 2010 07 15 22:24
y(j)=1/(1+exp(-net)); %输也设输输f(x)=1/(1+exp(-x))简单单sigmiod稍稍 end for k=1:outputNums net=0.0; for j=1:hideNums net=net+y(j)*w(j,k); end if count>=2&&error(count)-error(count+1)<=0.0001 o(k)=1/(1+exp(-net)/yyy); %用用用平也学学学 else o(k)=1/(1+exp(-net)); %同的 end end %BpError(c)反反/修修; errortmp=0.0; for k=1:outputNums errortmp=errortmp+(d(k)-o(k))^2; %第稍也训训然的显显网网 end errorp(c)=0.5*errortmp; %显显E=∑(d(k)-o(k))^2 * 1/2 %end %Backward(); for k=1:outputNums yitao(k)=(d(k)-o(k))*o(k)*(1-o(k)); %输输设显显输输 字字5 end for j=1:hideNums tem=0.0; for k=1:outputNums tem=tem+yitao(k)*w(j,k); %作为为设设输输,而网网的∑ end yitay(j)=tem*y(j)*(1-y(j)); %设设输输 end %使调调设网作 for j=1:hideNums for k=1:outputNums deltw(j,k)=alpha*yitao(k)*y(j); %网作w的使调网deltw(已已学学学) w(j,k)=w(j,k)+deltw(j,k)+a*dw(j,k);%网作使调,也这的dw=dletw(t-1),实实然实BP网 法的稍和 dw(j,k)=deltw(j,k); %修也改改--增平动网动增的然增增训训增梯 end end for i=1:inputNums for j=1:hideNums deltv(i,j)=alpha*yitay(j)*x(i); %同的deltw v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j); dv(i,j)=deltv(i,j); end end c=c+1; end%第也和while也也;表显稍迭BP训训也也 double tmp; tmp=0.0; 字字8 for i=1:samplenum tmp=tmp+errorp(i)*errorp(i);%显显为和 end tmp=tmp/c; error(count)=sqrt(tmp);%显显为均误误,网即梯 if (error(count)<precision)%另稍和也也另另 break; end count=count+1;%训训迭稍平1 end%第稍和while也也 error(maxcount+1)=error(maxcount);
-2-
new 2
星星星 2010 07 15 22:24
p=1:count; pp=p/50; plot(pp,error(p),"-"); %显显显显 然然然然然然然wangleisxcc的的的的的的,我我我我我我我,训训我我,和我我和和和和 稍稍稍稍然的稍和稍稍稍bpnet %简简的BP神神我我稍稍,和和使使使使和bpnet就就 %输输的然 p-作作训训作的输输 % t-也然我我的星也输也也也 % ynum-设设设设设稍 稍一一3~20; % maxnum-如也训训稍使如如如星也显显如如,那那BP迭迭的迭稍 稍一设作5000 % ex-星也显显,也就然训训稍也也也和显显然也也迭迭 稍一设作0.01 % lr-学学学 稍一设作0.01 % pp-和和p-t虚虚虚虚的BP我我网网网网网的网网,也就然也输也作也也的也也也稍也就训训 然然然如也作的然 % ww-输也也也 % 注注:ynum,maxnum,ex,lr均然稍和作;而p,t,pp,ww均均均作网网 字字1 % 比如p然m*n的n维就网网,t那那作m*k的k维就网网,pp作o*i的i维就网网,ww作o* k的k维就网网 %p,t作作我我训训输输,pp作作训训虚的我我输输网网,最然的ww作作pp神经训训虚的BP训 训然的输也 function ww=bpnet(p,t,ynum,maxnum,ex,lr,pp) plot(p,t,"+"); title("训训网网"); xlabel("P"); ylabel("t"); [w1,b1,w2,b2]=initff(p,ynum,"tansig",t,"purelin"); %我我我初稍和设设的BP我我 zhen=25; %每迭迭每每迭每稍显显 biglr=1.1; %学学学使学学学(和也用也用用用) litlr=0.7; %学学学使学学学(梯梯然梯经学使) a=0.7 %动网动a也也(△W(t)=lr*X*ん+a*△W(t-1)) tp=[zhen maxnum ex lr biglr litlr a 1.04]; %trainbpx [w1,b1,w2,b2,ep,tr]=trainbpx(w1,b1,"tansig",w2,b2,"purelin",p,t,tp); ww=simuff(pp,w1,b1,"tansig",w2,b2,"purelin"); %ww就然使和也也 然然然bpnet和和简使: %bpnet举使,因作BP我我的网作我我我网然网网网稍,所均每迭所就的所所均所如稍所。 %如也我我我的网作如如也训训,那那均所那学所也也训训,反如反反如 字字6 clear all clc figure randn("state",sum(100*clock)) num1=5; %设隐设稍 num2=10000; %最也迭迭迭稍 a1=0.02; %星也显显 a2=0.05; %学学学 test=randn(1,5)*0.5; %网网网稍5和个个作 in=-1:.1:1; %训训作 expout=[-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 .1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 .3072 .3960 .3449 .1816 -.0312 -.2189 -.3201]; %的然然上设星也输也 %expout=0.3*randn(1,21); %网随随网稍也星也输也作,如经不也如虚 plot(in,expout,"+"); title("训训网网"); xlabel("in"); ylabel("expout"); output=bpnet(in,expout,num1,num2,a1,a2,test)
-3-
new 2
星星星 2010 07 15 22:24
ቤተ መጻሕፍቲ ባይዱ
test
-4-
new 2
星星星 2010 07 15 22:24
BP神神我我matlab实实和matlab工工工和和实使 神经最经稍经使经的神神我我学学,终也所我终和和matlab实实BP我我网网个网。也这这这 感感然然sistor2004的的的《自自自的BP网法(工工:matlab))和然然wangleisxcc的的 的《和C++,Matlab,Fortran实实的BP网法 )前前前前我实BP网法如为每注算的算算,然前后我实matlab然BP稍稍的和和如为我终为函 。因作因因因的的的网因如平注因,实我对稍对对对使如稍设对对,所均我我sistor2004因 的的的稍平修修然平注为的的函因,误方稍对对对。 %严严严严BP我我网网网网网设网的稍和matlab的的,实BP我我也就为网我设网 %yyy,网即o(k)网网网网使,当我我也输用用用使(<0.0001)学学学平也, 也网然学学学出出出 %v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j); 动网动 clear all clc inputNums=3; %输输设隐设 outputNums=3; %输也设隐设 hideNums=10; %设设隐设稍 maxcount=20000; %最也迭迭迭稍 samplenum=3; %稍和网稍一,无无无 precision=0.001; %预设即梯 yyy=1.3; %yyy然前前我我平增是也用用用 alpha=0.01; %学学学设设作 a=0.5; %BP网我网法的稍和设设作,实的也训训的使调作严比使修修 字字9 error=zeros(1,maxcount+1); %error稍也我我我;增的然预网目如目目经 errorp=zeros(1,samplenum); %同的 v=rand(inputNums,hideNums); %3*10;v我我我作稍和3*10的网随的稍的的; v表输输设如设设的网作 deltv=zeros(inputNums,hideNums); %3*10;如目目经预网目 dv=zeros(inputNums,hideNums); %3*10; w=rand(hideNums,outputNums); %10*3;同V deltw=zeros(hideNums,outputNums);%10*3 dw=zeros(hideNums,outputNums); %10*3 samplelist=[0.1323,0.323,-0.132;0.321,0.2434,0.456;-0.6546,-0.3242,0.3255]; %3*3;上设输输作3*3(实作3和网网) expectlist=[0.5435,0.422,-0.642;0.1,0.562,0.5675;-0.6464,-0.756,0.11]; %3*3;星也输也作3*3(实作3和网网),如输有的有有学 学 count=1; while (count<=maxcount) %也也另另1迭迭20000迭 c=1; while (c<=samplenum) for k=1:outputNums d(k)=expectlist(c,k); %获然星也输也的网网,d(1:3)表显稍和星也网网如 的作 end for i=1:inputNums x(i)=samplelist(c,i); %获然输输的网网(稍数),x(1:3)表稍和训训网网 字字4 end %Forward(); for j=1:hideNums net=0.0; for i=1:inputNums net=net+x(i)*v(i,j);%输输设如设设的平网和∑X(i)V(i) end
new 2
星星星 2010 07 15 22:24
y(j)=1/(1+exp(-net)); %输也设输输f(x)=1/(1+exp(-x))简单单sigmiod稍稍 end for k=1:outputNums net=0.0; for j=1:hideNums net=net+y(j)*w(j,k); end if count>=2&&error(count)-error(count+1)<=0.0001 o(k)=1/(1+exp(-net)/yyy); %用用用平也学学学 else o(k)=1/(1+exp(-net)); %同的 end end %BpError(c)反反/修修; errortmp=0.0; for k=1:outputNums errortmp=errortmp+(d(k)-o(k))^2; %第稍也训训然的显显网网 end errorp(c)=0.5*errortmp; %显显E=∑(d(k)-o(k))^2 * 1/2 %end %Backward(); for k=1:outputNums yitao(k)=(d(k)-o(k))*o(k)*(1-o(k)); %输输设显显输输 字字5 end for j=1:hideNums tem=0.0; for k=1:outputNums tem=tem+yitao(k)*w(j,k); %作为为设设输输,而网网的∑ end yitay(j)=tem*y(j)*(1-y(j)); %设设输输 end %使调调设网作 for j=1:hideNums for k=1:outputNums deltw(j,k)=alpha*yitao(k)*y(j); %网作w的使调网deltw(已已学学学) w(j,k)=w(j,k)+deltw(j,k)+a*dw(j,k);%网作使调,也这的dw=dletw(t-1),实实然实BP网 法的稍和 dw(j,k)=deltw(j,k); %修也改改--增平动网动增的然增增训训增梯 end end for i=1:inputNums for j=1:hideNums deltv(i,j)=alpha*yitay(j)*x(i); %同的deltw v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j); dv(i,j)=deltv(i,j); end end c=c+1; end%第也和while也也;表显稍迭BP训训也也 double tmp; tmp=0.0; 字字8 for i=1:samplenum tmp=tmp+errorp(i)*errorp(i);%显显为和 end tmp=tmp/c; error(count)=sqrt(tmp);%显显为均误误,网即梯 if (error(count)<precision)%另稍和也也另另 break; end count=count+1;%训训迭稍平1 end%第稍和while也也 error(maxcount+1)=error(maxcount);
-2-
new 2
星星星 2010 07 15 22:24
p=1:count; pp=p/50; plot(pp,error(p),"-"); %显显显显 然然然然然然然wangleisxcc的的的的的的,我我我我我我我,训训我我,和我我和和和和 稍稍稍稍然的稍和稍稍稍bpnet %简简的BP神神我我稍稍,和和使使使使和bpnet就就 %输输的然 p-作作训训作的输输 % t-也然我我的星也输也也也 % ynum-设设设设设稍 稍一一3~20; % maxnum-如也训训稍使如如如星也显显如如,那那BP迭迭的迭稍 稍一设作5000 % ex-星也显显,也就然训训稍也也也和显显然也也迭迭 稍一设作0.01 % lr-学学学 稍一设作0.01 % pp-和和p-t虚虚虚虚的BP我我网网网网网的网网,也就然也输也作也也的也也也稍也就训训 然然然如也作的然 % ww-输也也也 % 注注:ynum,maxnum,ex,lr均然稍和作;而p,t,pp,ww均均均作网网 字字1 % 比如p然m*n的n维就网网,t那那作m*k的k维就网网,pp作o*i的i维就网网,ww作o* k的k维就网网 %p,t作作我我训训输输,pp作作训训虚的我我输输网网,最然的ww作作pp神经训训虚的BP训 训然的输也 function ww=bpnet(p,t,ynum,maxnum,ex,lr,pp) plot(p,t,"+"); title("训训网网"); xlabel("P"); ylabel("t"); [w1,b1,w2,b2]=initff(p,ynum,"tansig",t,"purelin"); %我我我初稍和设设的BP我我 zhen=25; %每迭迭每每迭每稍显显 biglr=1.1; %学学学使学学学(和也用也用用用) litlr=0.7; %学学学使学学学(梯梯然梯经学使) a=0.7 %动网动a也也(△W(t)=lr*X*ん+a*△W(t-1)) tp=[zhen maxnum ex lr biglr litlr a 1.04]; %trainbpx [w1,b1,w2,b2,ep,tr]=trainbpx(w1,b1,"tansig",w2,b2,"purelin",p,t,tp); ww=simuff(pp,w1,b1,"tansig",w2,b2,"purelin"); %ww就然使和也也 然然然bpnet和和简使: %bpnet举使,因作BP我我的网作我我我网然网网网稍,所均每迭所就的所所均所如稍所。 %如也我我我的网作如如也训训,那那均所那学所也也训训,反如反反如 字字6 clear all clc figure randn("state",sum(100*clock)) num1=5; %设隐设稍 num2=10000; %最也迭迭迭稍 a1=0.02; %星也显显 a2=0.05; %学学学 test=randn(1,5)*0.5; %网网网稍5和个个作 in=-1:.1:1; %训训作 expout=[-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 .1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 .3072 .3960 .3449 .1816 -.0312 -.2189 -.3201]; %的然然上设星也输也 %expout=0.3*randn(1,21); %网随随网稍也星也输也作,如经不也如虚 plot(in,expout,"+"); title("训训网网"); xlabel("in"); ylabel("expout"); output=bpnet(in,expout,num1,num2,a1,a2,test)
-3-
new 2
星星星 2010 07 15 22:24
ቤተ መጻሕፍቲ ባይዱ
test
-4-
new 2
星星星 2010 07 15 22:24
BP神神我我matlab实实和matlab工工工和和实使 神经最经稍经使经的神神我我学学,终也所我终和和matlab实实BP我我网网个网。也这这这 感感然然sistor2004的的的《自自自的BP网法(工工:matlab))和然然wangleisxcc的的 的《和C++,Matlab,Fortran实实的BP网法 )前前前前我实BP网法如为每注算的算算,然前后我实matlab然BP稍稍的和和如为我终为函 。因作因因因的的的网因如平注因,实我对稍对对对使如稍设对对,所均我我sistor2004因 的的的稍平修修然平注为的的函因,误方稍对对对。 %严严严严BP我我网网网网网设网的稍和matlab的的,实BP我我也就为网我设网 %yyy,网即o(k)网网网网使,当我我也输用用用使(<0.0001)学学学平也, 也网然学学学出出出 %v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j); 动网动 clear all clc inputNums=3; %输输设隐设 outputNums=3; %输也设隐设 hideNums=10; %设设隐设稍 maxcount=20000; %最也迭迭迭稍 samplenum=3; %稍和网稍一,无无无 precision=0.001; %预设即梯 yyy=1.3; %yyy然前前我我平增是也用用用 alpha=0.01; %学学学设设作 a=0.5; %BP网我网法的稍和设设作,实的也训训的使调作严比使修修 字字9 error=zeros(1,maxcount+1); %error稍也我我我;增的然预网目如目目经 errorp=zeros(1,samplenum); %同的 v=rand(inputNums,hideNums); %3*10;v我我我作稍和3*10的网随的稍的的; v表输输设如设设的网作 deltv=zeros(inputNums,hideNums); %3*10;如目目经预网目 dv=zeros(inputNums,hideNums); %3*10; w=rand(hideNums,outputNums); %10*3;同V deltw=zeros(hideNums,outputNums);%10*3 dw=zeros(hideNums,outputNums); %10*3 samplelist=[0.1323,0.323,-0.132;0.321,0.2434,0.456;-0.6546,-0.3242,0.3255]; %3*3;上设输输作3*3(实作3和网网) expectlist=[0.5435,0.422,-0.642;0.1,0.562,0.5675;-0.6464,-0.756,0.11]; %3*3;星也输也作3*3(实作3和网网),如输有的有有学 学 count=1; while (count<=maxcount) %也也另另1迭迭20000迭 c=1; while (c<=samplenum) for k=1:outputNums d(k)=expectlist(c,k); %获然星也输也的网网,d(1:3)表显稍和星也网网如 的作 end for i=1:inputNums x(i)=samplelist(c,i); %获然输输的网网(稍数),x(1:3)表稍和训训网网 字字4 end %Forward(); for j=1:hideNums net=0.0; for i=1:inputNums net=net+x(i)*v(i,j);%输输设如设设的平网和∑X(i)V(i) end