#学习率learning_rate
x += - learning_rate * dx
其中x表示权重参数,dx表示梯度。可以看出,学习率影响了每次参数更新值的大小。
- 调整方法:
使用一个固定的学习率来进行训练的同时观察验证集准确率,每当验证集准确率停止上升,就乘以一个常数(比如0.5)来降低学习率。一般初始可以设为0.1。
接下来一起介绍几个参数的概念:
#epoch
表示跑完全部图片的一次过程。epoch越大,训练的次数越多,但也可能造成过拟合的问题。
- 调整方法:
一般可设置为50,如果不收敛,可以适当增加,每次增加5。
#batchsize
表示一次迭代输入的训练图片的个数。在合理范围内,增大 Batch_Size 的好处:内存利用率提高了,大矩阵乘法的并行化效率提高。跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
太小可能存在的问题:震荡不收敛
太大可能存在的问题:1 显存爆炸 2 收敛不到谷底
- 调整方法:
由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。
可以设为100,如果显存不够用,就减小一点。
#step