在进行模型训练的时候经常会遇到这三个参数:batch_size、epoch和iterations,那么它们之间的关系是怎样的呢?
首先,产生的原因主要是:
1. 原本的大批量梯度下降训练时,每次要处理完所有数据才更新梯度和损失值,需要的时间太长,计算开销大。
2. 但是呢,每次计算一个数据,就更新一次损失值和梯度值,虽然速度快,但是不容易收敛,而且不一定找到全局最优解。
于是,就出现了折中方法 —— 小批量梯度下降策略,所以就有了这些概念。
batch_size:指的是每批次的大小,即每个iteration送入神经网络的样本量,也就是每个batch包含的样本量。
iterations:指的是迭代次数,也就是每处理完所有数据一次,需要多少次迭代,每一个batch_size的数据,完成一次训练过程,叫做完成了一次迭代(iteration)。
epoch:一个epoch指的是,将所有数据送入神经网络,完成一次整体的前向计算和反向传播的过程。
通俗一点说:如果我们有10000个样本,分为4个batch,
那么batch_size值就是:10000/4=2500;
iterations值就是:4;
全体数据被计算一次,就完成了一次epoch。
##
参考:
https://www.jianshu.com/p/e5076a56946c/
https://blog.csdn.net/nini_coded/article/details/79250703
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深度学习中的batch_size、epoch和iterations - Python技术站