训练神经网络中的Epoch和Iteration

神经网络的训练中我们常常能遇到EpochIteration这两个不同的词。

两个词都表示“轮次”的意思,显然这两个“轮次”的含义并不相同。

在解释这两个词的不同之前,我们先引入三种梯度下降策略:
1.Batch Grandient Descent(BGD,批梯度下降)
2.Stochastic Gradient Descent(SGD,随机梯度下降)
3.Mini-Batch Gradient Descent(MBGD,小批量梯度下降)

BGD:每次迭代的时候用所有的样本来参与参数的更新。这种方法需要同时把所有的样本都加载进内存进行计算,这样无疑会导致内存的负载过大。

SGD:每次迭代使用一个样本来对参数进行更新。这种方法虽然速度快,但单个样本的损失往往不能代表总体样本的损失情况,而且单个样本的损失往往容易受到噪声的影响,所以这种方法往往难以收敛。

MBGD:是对上面两种策略的折中,相当于每次迭代使用 batch_size 个样本来对参数进行更新。若是batch_size选择合适,则每次迭代的损失既能表征总体的损失的情况,也能降低内存的负载压力,提升内存的利用率,也提升网络训练的速度。

BatchSize:一次训练所选取的样本数。

下面来比较IterationEpoch的不同:

Iteration:使用一个batch_size数量的样本训练一次。一个Iteration,参数更新一次。

Epoch:所有的样本都训练一次,即(total / batch_size)个Iteration的训练。一个Epoch,参数更新了(total / batch_size)次

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容