MATLAB中训练LM算法的BP神经网络

来源:百度知道 编辑:UC知道 时间:2024/05/07 04:51:05
我用MATLAB仿真基于LM算法的BP神经网络训练,为什么学习率、激发函数等参数都不改变的情况下,每次训练结果的误差及训练次数都不一样呢?是否因为是初始阈值等产生的?要怎么样才能解决这个问题?另外,若改变隐层节点数,也要求在同样的条件下进行网络性能对比,要怎么做?谢谢
谢谢 煌兮诸火的答复,
问题找到了,可能是归一化公式premnmx中min和max的问题,很多文献中都说测试数据的归一化也用训练数据归一化时得出的min和max值,用了tramnmx导致测试数据输出结果错的离谱。在现在的程序中不使用tramnmx,而是在训练时,用premnmx归一化,训练网络的误差达到1e-5,再对测试数据用premnmx进行归一化得出另一组min和max值,通过训练好的网络进行结果运算后,再用postmnmx(A2,mint,maxt)【mint和maxt为测试数据归一化时得出的最小最大值;A2为测试输入通过网络得出的输出】对输出进行处理后,得出的结果与测试集的期望输出比较,但误差并未达到1e-5,但是误差绝对值都小于1,不知有何问题?
1、训练数据回代入网络测试,比上面说的另外测试数据测试误差要小很多,虽然也没有达到1e-5这么小,不知为何?
2、[net,tr]=train(net,Pn,Tn); %训练后,网络误差达到1e-5停止
A=sim(net,Pn);
E=A-Tn;
执行后,为何E中每个值并不是1e-5的数量级,最小的为0.0001,最大的可以达到0.0191呢?
谢谢

1.初始权值不一样,如果一样,每次训练结果是相同的
2.是
3.在train之前修改权值,IW,LW,b,使之相同
4.取多次实验的均值
一点浅见,仅供参考

1.初始权值不一样,如果一样,每次训练结果是相同的
2.是
3.在train之前修改权值,IW,LW,b,使之相同
4.取多次实验的均值
一点浅见,仅供参考

训练误差是否降到一定范围内,比如1e-3,
将训练样本回代结果如何,
训练样本进行了预处理,比如归一化,而测试样本未进行同样的处理

这样的归一化似有问题,我也认为“测试数据的归一化也用训练数据归一化时得出的min和max值”,
请参考这个帖子http://www.ilovematlab.cn/thread-27021-1-1.html
测试数据带入训练好的神经网络误差当然不会达到1e-5,这是预测啊。
但将训练数据带入误差必然是1e-5,算法终止就是因为达到这个误差才终止,这个误差是由训练数据的输入、输出以及神经网络的权值、激活函数共同决定的,神经网络训练完后,权值、激活函数定了,同样的数据再代入神经网络,误差会不等于1e-5?
第二个问题:不可能每个值都达到1e-5,1e-5是MSE(mean square error),它们的平方和除以总数再开方,mse(E)必为1e-5
另外,LM算法虽然训练最快,但是预测精度一般不好,不如gdm,gdx