训练过程loss震荡原因与解决办法

这训练过程loss震荡原因与解决办法

1、训练的batch_size太小

  1.   当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够。但盲目减少会导致无法收敛,batch_size=1时为在线学习。
    
  2. batch的选择,首先决定的是下降方向,如果数据集比较小,则完全可以采用全数据集的形式。这样做的好处有两点,

    1)全数据集的方向能够更好的代表样本总体,确定其极值所在。

2)由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。

  1. 增大batchsize的好处有三点:

    1)内存的利用率提高了,大矩阵乘法的并行化效率提高。

    2)跑完一次epoch(全数据集)所需迭代次数减少,对于相同的数据量的处理速度进一步加快。

    3)一定范围内,batchsize越大,其确定的下降方向就越准,引起训练震荡越小。

  2. 盲目增大的坏处:

1)当数据集太大时,内存撑不住。

2)batchsize增大到一定的程度,其确定的下降方向已经基本不再变化。

猜你喜欢

转载自blog.csdn.net/juluwangriyue/article/details/120803739