什么是batch,batch-size
深度学习训练过程本身是就是求损失函数的最小值。这一过程一般通过梯度下降来实现。如果训练一个epoch,遍历所有训练集,计算一次loss,反向传播一次,梯度也下降一次。如果把训练集切割成一些小的训练集,,每次遍历完一个小的训练集,就计算一次loss,反向传播一次,梯度下降一次,那么一个epoch中就可以实现多次梯度下降,从而能够加快训练的收敛速度。这个小的训练集就是一个batch,每个batch的大小就是batch-size。
batch-size大小对训练过程有什么影响
极端的例子,如果batch-size是整个训练集,那么每个epoch需要遍历所有的数据,导致占用的显存大,且收敛的速度慢。如果batch-size为1,那么相邻两次迭代权重梯度可能差异大,会导致梯度振荡,不容易收敛。所以一般batch-size取中间数,通常为64的倍数或因子。
还有说batch-size太大,可能会使得相邻两次迭代的数据分布相似,梯度差异小,从而使loss陷入局部最小值。
batch-size