在进行模型训练的时候经常会遇到这三个参数: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