epoch
使用训练集的全部数据对模型进行一次完整训练,被称之为“一代训练”
一个时期=所有训练样本的一个正向传递和一个反向传递。
iteration
使用一个batch的数据对模型进行一次参数更新的过程,称之为“一次训练”
每一次迭代得到的结果都会被作为下一次迭代的初始值。
一个迭代=一个正向通过+一个反向通过。
batch-size
一次训练所选取的样本数
使用训练集中的一小部分样本对模型权重进行一次反向传播的参数更新,这一小部分样本称之为“一批数据”
batch-size的正确选择是为了在内存效率和内存容量之间寻找最佳平衡。
1个batch包含的样本的数目,通常设为2的n次幂,常用的包括64,128,256
全批次(蓝色)
如果数据集比较小,我们就采用全数据集。全数据集确定的方向能够更好的代表样本总体,从而更准确的朝向极值所在的方向。
注:对于大的数据集,我们不能使用全批次,因为会得到更差的结果。
迷你批次(绿色)
选择一个适中的Batch_Size值。就是说我们选定一个batch的大小后,将会以batch的大小将数据输入深度学习的网络中,然后计算这个batch的所有样本的平均损失,即代价函数是所有样本的平均。
随机(Batch_Size等于1的情况)(红色)
每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。
Number of Batches = Training Set size / Batch Size
梯度下降方式 | Training Set Size | Batch Size | Number of Batches |
---|---|---|---|
全批次(BGD) | N | N | 1 |
随机(SGD) | N | 1 | N |
迷你批次(Mini-Batch) | N | B | N/B+1 |