当我们将一张图像发送到 FCN 进行语义分割时,mini-batch 的概念是什么?
数据层中的默认值为batch_size: 1
. 这意味着每次向前和向后传递,都会将一张图像发送到网络。那么小批量的大小是多少?它是图像中的像素数吗?
另一个问题是,如果我们将少量图像一起发送到网络会怎样?会不会影响收敛?在一些论文中,我看到了20
图像的数量。
谢谢
当我们将一张图像发送到 FCN 进行语义分割时,mini-batch 的概念是什么?
数据层中的默认值为batch_size: 1
. 这意味着每次向前和向后传递,都会将一张图像发送到网络。那么小批量的大小是多少?它是图像中的像素数吗?
另一个问题是,如果我们将少量图像一起发送到网络会怎样?会不会影响收敛?在一些论文中,我看到了20
图像的数量。
谢谢
批量大小是在单个训练操作中通过网络发送的图像数量。在图形卡或 cpu 集群上训练时,将一举计算所有样本的梯度,从而通过并行性获得巨大的性能提升。
批量大小对训练有多种影响。首先,它通过对批次中的梯度进行平均来提供更稳定的梯度更新。这可能是有益的,也可能是有害的。根据我的经验,它比有害更有益,但其他人报告了其他结果。
为了利用并行性,批量大小主要是 2 的幂。所以是 8、16、32、64 或 128。最后,批量大小受显卡中的 VRAM 限制。该卡需要存储所有图像和结果在图形的所有节点以及所有梯度中。
这可能会爆炸得非常快。在这种情况下,您需要减小批量大小或网络大小。