You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch中MoCo项目阶梯式学习率调度器实现逻辑疑问

MoCo阶梯学习率调度器逻辑疑问解答

你的理解有误,核心是漏看了函数开头的初始化逻辑:每次调用adjust_learning_rate时,第一步都会执行lr = args.lr将学习率重置为初始设定值,并不是基于上一轮的学习率做累乘计算。

我们以默认参数schedule=[120,160]为例拆解实际计算逻辑:

  • 当epoch <120时,两个milestone都不满足判断条件,最终lr=初始lr * 1 * 1 = 初始lr
  • 当120 ≤ epoch <160时,仅满足第一个milestone的判断条件,最终lr=初始lr * 0.1 * 1 = 初始lr的1/10
  • 当epoch ≥160时,两个milestone都满足判断条件,最终lr=初始lr * 0.1 * 0.1 = 初始lr的1/100

完全符合阶梯式学习率仅在milestone节点跳变、其余阶段保持固定的预期,不会出现每轮epoch都重复衰减的问题。

如果把判断条件改为epoch == milestone,反而会引入很多问题:

  • 需要额外维护全局的lr变量,不能每次调用都初始化
  • 训练中断恢复时,如果恢复的epoch已经超过了milestone,就会永远错过该次衰减,逻辑鲁棒性远差于原实现
  • 若函数被重复调用多次,还会出现同个milestone重复衰减的问题

内容的提问来源于stack exchange,提问作者AJW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:00:02