【深度学习】关于训练过程中的epoch和iter
在深度学习训练过程中,epoch和iter(iteration) 是描述训练进度的两个基本概念,它们的定义和区别如下:
一、Epoch(轮次)
- 定义:一个 epoch 指的是将整个训练数据集完整地过一遍的过程。
例如,若训练集有 10,000 张图像,当模型处理完这 10,000 张图像并完成一次参数更新循环时,即完成了 1 个 epoch。 - 作用:用于衡量训练的完整度。通常需要多个 epoch 才能让模型充分学习数据中的模式。
二、Iteration(迭代)
- 定义:一个 iteration 指的是模型处理一个 batch(批次) 数据并完成一次前向传播和反向传播的过程。
例如,若训练集有 10,000 张图像,设置 batch size 为 32,则每个 epoch 包含 10,000 / 32 ≈ 313 个 iterations(向下取整时可能需补全最后一个不完整 batch)。 - 作用:用于描述训练的单次更新粒度。较小的 batch size 会增加 iterations 数量,但可能提升训练稳定性。
三、核心区别与关系
| 概念 | Epoch | Iteration |
|---|---|---|
| 数据范围 | 处理整个训练集一次 | 处理一个 batch 的数据 |
| 计算量 | 较大,取决于数据集大小和 batch size | 较小,仅涉及一个 batch 的计算 |
| 更新频率 | 每完成一个 epoch 更新一次全局进度 | 每完成一个 iteration 更新一次参数 |
| 公式关系 | [ \text{iterations per epoch} = \left\lceil \frac{\text{数据集大小}}{\text{batch size}} \right\rceil ] |
四、实际训练中的应用
- 学习率调度:
- 常见策略如 “每 epoch 衰减学习率” 或 “每 iteration 动态调整”,前者适用于全局进度控制,后者适用于细粒度优化。
- 验证时机:
- 通常每完成一个 epoch 进行一次验证(评估模型在验证集上的性能),因为完整过一遍训练集后更能反映模型的整体学习情况。
- 过拟合控制:
- 通过监控每个 epoch 的训练损失和验证损失,可及时停止训练(早停策略),避免过拟合。
五、示例说明
假设训练集有 50,000 张图像,设置 batch size = 64:
- 1 个 epoch 包含的 iterations 数为:[ \frac{50000}{64} \approx 781 \text{ 次迭代} ]
- 若训练 100 个 epochs,则总 iterations 数为:[ 781 \times 100 = 78100 \text{ 次迭代} ]
每个 iteration 中,模型处理 64 张图像,计算损失并更新参数;每完成 781 个 iterations,即完成一个 epoch,此时可记录全局训练进度并进行验证。
总结
- epoch 是训练的宏观单位,衡量数据集的遍历次数;
- iteration 是训练的微观单位,衡量基于 batch 的参数更新次数。
两者结合使用可精准控制训练过程,平衡计算效率和模型性能。

浙公网安备 33010602011771号