您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 实验一BP及RBP神经网络逼近
实验一、BP及RBF神经网络逼近一、实验目的1、了解MATLAB集成开发环境2、了解MATLAB编程基本方法3、熟练掌握BP算法的原理和步骤4、掌握工具包入口初始化及调用5、加深BP、RBF神经网络对任意函数逼近的理解二、实验内容1、MATLAB基本指令和语法。2、BP算法的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入参考程序3、设置断点,运行程序,观察运行结果四、参考程序1.BP算法的matlab实现程序%lr为学习步长,err_goal期望误差最小值,max_epoch训练的最大次数,隐层和输出层初值为零lr=0.05;err_goal=0.0001;max_epoch=10000;a=0.9;Oi=0;Ok=0;%两组训练集和目标值X=[11;-1-1;11];T=[11;11];%初始化wki,wij(M为输入节点j的数量;q为隐层节点i的数量;L为输出节点k的数量)[M,N]=size(X);q=8;[L,N]=size(T);wij=rand(q,M);wki=rand(L,q);wij0=zeros(size(wij));wki0=zeros(size(wki));forepoch=1:max_epoch%计算隐层各神经元输出NETi=wij*X;forj=1:Nfori=1:qOi(i,j)=2/(1+exp(-NETi(i,j)))-1;endend%计算输出层各神经元输出NETk=wki*Oi;fori=1:Nfork=1:LOk(k,i)=2/(1+exp(-NETk(k,i)))-1;endend%计算误差函数E=((T-Ok)'*(T-Ok))/2;if(Eerr_goal)break;end%调整输出层加权系数deltak=Ok.*(1-Ok).*(T-Ok);w=wki;wki=wki+lr*deltak*Oi';wki0=w;%调整隐层加权系数deltai=Oi.*(1-Oi).*(deltak'*wki)';w=wij;wij=wij+lr*deltai*X';wij0=w;endepoch%显示计算次数%根据训练好的wki,wij和给定的输入计算输出X1=X;%计算隐层各神经元的输出NETi=wij*X1;forj=1:Nfori=1:qOi(i,j)=2/(1+exp(-NETi(i,j)))-1;endend%计算输出层各神经元的输出NETk=wki*Oi;fori=1:Nfork=1:LOk(k,i)=2/(1+exp(-NETk(k,i)))-1;endendOk%显示网络输出层的输出2、BP逼近任意函数算法的matlab实现程序X=-4:0.08:4;T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);net=newff(minmax(X),[20,1],{'tansig','purelin'});net.trainParam.epochs=15000;net.trainParam.goal=0.001;net=train(net,X,T);X1=-1:0.01:1;y=sim(net,X1);figure;plot(X1,y,'-r',X,T,':b','LineWidth',2);3.RBF能够逼近任意的非线性函数X=-4:0.08:4;T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);net=newrb(X,T,0.002,1);X1=-1:0.01:1;y=sim(net,X1);figure;plot(X1,y,'-r',X,T,':b','LineWidth',3);五、思考题1.将结果用图画出。2.假设训练样本X=[1-1;1-1;-11],目标输出T=[11;11],建立一个3个输入,单隐层8个神经元,输出层2个神经元的网络结构,其中隐层、输出层神经元的传递函数均为sigmoid函数,(1)试利用BP学习算法实现该网络的训练过程;(3)观察两种学习算法的运行结果,比较两种算法的优缺点。
本文标题:实验一BP及RBP神经网络逼近
链接地址:https://www.777doc.com/doc-2457515 .html