当前位置:首页 >> 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实现使用实例.doc
BP神经网络matlab工具箱和matlab实现使用实例_计算机软件及应用_IT/计算机_专业资料。BP 神经网络 matlab 工具箱和 matlab 实现使用实例经过最近一段时间的神经网络...
BP神经网络Matlab实例.pdf
采用Matlab 工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考 Matlab 帮助文档。 实例一 % 例 1 采用动量梯度下降算法训练 BP 网络。 % ...
BP神经网络MATLAB实例(简单而经典).pdf
BP神经网络MATLAB实例(简单而经典)_电子/电路_工程科技_专业资料。学习神经网络...BP神经网络matlab工具箱... 5页 免费 BP神经网络matlab实现和... 5页 5...
基于MATLAB神经网络工具箱的BP网络实现.pdf
基于MATLAB神经网络工具箱BP网络实现 - 简要介绍BP神经网络结构和算法以及MATLAB语言的特点.利用MATLAB的神经网络工具箱提供的许多有关神经网络设计、训练以及仿真的...
基于MATLAB神经网络工具箱的BP网络实现_图文.pdf
(2004)05010903 真2004年5月 基于MATLAB神经网络工具箱BP网络实现罗成汉(集美大学信息工程学院,福建厦门361021) 摘要:墒要介绍BP}申经网络结构和算法以及...
matlab神经网络工具箱简介和函数及示例_图文.ppt
matlab神经网络工具箱简介和函数及示例_工学_高等教育_教育专区。人工智能 光电...BP神经网络matlab工具箱... 5页 免费 BP神经网络matlab实现和... 5页 5...
BP神经网络matlab实例(简单而经典).doc
BP神经网络matlab实例(简单而经典)_计算机软件及应用_IT/计算机_专业资料。学习...BP神经网络matlab实现和... 5页 5下载券 Matlab BP神经网络工具箱... 1页 ...
BP神经网络matlab实例简单而经典.doc
BP神经网络matlab实例简单而经典_计算机软件及应用_IT/计算机_专业资料
BP神经网络与MATLAB神经网络工具箱.pdf
25 3 用 MATLAB 实现神经网络设计步骤 2 MATLAB 神经网络工具箱及其相关函数简介 BP 神经网络设计时, 需要确定网络的拓扑结构(隐层的层数 及各层的神经元的数目...
基于MATLAB神经网络工具箱的BP网络实现.pdf
本文将以 MATLAB6. 1 为 开发 环境, 介绍 神经 网络 工具 箱及其相关函数, 论述利 用其 神经 网络工 具箱 开发 BP 网络 的方法及设计步骤, 给出应用实例...
基于MATLAB神经网络工具箱的BP网络实现.pdf
第21 卷 第5期 计 算 机 仿 真 2004 年 5 月 文章编号 : 1006- 9348( 2004) 05- 0109- 03 基于 MATLAB 神经网络工具箱BP 网络实现罗成汉 ( ...
基于MATLAB神经网络工具箱的BP网络实现.pdf
21 卷 5 期第第 文章编号 :1006 - 9348 (2004) 05 - 0109 - 03 计 算机仿真 2004 年 5 月 基于 MATLAB 神经网络工具箱BP 网络实现罗成汉 ( 集美...
基于MATLAB神经网络工具箱的BP网络实现.pdf
并详细论述利用MATLAB神经网络r:具箱设计BP网络的方法及步骤,给出具体应用实例,...4 BP神经网络MATLAB实现在进行BP神经网络设计时,需要考虑以下问题:网络 可得到...
基于MATLAB神经网络工具箱的BP网络实现.pdf
BP神经网络matlab实现和ma... 5页 1财富值 BP神经网络matlab工具箱和... 5...神经网络工具箱设计 BP 网络的方法及步骤 ,给出具体应用实例 , 从而验 证该...
BP神经网络在MATLAB上的实现与应用.pdf
神 经网络的基本原理, 利用 MATLAB 神经网络工具箱可以很方 便地进行 BP 神经网 络的建 立、 练和 训 仿真, 给出了 建立 BP 神经网络的注意事项和例子. ...
BP神经网络用于函数拟合与模式识别的Matlab示例程序 - ....pdf
BP 神经网络用于函数拟合与模式识别的 Matlab 示例程序 clc clear close all %---% 产生训练样本测试样本,每一列为一个样本 P1 = [rand(3,5),rand(3,...
用matlab编BP神经网络预测程序.doc
BP 神经网络 Matlab 实例(1) 分类:Matlab 实例 采用 Matlab 工具箱函数建立...但是该方法不能和 MATLAB 其他程序动态链接,网络仿真 结果只能以数据文件的形式...
神经网络与MATLAB神经网络工具箱-liu_图文.ppt
神经网络与MATLAB神经网络工具箱-liu - PPT类容分三大块,介绍的是神经网络与BP神经网络以及在实际生活中的应用实例和在MATLAT工具箱中的编程实现(这个介绍较简略)...
MATLAB神经网络工具箱_图文.ppt
这种算法采用非 线性规划的最速下降方法,按误差函数的负梯度方向修改 权系数。 BP网络的快速学习算法与选择 MATLAB神经网络工具箱对常规BP算法进行改进,提供 了一...
基于matlab的bp神经网络应用毕业论文_图文.doc
BP 神经网络实例中的应用 ...10 3.1 基于 MATLABBP 神经网络工具箱函数 ...10 3.2 BP 网络在函数逼近中的应用 ...12 3.3 BP 网络在样本含量...