181、Cosine Annealing 学习率衰减的完整代码与 T_max、eta_min 参数调优从一次诡异的loss震荡说起去年秋天调一个YOLOv11的检测头,跑了三天,loss曲线像心电图——前200个epoch稳如老狗,200之后突然开始抽风,每50个epoch来一次尖峰。我盯着WandB的曲线看了半小时,发现每次尖峰都出现在学习率重置的时刻。当时用的是StepLR,每30个epoch降一次,降到1e-6之后又跳回1e-3。这种硬重置带来的梯度冲击,在YOLOv11这种大模型上尤其致命——BN层的running stats会瞬间失调,导致loss爆炸。后来换成Cosine Annealing,问题直接消失。但别以为随便套个余弦衰减就万事大吉,T_max和eta_min这两个参数,调不好照样翻车。下面直接上代码,边写边讲坑。完整可复现的Cosine Annealing实现1. 基础版:直接套PyTorch的CosineAnnealingLRimporttorchfromtorch