2 各种BP 学习算法MATLAB 仿真 根据上面一节对BP 神经网络的MATLAB 设计,可以得出下面的通用的MATLAB 程序段,由于各种BP 学习算法采用了不同的学习函数,所以只需要更改学习函数即可
MATLAB 程序段如下: x=-4:0
01:4; y1=sin((1/2)*pi*x)+sin(pi*x); %trainlm 函数可以选择替换 net=newff(minmax(x),[1,15,1],{'tansig','tansig','purelin'},'trainlm'); net
trainparam
epochs=2000; net
trainparam
goal=0
00001; net=train(net,x,y1); y2=sim(net,x); err=y2-y1; res=norm(err); %暂停,按任意键继续 Pause %绘图,原图(蓝色光滑线)和仿真效果图(红色+号点线) plot(x,y1); hold on plot(x,y2,'r+'); 注意:由于各种不确定因素,可能对网络训练有不同程度的影响,产生不同的效果
如图 3-8
标准 BP 算法(traingd) 图3-8 标准BP 算法的训练过程以及结果(原图蓝色线,仿真图+号线) 增加动量法(traingdm) 如图3-9
图3-9 增加动量法的训练过程以及结果(原图蓝色线,仿真图+号线) 弹性 BP 算法(trainrp)如图3-10 图3-10 弹性 BP 算法的训练过程以及结果(原图蓝色线,仿真图+号线) 动量及自适应学习速率法(traingdx )如图3-11
图3-11 动量及自适应学习速率法的训练过程以及结果(原图蓝色线,仿真图+号线) 共轭梯度法