1 回答
假设您想要进行数字识别 (MNIST),并且您已经定义了网络架构 (CNN)。现在,您可以开始将训练数据中的图像一张一张地输入网络,获取预测(直到这一步称为推理),计算损失,计算梯度,然后更新网络的参数(即权重和偏差),然后继续处理下一张图像……这种训练模型的方式有时被称为在线学习。
但是,您希望训练更快,梯度噪声更小,并且还希望利用 GPU 的强大功能,这些 GPU 可以有效地进行数组操作(具体而言是nD-arrays)。所以,你要做的是一次输入 100 张图像(这个大小的选择取决于你(即它是一个超参数),也取决于你的问题)。例如,看看下面的图片,(作者:Martin Gorner)
在这里,由于您28x28
一次输入 100 张图像(而不是在线训练案例中的 1 张),因此批量大小为 100。通常这被称为小批量大小或简称为mini-batch
.
还有下图:(作者:Martin Gorner)
现在,矩阵乘法将完美无缺,您还将利用高度优化的数组操作,从而实现更快的训练时间。
如果您观察上面的图片,只要它适合您的(GPU)硬件的内存,您是否提供 100 或 256 或 2048 或 10000 (批量大小)图像并不重要。你会得到这么多的预测。
但是,请记住,这个批量大小会影响训练时间、你实现的错误、梯度变化等,对于哪个批量大小效果最好,没有一般的经验法则。只需尝试几种尺寸并选择最适合您的尺寸。但尽量不要使用大批量,因为它会过度拟合数据。人们通常使用32, 64, 128, 256, 512, 1024, 2048
.
奖励:为了更好地了解这个批量大小可以有多疯狂,请阅读这篇论文:用于并行化 CNN 的奇怪技巧