6.7.1 训练技巧路线图:先诊断,再改东西
训练技巧只有在回答诊断问题时才有用。不要同时改优化器、学习率、模型大小和数据。
先看诊断流程
Section titled “先看诊断流程”

| 现象 | 先检查 |
|---|---|
| 训练 loss 很高 | 模型太小、学习率太低、数据有问题 |
| 训练好、验证差 | 过拟合、泄漏、增强不足 |
| loss 不稳定 | 学习率太高、batch 异常、梯度爆炸 |
| 太慢 | batch size、device、模型大小 |
| 部署太重 | 压缩、量化、剪枝 |
读一段极小 loss 记录
Section titled “读一段极小 loss 记录”创建 training_tips_first_loop.py。
val_loss = [0.62, 0.51, 0.48, 0.49, 0.53]best_epoch = min(range(len(val_loss)), key=val_loss.__getitem__) + 1
print("best_epoch:", best_epoch)print("best_val_loss:", val_loss[best_epoch - 1])print("action: stop or reduce learning rate if validation keeps worsening")预期输出:
best_epoch: 3best_val_loss: 0.48action: stop or reduce learning rate if validation keeps worsening
加技巧之前,先读曲线。一段简单日志通常已经能告诉你下一步该试什么。
按这个顺序学
Section titled “按这个顺序学”| 顺序 | 阅读 | 练什么 |
|---|---|---|
| 1 | 6.7.2 超参数调优 | 学习率、batch size、优化器 |
| 2 | 6.7.3 训练诊断 | loss 曲线、过拟合、不稳定 |
| 3 | 6.7.4 模型压缩 | 更小、更快、更适合部署的模型 |
训练技巧小章结束后,保留一条诊断决策记录:
- 可见症状
- 曲线或输出显示了什么?
- 首次检查
- 数据、形状、梯度,或验证集划分
- 单一变更
- 哪个单个设置发生了变化?
- 前后对比
- 指标或工件的比较
- 决策
- 保留、调整、回滚或调查
能看一条训练/验证曲线,并带理由选择一个下一步动作,就算通过。
检查思路与讲解
- 合格答案要把 tensor、模型层、loss、
backward()和 optimizer 更新连成一个训练闭环。 - 证据应包含可运行的小实验、tensor shape 检查,以及能解释的 loss 或验证曲线。
- 自检时要能指出一个失败模式,例如 shape 不匹配、loss 不下降、过拟合、数据泄漏,或只会说 Attention/Transformer 名词却讲不出数据流。