Openmmlab学习率调度器用法

Openmmlab系列中,如果整个训练过程只需要使用一个学习率调度器, 那么和 PyTorch 自带的学习率调度器没有差异。比如:

param_scheduler = MultiStepLR(optimizer, milestones=[8, 11], gamma=0.1)

如果整个训练过程需要多个调度器一起使用,只需将配置文件中的 scheduler 字段修改为一组调度器配置的列表,SchedulerStepHook 可以自动对调度器列表进行处理。比如:

param_scheduler = [
# 线性学习率预热调度器
dict(type='LinearLR',
start_factor=0.001,
by_epoch=False, # 按迭代更新学习率
begin=0,
end=50), # 预热前 50 次迭代
# 主学习率调度器
dict(type='MultiStepLR',
by_epoch=True, # 按轮次更新学习率
milestones=[8, 11],
gamma=0.1)
]

如果init_lr=4.8,那么线性学习率预热调度器在0到50个epoch,将学习率从init_lr*start_factor线性增加到init_lr。

就算调度器配置列表里面只有一个调度器,也被认定为预热调度器。

在MMSelfSup中,由于我一开始不知道调度器配置列表的用法,将上述的第二个调度器配置删掉了,导致训练过程全是线性学习率预热过程,学习率一直增加。在此记录下错误。

参考优化器参数调整策略(Parameter Scheduler) — mmengine 0.10.3 文档

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值