batch_size应该怎么设置

在训练中:我们通常会将batch_size设置较大,从而使得GPU或者CPU满载运行,提高训练的速度。并且会使梯度下降的方向更加准确。并且不使用较小的batch_size,举一个极端的例子:如果batch_size为1时,因为每一个样本都具有自己独特的特征,会对梯度的计算产生波动,即模型的收敛是不利的。
梯度的方差表示为:
在这里插入图片描述
公式解读:D(cx)=c^2D(x)
m即BATCH_SIZE设置大小,即增大BATCH_SIZE的大小可以使得梯度方差的大小减小。直接使梯度更加准确。

但在测试中:我们通常会将batch_size设置为1,主要是因为一些将数据统一的操作来使其可以放到一个batch中(例如:cv领域中的将图像调整大小致相同,NLP领域中Bert模型也会将token长度的向同一个batch中最大的长度对齐)
这样就会带来一个问题,模型效果的降低,所以在测试时:为了尽可能的表现模型的能力,设置batch_size为1。
以上的观点不适用于全部情况,应该根据自己的实际情况来看。

若输入模型数据shape固定,验证时对Batch_size无限制。
若输入模型数据shape不固定,验证时对Batch_size设置为1。

你可能感兴趣的:(batch,python,深度学习)