地基 · 数学与工程框架入门代码约 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。
独立练习
做到这些,才算完成本节
- 在本地运行代码,打印每个关键张量的 shape。
- 关闭示例后从空文件重写核心部分,并补一个异常或边界测试。
学习记录
记录本节阅读进度
建议先独立回答自测。读完记录不等于已经掌握。