batch_size应该怎么设置

Posted evil心安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_size应该怎么设置的主要内容,如果未能解决你的问题,请参考以下文章

增加Batch_Size的优点

epoch =batch_size*iteration

如何使用有状态 LSTM 模型进行预测,而不指定与我训练时相同的 batch_size?

nn.linear()

关于深度学习中的batch_size

难以在 2 层 RNN 中正确设置批量大小