batch size,学习率(learning rate),and training time
1.batch size和leaning rate的关系
现在深度学习中的绝大多数算法采用梯度下降法来进行训练,并且通过选择学习率来控制下降的步长,在梯度下降法中学习率和batch size的选择直接影响了下降的步长,即步长与batch size成反比,与学习率成正比,因此这两个参数直接影响了模型的参数更新,他们是影响模型性能收敛的最佳参数。
(1)大的batch size可提高模型的稳定性,并且可以减少训练时间
在显卡显存足够的情况下,使用较大的batch size能够在数据集数量一定的条件下batch数目减小,训练时间自然就降低了。选择大的batch size能够使得模型在正向传播过程中batch norm对均值和方差的计算更为准确,batch size过小,相邻的batch size之间的差异越大,那么相邻两次迭代的梯度震荡情况会比较严重,不利于收敛;batch size越大,相邻mini-batch间的差异相对越小,虽然梯度震荡情况会比较小,一定程度上利于模型收敛,提高模型训练的稳定性。但如果batch size极端大,相邻mini-batch间的差异过小,相邻两个mini-batch的梯度没有区别了,整个训练过程就是沿着一个方向蹭蹭蹭往下走,很容易陷入到局部最小值出不来。在显存不够的情况下(使用pytorch),可以采用梯度不清零的方法,即将梯度进行累积间接增加batch size,提升模型的稳定性。
for i,(images,target) in enumerate(train_loader):
# 1. input ou