资源描述:
《BP神经网络matlab实现和matlab工具箱使用实例.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、BP神经网络matlab实现和matlab工具箱使用实例求助:BP训练老是达不到精度要求!我用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
2、.1919,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(ne
3、t,P,T); PP=[0.6667,1.0000;-0.8701,-1.0000]; %用来预测的样本TT=[0.8423,1.0000]; A=sim(net,PP); %预测结果 disp
4、(A);B=sim(net,P); %训练样本的训练输出结果,参考Tdisp(B); %求高手帮我训练下!!!经过最近一段时间的神经网络学习,终于能初步使用matlab实现BP网络仿真试验。这里特别感谢研友sistor2004的帖子《自己编的BP算法(工具:matlab)》和研友wangleisxcc的帖子《用C++,Matlab,Fortran实现的BP算法》前者帮助我对BP算法有了更明确的认识,后者让我对matlab下BP函数的使用有了初步了解。因为他们发的帖子都没有加注释,
5、对我等新手阅读时有一定困难,所以我把sistor2004发的程序稍加修改后加注了详细解释,方便新手阅读。%严格按照BP网络计算公式来设计的一个matlab程序,对BP网络进行了优化设计%yyy,即在o(k)计算公式时,当网络进入平坦区时(<0.0001)学习率加大,出来后学习率又还原%v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);动量项clearallclcinputNums=3;%输入层节点outputNums=3;%输出层节点hideNums=10;%隐层节点数maxcount=20000;%最
6、大迭代次数samplenum=3;%一个计数器,无意义precision=0.001;%预设精度yyy=1.3;%yyy是帮助网络加速走出平坦区alpha=0.01;%学习率设定值a=0.5;%BP优化算法的一个设定值,对上组训练的调整值按比例修改字串9error=zeros(1,maxcount+1);%error数组初始化;目的是预分配内存空间errorp=zeros(1,samplenum);%同上v=rand(inputNums,hideNums);%3*10;v初始化为一个3*10的随机归一矩阵;v表输入层到隐层
7、的权值deltv=zeros(inputNums,hideNums);%3*10;内存空间预分配dv=zeros(inputNums,hideNums);%3*10;w=rand(hideNums,outputNums);%10*3;同Vdeltw=zeros(hideNums,outputNums);%10*3dw=zeros(hideNums,outputNums);%10*3samplelist=[0.1323,0.323,-0.132;0.321,0.2434,0.456;-0.6546,-0.3242,0.325
8、5];%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<=maxcoun