一文读懂神经网络训练中的Batch Size,Epoch,Iteration
作为在各种神经网络训练时都无法避免的几个名词,本文将全面解析他们的含义和关系。
1. Batch Size
释义:批大小,即单次训练使用的样本数
为什么需要有 Batch_Size :batch size 的正确选择是为了在内存效率和内存容量之间寻找最佳平衡。
Batch size调参经验总结:
-
相对于正常数据集,如果Batch_Size过小,训练数据就会非常难收敛,从而导致underfitting。
-
增大Batch_Size,相对处理速度加快。
-
增大Batch_Size,所需内存容量增加(epoch的次数需要增加以达到最好结果)。
-
这里我们发现上面两个矛盾的问题,因为当epoch增加以后同样也会导致耗时增加从而速度下降。
2. Epoch
1个epoch表示过了1遍训练集中的所有样本,即表示所有训练样本的一次forward+一次
backward。
3. Iteration
Iteration在有的网络中也叫training step,中文或称之为“迭代”,具体来说:一次迭代 = 一次forward + 一次backward。换句话说,就是“取若干数据,通过网络推理得到结果,调整网络权值”这样整体的过程称为一次迭代。(多说一句,这里所取的若干数据,就是batch size所决定的)
迭代是重复反馈的动作,神经网络中我们希望通过迭代进行多次的训练以到达所需的目标或结果。
每次迭代后将更新1次网络结构的参数,每一次迭代得到的结果都会被作为下一次迭代的初始值。
4. Batch size,Epoch, Iteration的小结
总结:
- 一次epoch=所有训练数据forward+backward后更新参数的过程。
- 一次iteration= batch size个训练数据的forward+backward后更新参数过程。
这里举一个小栗子。假设有一个数据集含200000个样本,取1000次迭代为1个epoch,那么每次迭代的batch-size需要设为200。这样1个epoch相当于过了200000个训练样本。