1. 学习率
我们可能已经听说了很多,如果loss不收敛就将学习率降低。但是,这在重新训练时是个误区,尤其是在训练的开始阶段。在开始阶段我们不能把学习率设置的太低否则loss不会收敛。我的做法是逐渐尝试,从0.1,0.08,0.06,0.05 ......逐渐减小,如果学习率设置的过大,loss会直接爆炸变成87.33(原因可参考:http://blog.csdn.NET/jkfdqjjy/article/details/52268565?locationNum=14)我们逐渐减小学习率,直到loss正常为止。我们可以用第一个最大值训练网络,开始时loss下降很慢,可能要等到迭代3万次左右才有明显变化,耐心等待。当训练时发现loss不再下降,这时我们可以再降低学习率,继续训练。
影响loss收敛性的因素有很多,还没有一一尝试。dropout_ratio,batchsize等。
2. 数据未归一化
3. 网络结构不合理