Batch-Epoch

batch

定义

Batch:批处理,顾名思义就是对某对象进行批量的处理。——百度百科

训练神经网络时,在数据集很大的情况下,不能一次性载入全部的数据进行训练,电脑会支撑不住,其次全样本训练对于非凸损失函数会出现局部最优,所以要将大的数据集分割进行分批处理。
batch_size就是每批处理的样本的个数。

备注:

对于凸函数而言,最优解一定是全局最优解;而对于非凸函数而言,最优解可能是局部最优解。

梯度下降法是最常见的优化算法,在最小化损失函数时,通过梯度下降法一步步的迭代求解,得到最小化的损失函数和模型参数值。

如何设置batch_size?

过大的batch_size会降低梯度下降的随机性,以至于更稳定,训练更容易收敛,但因此更容易陷入局部最优点
较小的批次内存利用率极低,还会带来幅度和随机性较大的权重更新,比较容易震荡导致不稳定,但也因此能够跳出局部最小。

epoch

定义

epoch是所有训练数据的训练次数。一个完整的数据集通过神经网络一次并返回了一次的过程(正向传递+反向传递)称为一个epoch。

备注:

在神经网络中传递完整的数据集一次是不够的,即使用一次迭代过程更新权重一次不够,epoch的数目需要>1,epoch数量增加,神经网络中的权重更新次数增加,曲线从欠拟合变为过拟合。

公式

单次epoch =>(全部训练样本/batch_size)= iteration
即迭代的次数等于batch的数目。

我有1000个数据,batch_size设置为500,那么我需要2次iterations,完成1次epoch。
0%