深度学习中epoch、batch、batch-size和iteration的理解

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。

猜你喜欢

转载自blog.csdn.net/m0_38068876/article/details/129878095