Loading

【深度学习】关于训练过程中的epoch和iter

在深度学习训练过程中,epochiter(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 ]

四、实际训练中的应用

  1. 学习率调度
    • 常见策略如 “每 epoch 衰减学习率” 或 “每 iteration 动态调整”,前者适用于全局进度控制,后者适用于细粒度优化。
  2. 验证时机
    • 通常每完成一个 epoch 进行一次验证(评估模型在验证集上的性能),因为完整过一遍训练集后更能反映模型的整体学习情况。
  3. 过拟合控制
    • 通过监控每个 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 的参数更新次数。
    两者结合使用可精准控制训练过程,平衡计算效率和模型性能。
posted @ 2025-06-17 20:13  SaTsuki26681534  阅读(224)  评论(0)    收藏  举报