当前位置:首页 >> IT/计算机 >>

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

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 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); 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) test


相关文章:
BP神经网络MATLAB工具箱和MATLAB实现使用实例.pdf
BP神经网络MATLAB工具箱和MATLAB实现使用实例_电子/电路_工程科技_专业资料。BP 神经网络 matlab 工具箱和 matlab 实现使用实例经过最近一段时间的神经网络学习,终于...
BP神经网络matlab实现和matlab工具箱使用实例.txt
spss=spssyce'; sts=std(real-spss) 【共享】BP神经网络matlab实现和matlab工具箱使用实例经过最近一段时间的神经网络学习,终于能初步使用matlab实现BP网络仿真试验。...
BP神经网络matlab工具箱和matlab实现使用实例.doc
BP神经网络matlab工具箱和matlab实现使用实例_计算机软件及应用_IT/计算机_专业资料。BP 神经网络 matlab 工具箱和 matlab 实现使用实例经过最近一段时间的神经网络...
...BP神经网络matlab实现和matlab工具箱使用实例_图文.pdf
数学建模必备 BP神经网络matlab实现和matlab工具箱使用实例_高等教育
Matlab BP神经网络工具箱实例.txt
Matlab BP神经网络工具箱实例_计算机软件及应用_IT/计算机_专业资料。MATLAB 利用自带的BP神经网络工具箱函数,对数据进行模拟预报的实例. ...
matlab神经网络工具箱简介和函数及示例_图文.ppt
matlab神经网络工具箱简介和函数及示例_计算机软件及应用_IT/计算机_专业资料。第...(error); end 代码运行结果: 网络训练误差结论:隐含层节点设为8 BP网络训练...
BP神经网络Matlab实例.pdf
采用Matlab 工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考 Matlab 帮助文档。 实例一 % 例 1 采用动量梯度下降算法训练 BP 网络。 % ...
用遗传算法优化BP神经网络的Matlab编程实例.doc
用遗传算法优化 BP 神经网络Matlab 编程实例由于 BP 网络的权值优化是一个无约束优化问题,而 且权值要采用实数编码,所以直接利用 Matlab 遗传算法 工具箱。以下...
matlab神经网络工具箱简介和函数及示例-PPT课件_图文.ppt
matlab神经网络工具箱简介和函数及示例-PPT课件_数学_自然科学_专业资料。matlab ...(error); end 代码运行结果: 网络训练误差 结论:隐含层节点设为8 BP网络训练...
基于MATLAB神经网络工具箱的BP网络实现.pdf
本文将以 MATLAB6. 1 为 开发 环境, 介绍 神经 网络 工具 箱及其相关函数, 论述利 用其 神经 网络工 具箱 开发 BP 网络 的方法及设计步骤, 给出应用实例...
BP神经网络在MATLAB上的实现与应用_图文.pdf
BP神经网络在非线性建模,函数逼近和模式识别中有广泛地应用,该文介绍了BP神 经网络的基本原理,利用MATLAB神经网络工具箱可以很方便地进行BP神经网络的建立、训练和 ...
基于MATLAB神经网络工具箱的BP网络实现 (1).pdf
基于MATLAB神经网络工具箱BP网络实现 (1)_互联网_IT/计算机_专业资料。 第 ...用其 神经 网络工 具箱 开发 BP 网络 的方法及设计步骤 , 给出应用实例 。...
基于MATLAB神经网络工具箱的BP网络实现_图文.pdf
(2004)05010903 真2004年5月 基于MATLAB神经网络工具箱BP网络实现罗成汉(集美大学信息工程学院,福建厦门361021) 摘要:墒要介绍BP}申经网络结构和算法以及...
BP神经网络在MATLAB上的实现与应用.pdf
神 经网络的基本原理, 利用 MATLAB 神经网络工具箱可以很方 便地进行 BP 神经网 络的建 立、 练和 训 仿真, 给出了 建立 BP 神经网络的注意事项和例子. ...
Matlab训练好的BP神经网络如何保存和读取方法(附实例说明).doc
Matlab训练好的BP神经网络如何保存和读取方法(附实例说明)_计算机软件及应用_IT/...BP神经网络matlab工具箱... 5页 免费 BP神经网络matlab实现和... 5页 ...
BP神经网络用于函数拟合与模式识别的Matlab示例程序.doc
% % % % % % BP 神经网络用于模式分类 使用平台 - Matlab6.5 作者:陆振波,海军工程大学 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页 电子...
基于MATLAB神经网络工具箱的BP网络实现.pdf
并详细论述利用MATLAB神经网络r:具箱设计BP网络的方法及步骤,给出具体应用实例,...4 BP神经网络MATLAB实现在进行BP神经网络设计时,需要考虑以下问题:网络 可得到...
BP神经网络在MATLAB上的实现与应用.pdf
BP神经网络MATLAB上的实现与应用 - BP神经网络在非线性建模,函数逼近和模式识别中有广泛地应用,该文介绍了BP神经网络的基本原理,利用MATLAB神经网络工具箱可以很...
用matlab编BP神经网络预测程序.doc
BP 神经网络 Matlab 实例(1) 分类:Matlab 实例 采用 Matlab 工具箱函数建立...但是该方法不能和 MATLAB 其他程序动态链接,网络仿真 结果只能以数据文件的形式...
MATLAB神经网络工具箱_图文.ppt
这种算法采用非 线性规划的最速下降方法,按误差函数的负梯度方向修改 权系数。 BP网络的快速学习算法与选择 MATLAB神经网络工具箱对常规BP算法进行改进,提供 了一...