深度网络在学习过程中,是利用优化算法进行前向后向传播的迭代训练的,对于庞大的数据集而言,网络如何迭代,迭代次数是多少,每次迭代多少,都是网络学习过程在需要理解的内容:
1、epoch:训练一个模型时所用到的全部数据;
一个epoch过程指的是将所有样本数据输入网络中,并完成一次前向及反向传播的过程。完整的任务模型训练,需要设置多个epoch,经过多轮迭代才会收敛。但是,由于一般情况下数据量非常大,一个epoch的计算量计算机无法负荷,所以,一般会分成几个比较小的batches,每次送入网络一部分数据;
2、batch:参数更新批次数据量;
使用训练集中的一部分样本对模型参数权重进行一次反向传播的更新,这一小部分样本被称为“一批数据”。“一批数据”的大小就是batchsize。
3、batch size:一个batch中的数据量;
batch就是每次送入网络中训练的一部分数据,即每个batch中训练样本的数量。所以,batch size的取值,跟计算机设备的配置有关,尤其是显卡,需要根据情况选择;
4、iterations:完成一次epoch所需的batch个数;
每一次迭代都是一次权重更新,每一次权重更新需要batch_size个数据进行前向反向传播更新参数。1个iteration等于使用batchsize个样本训练一次。
5、举例
一个数据集有5000个样本,batch size 为500,则iterations=10,epoch=1。
每个 epoch 要训练的图片数量:5000(所有图像)
训练集具有的 batch 个数: 5000/500=10
每个epoch 需要完成的 batch 个数: 10
每个 epoch 具有的 Iteration个数:10(完成一个batch,相当于参数迭代一次)
每个 epoch 中发生模型权重更新的次数:10
训练 10 个epoch后,模型权重更新的次数: 10*10=100
总共完成300次迭代,相当于完成了 300/10=30 个epoch
具体计算公式为:1个epoch = 训练样本的数量/batch_size
(ps:一个epoch是所有数据融入网络中完成一次前向计算及反向传播的过程)