我们在进行神经网络学习的时候,大部分框架都会涉及Batch ,iteration, epoch这个三个概念,今天总结一下。
Epoch
当我们使用一个完成的数据集通过了神经网络并且返回了一次,这个过程称为一次epoch,通俗的说就是所有的训练样本完成一次forward和backward propagation。
可能我们的数据很大,由于硬件水平的限制(内存等),我们不得不将数据分成多块,分批次进行训练。这时候每个批次的数据集称为Batch
Batch size
指的是每个batch中数据的个数。或者说一次forward和backward propagation运算中需要的样本个数。这么来理解,深度学习的参数的损失函数的更新不是一个由数据获得的。而是由一组(一批次)数据加权得到的,这组数据就是Batch,而它的数量我们称为Batch Size.
Iterations
每一次迭代我们网络中参数(权重)会进行一次更新,每次更新需要每个Batch 中的batch size 个数据进行运算得到损失函数,在进行反向传播更新参数(权重)
上图中样本数量2000,batch = 4 , batch size = 500,
iterations = 4 ,配合下面的公式理解
One epoch = num of iterations = 4 = 训练样本的数量(2000)/batch size(4)