深度学习进阶文档深度页
学习率调度器
按 epoch、实际参数更新或验证指标改变学习率。
学习目标
- 选择调用单位
- 正确顺序
- 实现 warmup
为什么需要这个概念
step 放错频率会把计划压缩或拉长数十倍。
- 保证学习率曲线正确
- 梯度累积时尤关键
学习前需要掌握
优化器内容待补充学习率内容待补充
背景与问题
step 放错频率会把计划压缩或拉长数十倍。
概念定义
Step/Cosine 常按 epoch,OneCycle 按 update,Plateau 在验证后接收指标。
直观理解
调度步就是你调用 step 的次数,不天然等于 epoch。
核心原理
常规先 optimizer.step 后 scheduler.step;Plateau 例外需要验证指标。
梯度累积时按真实 optimizer update 推进。
数学表达
核心公式
余弦退火。
变量含义
T调度总调用次数t当前调度步
计算步骤
- 1100/4
代码对应位置
示例 1学习率调度器 · PyTorch 示例:验证学习率调度器的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
T | 调度总调用次数 |
t | 当前调度步 |
完整数值示例
梯度累积调度
已知条件
- 100 micro-batch
- 每4批 step
- 1
100/4
每 epoch 推进 25 次
处理前后对比
计算与实现步骤
- 1
确定单位
- 2
构造 scheduler
- 3
训练更新参数
- 4
推进调度
- 5
记录 lr
- 6
保存状态
代码实现
示例 1
学习率调度器 · PyTorch 示例
学习率调度器 · PyTorch 示例
PyTorch
example_01.py用途:验证学习率调度器的输入、计算和输出。
scheduler=torch.optim.lr_scheduler.OneCycleLR(optimizer,max_lr=1e-2,epochs=10,steps_per_epoch=len(loader))
optimizer.step();scheduler.step()代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证学习率调度器的输入、计算和输出。
Step 1 · 1–2 行
按学习率和梯度更新参数。步长过小会缓慢,过大会越过最低点并震荡或发散。
scheduler=torch.optim.lr_scheduler.OneCycleLR(optimizer,max_lr=1e-2,epochs=10,steps_per_epoch=len(loader))
optimizer.step();scheduler.step()代码与数学原理
参数更新由当前梯度与学习率共同决定。
预期输出或运行结果
学习率按 OneCycle 曲线变化。
常见错误 · 4 条
- step 顺序反
- 所有 scheduler 放 epoch 末
- Plateau 不传指标
- 累积每微批推进
实际应用
- 训练收敛
- 微调 warmup
常见错误
step 顺序反
所有 scheduler 放 epoch 末
Plateau 不传指标
累积每微批推进
文档来源
15_优化器与学习率调度进阶原始文档
学习资料/deeplearning/15_优化器与学习率调度进阶.md- §7 调度原因
- §8 顺序
- §9–14 各调度器
- §15 查看 lr
常见问题
StepLR 的 step_size 单位?
scheduler.step 调用次数。
Plateau 何时调用?
验证完成后传入监控指标。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。