1.epoch
理解: 训练模型时,数据集被完整使用了1遍,称为1个epoch;被完整使用了2遍称为2个epochs;……。
例如:MNIST手写体数据集,训练集有6张图像(和标签),如果这6万张图像训练时全部使用了1篇,则epoch=1;如果被完整使用了2遍,则epochs=2。
备注:一般在训练时都要使用多于一个的epoch,因为在神经网络中传递完整的数据集仅仅一次是不够的,只有将完整的数据集在同样的神经网络中传递多次,才会得到比较优秀的训练效果,当然epochs太多也不行,容易过拟合,所以要根据实验选择自己最合适的。
2.batch
理解: 数据集进行训练时,需要更新模型参数。而参数更新是按批进行的,因此1套完整的训练集会被分成若干份,每份称为1个batch,每份中图片的数量称为batch-size。
例如:MNIST手写体数据集,训练集有6张图像(和标签),如果把这6万张图片分成了6份,则batch=6,batch-size=1万。
3.batch-size
理解: 一个batch中的数据量大小(图片的数量)即为batch-size,一般为2的整数倍,比如32,64,128等。
例如:MNIST手写体数据集,训练集有6张图像(和标签),如果把这6万张图片分成了6份,则batch=6,batch-size=1万。
4.iteration
理解:模型进行训练时,数据集中每份(batch)数据完成一次训练称为一个iteration(迭代)。
注意:在一个epoch中,batch和iterations的数值是相等的。
5.举例理解
背景: MNIST手写体数据集,训练集有6张图像。
1)当模型训练时,要选择合适的batch-size大小,因为batch-size大小决定了用多少张图片来更新一次模型的参数。假设我们选取的batch-size=16。
2)训练集共有6万张图片,batch-size=16,那么batch=60000/16=3750。可以理解成训练集共有6万张图片,每份要求有16张图片用于模型的参数更新,那么整个训练集被分成了3750份。
3)由于模型分成了3750份,即batch=3750。模型训练时,需要一份一份的进行训练,然后进行模型参数的更新。当第一份图片完成训练和参数更新时,即:有16张图片参与了训练和参数更新,也即:有1个batch完成了训练和参数更新(因为1个batch中有16张图片(batch-size=16)),此时iteration=1;当第二份图片完成训练和参数更新时,iteration=2;……;当3750份完成训练和参数更新时,iteration=3750,此时数据集被完整的用了一遍,epoch=1。