在神经网络训练过程中,通常会按照数据集被划分的批次进行迭代训练。每个迭代(iteration)表示模型在一个批次数据上进行了一次前向传播和反向传播,用于更新模型的参数。而每个 epoch 表示模型在整个数据集上进行了一次完整的训练。
-
epoch(当前 epoch 数量):
-
表示当前训练循环中已经完成的 epoch 数量。例如,如果您设置了训练的总 epoch 数量为 10,则在训练开始时,该值为 1,当模型完成了对整个数据集的一次完整训练后,即 epoch 1 结束,该值增加为 2,以此类推,直到训练完成所有指定的 epoch 数量。
-
一个epoch是指将整个训练数据集完整地过一遍的次数。例如,如果训练数据集有1000个样本,每次训练时从中随机选择一个batch进行训练,那么当模型训练完成了1000次batch,也就是一个epoch。在代码中,循环遍历训练数据集的次数就是epoch。
-
iters(当前迭代数):
-
表示当前 epoch 中已经进行的迭代次数。在每个 epoch 中,模型会按照数据集被划分的批次进行多次迭代训练。例如,如果您的数据集被划分成了 100 个批次,每个批次包含 10 张图片,则在一个 epoch 中会进行 100 次迭代(假设训练数据总量为 1000 张图片)。当每个批次的数据都被模型处理过一次后,一个 epoch 结束,此时迭代次数会重新从 1 开始计数,直到完成指定的 epoch 数量。
-
一个iteration是指一次模型参数更新的过程。在每个iteration中,模型都会接收一个batch的数据进行前向传播、计算损失、反向传播和参数更新。iterations的数量通常是由epoch数量和batch size来确定的。例如,如果一个epoch有1000个训练样本,batch size是10,那么一个epoch就会有1000/10=100个iterations。
在训练神经网络模型时,通常会使用epoch(周期)和iterations(迭代)来控制训练的进程。
关系可以总结如下:
- epoch控制着整个数据集的训练次数,它是一个训练周期的度量。
- iterations是在每个epoch中模型参数更新的次数,也是训练过程中的单个步骤。