Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Epoch

一个 epoch 指模型完整遍历一次训练数据。了解 epoch 与批次和迭代的关系,以及应该训练多少个 epoch。

一个 epoch 指机器学习模型完整遍历整个训练数据集一次。在一个 epoch 中,每个训练样本都会且仅会对模型权重的更新产生一次影响。深度学习模型很少能通过一次遍历学到足够的内容,因此训练通常会进行许多个 epoch;随着网络不断改进预测结果,训练数据上的误差通常会逐轮下降。

Epoch、批次与迭代#

三个术语描述了训练过程的结构,每个术语都嵌套在前一个术语之中:

  • Epoch:完整遍历一次训练数据集。
  • 批次:在一个步骤中一同处理的一组样本。数据集很少能一次性放入 GPU内存,因此每个 epoch 都会拆分成多个批次,通常会先打乱数据。
  • 迭代:更新一次权重;在一个批次上计算损失函数后,梯度会通过反向传播传回网络。“Step”是它的同义词。

每个 epoch 的迭代次数等于数据集大小除以批次大小,结果向上取整。一个包含 1,000 张图像、批次大小为 100 的数据集,每个 epoch 需要 10 次迭代,因此 50 个 epoch 会产生 500 次权重更新。在 PyTorch中,这种结构表现为两个嵌套循环:外层循环遍历 epoch,内层循环遍历由 DataLoader提供的批次。

import torch
from torch.utils.data import DataLoader, TensorDataset

torch.manual_seed(0)

# 1,000 noisy samples of the line y = 3x + 2, served in shuffled batches of 100
x = torch.rand(1000, 1)
y = 3 * x + 2 + 0.1 * torch.randn(1000, 1)
loader = DataLoader(TensorDataset(x, y), batch_size=100, shuffle=True)

model = torch.nn.Linear(1, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.5)

for epoch in range(5):  # one epoch = one full pass over all 1,000 samples
    for xb, yb in loader:  # 1,000 / 100 = 10 iterations per epoch
        loss = torch.nn.functional.mse_loss(model(xb), yb)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    print(f"Epoch {epoch + 1}: {len(loader)} iterations, last batch loss {loss.item():.4f}")

每个 epoch 都会运行 10 次迭代;随着模型逐渐拟合真实直线,最后一个批次的损失从第一个 epoch 后的 0.1096 降至第五个 epoch 后的 0.0088。训练使用数据增强时,每个 epoch 中的每张图像都会经过全新的变换,因此后续 epoch 会增加多样性,而不是重复完全相同的图像。

如何选择 epoch 数量#

epoch 数量是超参数调优中的主要设置之一。epoch 太少会导致模型欠拟合,在训练数据和验证数据上的误差都很高。epoch 太多则可能导致过拟合:训练损失持续下降,但验证分数停滞或下降,因为模型开始记忆训练样本。合适的数量取决于数据集规模、模型大小、学习率调度,以及训练是否通过迁移学习从预训练权重开始。数据规模也会影响选择:小型视觉数据集通常要训练数百个 epoch,而大型语言模型处理的大部分数据不到一遍;GPT-3在经过筛选的 Common Crawl 数据上完成了 0.44 个 epoch。

早停可以自动决定何时停止。模型每个 epoch 结束后都会在验证数据上评估,并保留最佳检查点;如果验证分数连续达到设定数量的 epoch 没有提升,训练就会结束,这个设定数量称为 patience。

基于 epoch 的训练调度#

除了停止时间之外,许多训练设置也会按 epoch 调整,例如学习率预热和衰减,或数据增强强度。在 Ultralytics YOLO 训练中,epochs 和 patience 的默认值都是 100;学习率会在前 3 个 epoch 中预热,而马赛克增强会在最后 10 个 epoch 关闭(close_mosaic=10),让模型最终接触到外观更接近真实输入的图像。YOLO26 训练方案展示了训练轮数会随模型大小变化多少:在 Objects365上预训练 150 个 epoch 后,针对 COCO的微调对 YOLO26n 进行了 245 个 epoch,对 YOLO26x 则进行了 40 个 epoch。

from ultralytics import YOLO

# 加载预训练的 YOLO26n 模型
model = YOLO("yolo26n.pt")

# 训练 50 个 epoch:完整遍历 COCO8 训练图像 50 次
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)

在这次运行中,训练器会在每个 epoch 后验证 YOLO26模型,每次都会覆盖 last.pt;当验证适应度(检测任务中为 mAP50-95)达到新高时,就会保存 best.pt。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来