有哪位大神知道BP神经网络变学习率学习算法在Matlab中怎么实现啊?

有哪位大神知道BP神经网络变学习率学习算法在Matlab中怎么实现啊?平时使用BP神经网络,学习率都是给定的一个在0--1之间的定值,这样会导致网络陷入局部最小值,现在想... 有哪位大神知道BP神经网络变学习率学习算法在Matlab中怎么实现啊?平时使用BP神经网络,学习率都是给定的一个在0--1之间的定值,这样会导致网络陷入局部最小值,现在想通过改变学习率来优化,具体该怎么实现啊?还请高人多多指教,有程序代码最好,谢谢! 展开
 我来答
百度网友e40b1bb
推荐于2017-11-26 · TA获得超过151个赞
知道答主
回答量:34
采纳率:100%
帮助的人:46.9万
展开全部
额。。。
一种启发式的改进就是,为学习速率选用自适应值,它依赖于连续迭代步骤中的误差函数值。
自适应调整学习速率的梯度下降算法,在训练的过程中,力图使算法稳定,同时又使学习的步长尽量地大,学习速率则是根据局部误差曲面作出相应的调整。当误差以减小的方式趋于目标时,说明修正方向正确,于是步长(学习速率)增加,因此学习速率乘以增量因子Ir_inc,使学习速率增加;而当误差增加超过设定的值C倍时,说明修正过头,应减小步长,因此学习速率乘以减量因子Ir_dec,使学习速率减少.其他情况学习速率则不变。
Matlab 里有对应的变学习速率的函数。
bpnet=newff(x,[60,4],{'logsig','logsig'},'traingda'); %'traingda'表示自适应学习速率调整方法
bpnet.trainParam.show=50;
bpnet.trainParam.lr=0.01; %预设值的学习速率
bpnet.trainParam.epochs=3000;
bpnet.trainParam.goal=0.247;
bpnet.trainParam.Ir_inc=1.05; %增加的学习速率倍数,默认为1.05
bpnet.trainParam.Ir_dec=0.7; %减少的学习速率倍数,默认为0.7
bpnet.trainParam.max_perf_inc=1.04; %误差函数增加为迭代前的1.04时,减少学习速率。默认为1.04
[bpnet]=train(bpnet,p,t);
save bpnet;
%%%%%%%%%%%%%%%%%%%%
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式