← 课程库
地基 · 数学与工程框架入门代码14 分钟

训练循环骨架:DataLoader、损失、反向传播

把所有零件拼成一个能训练的循环

学完这节你能:
  • 记住标准训练循环的五步
  • 理解 optimizer.zero_grad 为什么必须
  • 会读一个最小训练脚本

所有深度学习训练,无论多大,骨架都一样:取一批数据 → 前向算损失 → 反向求梯度 → 优化器更新 → 清零梯度。背下这五步,你就看得懂任何训练脚本。

标准训练循环
for epoch in range(epochs):
    for x, y in dataloader:          # 1. 取一批数据
        pred = model(x)              # 2. 前向
        loss = loss_fn(pred, y)      # 3. 算损失
        optimizer.zero_grad()        # 4. 清空上一步的梯度
        loss.backward()             # 5. 反向求梯度
        optimizer.step()            # 6. 更新参数

⚠️ 最常见的 bug:忘了 optimizer.zero_grad()。PyTorch 的梯度是「累加」的,不清零就会把每一步的梯度叠在一起,训练直接崩。

自测训练循环里 optimizer.zero_grad() 的作用是:
// 带走一句话

训练五步:取数据→前向算损失→zero_grad→backward→step;忘清零梯度是头号 bug。

独立练习

做到这些,才算完成本节

  1. 在本地运行代码,打印每个关键张量的 shape。
  2. 关闭示例后从空文件重写核心部分,并补一个异常或边界测试。
学习记录

记录本节阅读进度

建议先独立回答自测。读完记录不等于已经掌握。

继续下一课
← 上一课
PyTorch 入门:张量、autograd、nn.Module
下一课 →
机器学习流程:预处理 → 训练 → 验证 → 测试

学完不要急着赶进度:去练习自测,或完成对应的阶段实验