Skip to main content

6.7.1 训练技巧路线图:先诊断,再改东西

训练技巧只有在回答诊断问题时才有用。不要同时改优化器、学习率、模型大小和数据。

先看诊断流程

深度学习训练技巧章节关系图

训练诊断仪表盘图

现象先检查
训练 loss 很高模型太小、学习率太低、数据有问题
训练好、验证差过拟合、泄漏、增强不足
loss 不稳定学习率太高、batch 异常、梯度爆炸
太慢batch size、device、模型大小
部署太重压缩、量化、剪枝

读一段极小 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: 3
best_val_loss: 0.48
action: stop or reduce learning rate if validation keeps worsening

加技巧之前,先读曲线。一段简单日志通常已经能告诉你下一步该试什么。

按这个顺序学

顺序阅读练什么
16.7.2 超参数调优学习率、batch size、优化器
26.7.3 训练诊断loss 曲线、过拟合、不稳定
36.7.4 模型压缩更小、更快、更适合部署的模型

通过标准

能看一条训练/验证曲线,并带理由选择一个下一步动作,就算通过。