caffe训练时,loss出现很奇怪的值:87.3365,则保持不变下去。
搜索资料,找到多篇帖子:
https://blog.csdn.net/u011215144/article/details/78479330
https://blog.csdn.net/cheese_pop/article/details/79582077
https://blog.csdn.net/ying86615791/article/details/60757573
https://blog.csdn.net/abcjennifer/article/details/46424949
https://blog.csdn.net/lyiiiiii61/article/details/79153014
https://blog.csdn.net/hyqsong/article/details/51933255
https://blog.csdn.net/u010725283/article/details/78929684
https://blog.csdn.net/u010417185/article/details/69664803
对如上看到的帖子总结, 主要有以下几个方面需要关注:
1、降低学习率,提高batchsize
将学习率从0.01,降低到0.0000001,训练的batchsize现在是256
2、降低weight
跟学习率同步降低的
3、输入归一化
训练prototxt文件中,设置归一化参数:
transform_param {
scale: 0.00390625//像素归一化,1/255
}
4、查看输入数据、标签是否有异常
solver.prototxt中设置,debug_info: true
标签仔细看了,从0到60,总分类个数也改成了61
数据都是严格按照预处理lmdb来的。
5、数据shuffle
已经在lmdb数据生成时进行了shuffle。
6、batch normalization的设置
http://www.caffecn.cn/?/question/312
http://noahsnail.com/2018/07/05/2018-07-05-Caffe%E8%AE%AD%E7%BB%83%E6%97%B6Loss%E4%B8%8D%E4%B8%8B%E9%99%8D%E9%97%AE%E9%A2%98/
我这里碰到的问题,其实是通过第6点解决的。将batch normaliztion的use_global_stats由true改成false
batch_norm_param { use_global_stats: false }
训练阶段是false,测试阶段是true。