机器学习/深度学习/NLP-3-epoch、batch、iterations
网上对epoch、batch、iterations的解析都太过繁琐。这里按我个人的理解整理出关键的几个点。
epoch
定义:数据集完整通过神经网络一次并且返回了一次,称为一次epoch。
用法:
- 一般采用多个epoch训练模型,这样可以在训练中多次调整更新权重参数,提高模型的适用性。
- 具体设置多少个epoch随缘,常规是数据集越大就设置越大的epoch。随着epoch数量增加,模型会由欠拟合逐渐变为过拟合。
- 考虑2的情况,可以考虑early-stoping策略。
batch
定义:网络在训练时一次读入的数据样本数。batch_size就是batch的大小。
用法:
- 数据集越大,就切分越多的batch。
- 对于每个epoch,number of batches=总样本数/batch_size。
- 有个潜规则:数据集越大,为了提高准确度,epoch和batch最好都增大些。
iterations
定义:Iteration是完成一个epoch需要的batch次数。
用法:
- iterations=number of batches=总样本数/batch_size。
举例说明
假设数据集共有100000个样本,我们可以设置:
epoch=32 #跑32遍数据集进行训练
batch_size=256 #在每个epoch里,每次取256个样本进行训练
number_of_batches=100000//256 #有余数的话number_of_batches再加1,代表每个epoch需要完成的batch个数
iterations=100000//256 #有余数的话number_of_batches再加1,代表每个epoch具有的iterations个数
#需要注意的是,每个batch都会进行一次权重更新,所以整个训练过程共进行了iterations*epoch次权重更新。