深度学习——训练trick

来源:互联网 发布:纪梵希淘宝旗舰店真吗 编辑:程序博客网 时间:2024/06/06 00:25

1、数据预处理
数据必须进行预处理以使其zero-mean。
图像处理中有两种方式中心化:减去均值图像(32,32,3);减去每通道均值(3个值)。

2、梯度检查
使用中心形式:
使用双精度:使用单精度浮点数时,可能会出现即使梯度实现是正确的,也会得到比较大的相对误差(比如1e-2),应该使用双精度数据类型。
step大小:不是越小越好,当h过小时会出现数值精确度问题。一般在1e-4到1e-6之间修改h。
计算相对误差:网络越深,误差越大。所以当对一个深度达10层的神经网络进行梯度检查时,即使相对误差为1e-2可能也是可以的。

3、检查初始损失是否合理
由于参数是随机的,所以softmax得到的每个类别的结果是1/class_num,由此可以估计出初始的loss值。检查程序输出的loss值是否和期望的一致,如果不一致,那么可能损失函数计算错误。

4、确保可以在很少的数据集上过拟合
选择大概20个数据来训练网络,那么损失值应该随着训练epoch不断减小并收敛到0。

5、参数初始化

6、学习率
损失值为nan时几乎总意味着学习率过大。

参考

[1] http://yyue.blogspot.com/2015/01/a-brief-overview-of-deep-learning.html
[2] http://cs231n.github.io/neural-networks-3/#gradcheck

原创粉丝点击