matlab神经网络工具箱BP易踩的坑汇总(持续更新)

转载请说明原文来自  老饼玩转-BP神经网络http://bp.bbbdata.com/teach#141

目录

一、没关掉test占比

二、使用traingd,traingda等训练方法

三、提取权重阈值WB没有归一化

本文总结和积累,matlab神经网络工具箱BP易踩的坑。

一、没关掉test占比

很多人参照老教材,采用老式建模流程,自己抽出测试数据,只把训练数据投入网络,却没把网络的数据分割test占比关掉。而事实上这是个很大的坑,这样相当于浪费了15%的数据。


matlab神经网络工具箱将投入的数据自动分割为三份:70%训练数据,15%泛化验证数据,15%测试数据。测试数据全程什么都没做,工具箱特地留给用户的。


如果自己独自抽出测试数据,记得要把数据分割test占比分配到训练中,如下:

net.divideParam.trainRatio=0.85 ; % 默认0.7
net.divideParam.valRatio=0.15; % 默认0.15
net.divideParam.testRatio=0; % 默认0.15

二、使用traingd,traingda等训练方法

matlab工具箱提供了非常多的训练方法,刚开始时,总喜欢在不同的方法上试,


实际上matlab推荐的只有2或3种,
一是小数据,内存足,绝对推荐trainlm.效果几乎是无法质疑了。
二是大数据,trainlm跑不动推荐trainscg或trainrp。


这几乎成了定式,在其它方法上试,也有可能有更好的效果,但跑出比trainlm,trainscg,trainrp效果更好的,那真的好难,如果时间不多的同学,建议就如上所用就好。

三、提取权重阈值WB没有归一化

net.iw,net.lw,net.b(net是训练好的网络)中记录了输入层权重,网络层权重,和阈值,这是毫无疑问的。
代入公式后,却发现和网络sim得到的结果不一致,一直摸索了很久。
最后发现原因是,自matlab2012b之后,网络默认会自动归一化(也可自行关掉),这样提出来的w,b,是自动归一化后的数据训练的网络对应的权重阈值,使用前需要自行将数据归一化,并将结果反归一化,才能与sim对得上。

相关文章

 《BP神经网络梯度推导》

​​​​​​《BP神经网络提取的数学表达式》

《一个BP的完整建模流程》

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年5月22日
下一篇 2022年5月22日

相关推荐