Epoch(训练轮数)和Step(迭代次数) 是深度学习和机器学习中训练模型时的两个重要概念,它们用于描述模型训练过程中的不同阶段和步骤。理解它们的含义以及两者之间的区别,有助于更好地掌握模型的训练过程和调试。
一、Epoch(训练轮数)的含义
-
一个Epoch是指模型在训练过程中遍历整个训练数据集一次的过程。
-
如果训练数据集包含 10,000 个样本,那么一个 Epoch 就是模型在这 10,000 个样本上完成一次 前向传播(forward pass) 和 反向传播(backward pass) 的过程。
-
在一个 Epoch 中,模型会看到每一个训练样本一次,并有机会对所有数据进行学习。
二、Step(迭代次数)的含义
-
一个Step(也称为Iteration,迭代)是指模型在训练过程中使用一个批次(batch)数据进行一次参数更新的过程。
-
详细解释:
- 在深度学习中,为了高效利用计算资源和提高训练速度,通常不会将整个数据集一次性输入模型进行训练,而是将数据集拆分成多个小的批次(Batch)。
- 每处理一个 Batch,模型进行一次前向传播、计算损失、反向传播,并更新参数,这就是一个 Step。
- Step 的数量通常等于训练数据集的总样本数除以批次大小(Batch Size)。
-
公式:
Steps Per Epoch = 训练样本总数 Batch Size \text{Steps Per Epoch} = \frac{\text{训练样本总数}}{\text{Batch Size}} Steps Per Epoch=Batch Size训练样本总数- 如果训练集有 N N N 个样本,Batch Size 为 B B B,那么每个 Epoch 包含的 Step 数量为 N / B N / B N/B。
- 如果 N N N 不能被 B B B 整除,可能会有一个包含较少样本的最后一个 Batch。
三、Epoch 和 Step 之间的关系
- 假设:
- 训练数据集有 10,000 个样本。
- Batch Size 为 100。
- 计算:
- 每个 Epoch 包含的 Step 数量为:
Steps Per Epoch = 10 , 000 100 = 100 \text{Steps Per Epoch} = \frac{10,000}{100} = 100 Steps Per Epoch=10010,000=100 - 如果训练 10 个 Epoch,总共的 Step 数量为:
Total Steps = 10 × 100 = 1 , 000 \text{Total Steps} = 10 \times 100 = 1,000 Total Steps=10×100=1,000
- 每个 Epoch 包含的 Step 数量为: