BP神经网络matlab实现和matlab工具箱使用实例

上传人:飞*** 文档编号:39936234 上传时间:2018-05-21 格式:DOC 页数:6 大小:33.50KB
返回 下载 相关 举报
BP神经网络matlab实现和matlab工具箱使用实例_第1页
第1页 / 共6页
BP神经网络matlab实现和matlab工具箱使用实例_第2页
第2页 / 共6页
BP神经网络matlab实现和matlab工具箱使用实例_第3页
第3页 / 共6页
BP神经网络matlab实现和matlab工具箱使用实例_第4页
第4页 / 共6页
BP神经网络matlab实现和matlab工具箱使用实例_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《BP神经网络matlab实现和matlab工具箱使用实例》由会员分享,可在线阅读,更多相关《BP神经网络matlab实现和matlab工具箱使用实例(6页珍藏版)》请在金锄头文库上搜索。

1、BP 神经网络神经网络 matlab 实现和实现和 matlab 工具箱使用实例工具箱使用实例求助:求助:BPBP 训练老是达不到精度要求!训练老是达不到精度要求!我用 MATLAB2010b 训练下面的网络,无论怎么训练,结果都很不理想,预测结 果精度达到了则训练样本的输出结果精度达不到,反之,训练的输出精度达到 了则预测结果精度达不到,相差很远,求高手帮我训练下!P=-1.0000,-0.6667,- 0.3333,0.0000,0.3333;1.0000,1.0000,0.8701,0.8701,-0.2987; % 训练样本 T=-1.0000,-0.6513,-0.3569,-0.1

2、919,0.6844; %训练样本的输出 结果 net = newff(P,T,2); %建立一个 BP 神经网络 net.trainparam.lr=0.1; %设置学习系数 net.trainparam.epochs=1000; %设置步长(最大迭代次数) net.trainparam.goal=0.00001; %设置性能目标值 net.trainparam.show=50; %训练误差的显示频率 net=train(net,P,T); PP=0.6667,1.0000;-0.8701,-1.0000; %用来预测的 样本 TT=0.8423,1.0000; A = sim(net,PP

3、); %预测结果 disp(A); B=sim(net,P); %训练样本的训练输出结果,参考 T disp(B); %求高手帮我训练下!经过最近一段时间的神经网络学习,终于能初步使用 matlab 实现 BP 网络仿真试验。这里特别感谢研友 sistor2004 的帖子自己编的 BP 算法(工具:matlab)和研友 wangleisxcc 的帖子用C+,Matlab,Fortran 实现的 BP 算法 前者帮助我对 BP 算法有了更明确的认识,后者让我对matlab 下 BP 函数的使用有了初步了解。因为他们发的帖子都没有加注释,对我等新手阅读时有一定困难,所以我把 sistor2004

4、发的程序稍加修改后加注了详细解释,方便新手阅读。%严格按照 BP 网络计算公式来设计的一个 matlab 程序,对 BP 网络进行了优化设计%yyy,即在 o(k)计算公式时,当网络进入平坦区时(=2 %平坦区加大学习率else o(k)=1/(1+exp(-net); %同上endend%BpError(c)反馈/修改;errortmp=0.0;for k=1:outputNumserrortmp=errortmp+(d(k)-o(k)2; %第一组训练后的误差计算enderrorp(c)=0.5*errortmp; %误差 E=(d(k)-o(k)2 * 1/2 %end%Backward

5、();for k=1:outputNumsyitao(k)=(d(k)-o(k)*o(k)*(1-o(k); %输入层误差偏导 字串 5 endfor j=1:hideNumstem=0.0;for k=1:outputNumstem=tem+yitao(k)*w(j,k); %为了求隐层偏导,而计算的endyitay(j)=tem*y(j)*(1-y(j); %隐层偏导 end%调整各层权值for j=1:hideNumsfor k=1:outputNumsdeltw(j,k)=alpha*yitao(k)*y(j); %权值 w 的调整量 deltw(已乘学习率)w(j,k)=w(j,k)

6、+deltw(j,k)+a*dw(j,k);%权值调整,这里的 dw=dletw(t-1),实际是对 BP 算法的一个dw(j,k)=deltw(j,k); %改进措施-增加动量项目的是提高训练速度 end endfor i=1:inputNumsfor j=1:hideNumsdeltv(i,j)=alpha*yitay(j)*x(i); %同上 deltwv(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j); dv(i,j)=deltv(i,j);endendc=c+1;end%第二个 while 结束;表示一次 BP 训练结束double tmp;tmp=0.0; 字串

7、8 for i=1:samplenumtmp=tmp+errorp(i)*errorp(i);%误差求和endtmp=tmp/c;error(count)=sqrt(tmp);%误差求均方根,即精度if (error(count)precision)%另一个结束条件break;endcount=count+1;%训练次数加 1end%第一个 while 结束error(maxcount+1)=error(maxcount);p=1:count;pp=p/50;plot(pp,error(p),“-“); %显示误差 然后下面是研友 wangleisxcc 的程序基础上,我把初始化网络,训练网络

8、,和网络使用三个稍微集成后的一个新函数 bpnet%简单的 BP 神经网络集成,使用时直接调用 bpnet 就行%输入的是 p-作为训练值的输入% t-也是网络的期望输出结果% ynum-设定隐层点数 一般取 320; % maxnum-如果训练一直达不到期望误差之内,那么 BP 迭代的次数 一般设为 5000% ex-期望误差,也就是训练一小于这个误差后结束迭代 一般设为 0.01% lr-学习率 一般设为 0.01% pp-使用 p-t 虚拟蓝好的 BP 网络来分类计算的向量,也就是嵌入二值水印的大组系数进行训练然后得到二值序列% ww-输出结果% 注明:ynum,maxnum,ex,lr

9、 均是一个值;而 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,“p

10、urelin“); %初始化含一个隐层的 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; %trainbpxw1,b1,w2,b2,ep,tr=trainbpx(w1,b1,“tansig“,w2,b2,“purelin“,p,t,tp);ww=simuff(pp,w1,b1,“tansig“,w2,b2,“purelin“); %

11、ww 就是调用结果下面是 bpnet 使用简例:%bpnet 举例,因为 BP 网络的权值初始化都是随即生成,所以每次运行的状态可能不一样。%如果初始化的权值有利于训练,那么可能很快能结束训练,反之则反之 字串 6 clear 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 -.3201;%上面是指定期望输出%expout=0.3*randn(1,21); %随机产生一组期望输出值,不过效果不好plot(in,expout,“+“);title(“训练向量“);xlabel(“in“);ylabel(“expout“);output=bpnet(in,expout,num1,num2,a1,a2,test)test

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号