如何用MATLAB实现 BP神经网络

如何用MATLAB实现 BP神经网络,第1张

一种启发式的改进就是,为学习速率选用自适应值,它依赖于连续迭代步骤中的误差函数值。 自适应调整学习速率的梯度下降算法,在训练的过程中,力图使算法稳定,同时又使学习的步长尽量地大,学习速率则是根据局部误差曲面作出相应的调整。

额。。。

一种启发式的改进就是,为学习速率选用自适应值,它依赖于连续迭代步骤中的误差函数值。

自适应调整学习速率的梯度下降算法,在训练的过程中,力图使算法稳定,同时又使学习的步长尽量地大,学习速率则是根据局部误差曲面作出相应的调整。当误差以减小的方式趋于目标时,说明修正方向正确,于是步长(学习速率)增加,因此学习速率乘以增量因子Ir_inc,使学习速率增加;而当误差增加超过设定的值C倍时,说明修正过头,应减小步长,因此学习速率乘以减量因子Ir_dec,使学习速率减少其他情况学习速率则不变。

Matlab 里有对应的变学习速率的函数。

bpnet=newff(x,[60,4],{'logsig','logsig'},'traingda'); %'traingda'表示自适应学习速率调整方法

bpnettrainParamshow=50;

bpnettrainParamlr=001; %预设值的学习速率

bpnettrainParamepochs=3000;

bpnettrainParamgoal=0247;

bpnettrainParamIr_inc=105; %增加的学习速率倍数,默认为105

bpnettrainParamIr_dec=07; %减少的学习速率倍数,默认为07

bpnettrainParammax_perf_inc=104; %误差函数增加为迭代前的104时,减少学习速率。默认为104

[bpnet]=train(bpnet,p,t);

save bpnet;

%%%%%%%%%%%%%%%%%%%%

最好自己用for循环来编写,matlab里面的函数都是经过优化的,结构和变量对应关系很赋值。再说,现在的电脑性能很好,不在乎优化节省出来的时间。

最主要的是,自己编写的神经网络程序,可以随便修改,这对研究神经网络算法是很重要的。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/12177666.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存