在深度学习中,常常会遇到batch size, step(iteration), epoch等词。对于很多新手不太清楚这些词之间的关系是什么。这里做一个简单介绍。
名词 | 定义和含义 |
epoch | 一个epoch表示把所有训练样本运算学习一遍 |
batch size | 1次迭代(iteration/step)所使用的样本量 |
iteration/step | 表示每运行一个iteration/step,更新一次参数权重,即进行一次学习,每一次更新参数需要batch size个样本进行运算学习,根据运算结果调整更新一次参数。 |
举个例子:
比如总训练样本两有25600个,batch size为256,那么需要完整训练一次所有样本则需要 25600/256 = 100 iterations/steps
训练5个epoch的话,则总的iterations/steps为 25600*5/256 = 500
值得注意的是,在深度学习领域中,常用带mini-batch的随机梯度下降算法(Stochastic Gradient Descent, SGD)训练深层结构,它有一个好处就是并不需要遍历全部的样本,当数据量非常大时十分有效。此时,可根据实际问题来定义epoch,例如定义10000次迭代为1个epoch
参考:
https://blog.csdn.net/wcy23580/article/details/90082221
https://www.jianshu.com/p/73b57de58a3a