BP神经网络MATLAB工具箱和MATLAB实现使用实例_第1页
BP神经网络MATLAB工具箱和MATLAB实现使用实例_第2页
BP神经网络MATLAB工具箱和MATLAB实现使用实例_第3页
BP神经网络MATLAB工具箱和MATLAB实现使用实例_第4页
BP神经网络MATLAB工具箱和MATLAB实现使用实例_第5页
全文预览已结束

下载本文档

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

文档简介

1、BP神经网络matlab工具箱和matlab实现使用实例经过最近一段时间的神经网络学习,终于能初步使用matlab实现BP网络仿真试验。这里特别感谢研友sistor2004的帖子自己编的 BP算法(工具:matlab )和研友 wangleisxcc的帖子用 C+ , Matlab ,Fortran实现的BP算法前者帮助我对BP算法有了更明确的认识,后者让我对 matlab 下BP函数的使用有了初步了解。因为他们发的帖子都没有加注释,对我等新手阅读时有一定困难, 所以我把sistor2004发的程序稍加修改后加注了详细解释,方便新手阅读。%严格按照BP网络计算公式来设计的一个matlab程序,

2、对BP网络进行了优化设计%yyy,即在o(k)计算公式时,当网络进入平坦区时(<0.0001)学习率加大,岀来后学习率又还原%v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);动量项clear allclcinputNums=3; %输入层节点 outputNums=3; %输岀层节点 hideNums=10; %隐层节点数 maxcou nt=20000; %最大迭代次数 samplenum=3; %一个计数器,无意义 precision=0.001; %预设精度yyy=1.3; %yyy是帮助网络加速走岀平坦区alpha=0.01; %学习率设定值a=0.5; %

3、BP优化算法的一个设定值,对上组训练的调整值按比例修改字串9error=zeros(1,maxcount+1); %error数组初始化;目的是预分配内存空间 errorp=zeros(1,sample num);% 同上v=rand(inputNums,hideNums);%3*10;v初始化为一个3*10的随机归一矩阵;v表输入层到隐层的值deltv=zeros(inputNums,hideNums); %3*10;内存空间预分配dv=zeros( in putNums,hideNums);%3*10;w=rand(hideNums,outputNums); %10*3;同 V deltw

4、=zeros(hideNums,outputNums);%10*3 dw=zeros(hideNums,outputNums); %10*3samplelist=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个向量),有导师的监督学习cou nt=1;while (count<=maxcount) %

5、结束条件 1 迭代 20000 次c=1;while (c<=samplenum)for k=1:outputNumsd(k)=expectlist(c,k); %获得期望输岀的向量,d(1:3)表示一个期望向量内的值endfor i=1:inputNumsx(i)=samplelist(c,i); %获得输入的向量(数据),x(1:3)表一个训练向量字串 4end%Forward();for j=1:hideNumsnet=0.0;for i=1:inputNumsnet=net+x(i)*v(i,j);%输入层到隐层的加权和E X(i)V(i)endy(j)=1/(1+exp(-ne

6、t); %输岀层处理 f(x)=1/(1+exp(-x)单极性 sigmiod 函数 endfor k=1:outputNumsnet=0.0;for j=1:hideNumsnet=n et+y(j)*w(j,k);endif cou nt>=2&&error(cou nt)-error(cou nt+1)<=0.0001o(k)=1/(1+exp(-net)/yyy); % 平坦区加大学习率else o(k)=1/(1+exp(-net); % 同上endend%BpError(c)反馈/修改;errortmp=0.0;for k=1:outputNumserr

7、ortmp=errortmp+(d(k)-o(k)A2;% 第一组训练后的误差计算enderrorp(c)=0.5*errortmp; % 误差 E=E (d(k)-o(k)A2 * 1/2%e nd%Backward();for k=1:outputNumsyitao(k)=(d(k)-o(k)*o(k)*(1-o(k);%输入层误差偏导字串 5endfor j=1:hideNumstem=0.0;for k=1:outputNumstem=tem+yitao(k)*w(j,k);%为了求隐层偏导,而计算的Eendyitaya)=tem*y(j)*(1-y(j); %隐层偏导end%调整各层

8、权值for j=1:hideNumsfor k=1:outputNumsdeltw(j,k)=alpha*yitao(k)*y(j); %权值 w 的调整量 deltw(已乘学习率) w(j,k)=w(j,k)+deltwa,k)+a*dw(j,k);%权值调整,这里的 dw=dletw(t-1),实际是对 BP 算法的一个dw(j,k)=deltw(j,k); %改进措施-增加动量项目的是提高训练速度endendfor i=1:inputNumsfor j=1:hideNumsdeltv(i,j)=alpha*yitay(j)*x(i); % 同上 deltwv(i,j)=v(i,j)+de

9、ltv(i,j)+a*dv(i,j);dv(i,j)=deltv(i,j);endendc=c+1;end%第二个while结束;表示一次 BP训练结束double tmp;tmp=0.0;字串 8for i=1:samplenumtmp=tmp+errorp(i)*errorp(i); %误差求和endtmp=tmp/c;error(count)=sqrt(tmp);%误差求均方根,即精度if (error(cou nt)vprecisi on)% 另一个结束条件break;endcount=count+1;% 训练次数加 1end%第一个while结束error(maxcou nt+1)=

10、error(maxcou nt);p=1:cou nt;pp=p/50;plot(pp,error(p),"-"); %显示误差然后下面是研友wangleisxcc的程序基础上,我把初始化网络,训练网络,和网络使用三个稍微集成 后的一个新函数bp net%简单的BP神经网络集成,使用时直接调用bp net就行%输入的是p-作为训练值的输入% t-也是网络的期望输岀结果% ynum-设定隐层点数 一般取320;% max num-如果训练一直达不到期望误差之内,那么BP迭代的次数 一般设为5000% ex-期望误差,也就是训练一小于这个误差后结束迭代一般设为0.01% lr-

11、学习率一般设为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,"+"

12、);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

13、1.04; %trainbpx w1,b1,w2,b2,ep,tr=tra in bpx(w1,b1,"ta nsig",w2,b2,"pureli n",p,t,tp);ww=simuff(pp,w1,b1,"tansig",w2,b2,"purelin"); %ww 就是调用结果下面是bpnet使用简例:%bpnet举例,因为BP网络的权值初始化都是随即生成,所以每次运行的状态可能不一样。 %如果初始化的权值有利于训练,那么可能很快能结束训练,反之则反之字串6clear allclcfigurerandn ("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

温馨提示

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

评论

0/150

提交评论