mmDetection mmSegmentation 使用不同的学习率下降策略

前言

mmcv / mmDetection / mmSegmentation 的官方文档讲的很粗略(2022-04-23), 故写一篇来总结用法。
注: 举例的迭代方式为iter, 使用epoch的话其实是一样的。

版本信息

mmcv 1.4.8
mmsegmentation 0.23.0
注意:该版本较旧,可能与最新版本有较大差异。

下降策略

mmcv中的学习率下降策略有如下几种, 以Hook形式实现, 源码位置在mmcv\runner\hooks\lr_updater.py
https://github.com/open-mmlab/mmcv/blob/9fffcbc9cdc79736b866d17d0243f4eef7b7cadf/mmcv/runner/hooks/lr_updater.py

固定学习率 FixedLrUpdater

学习率固定不下降

阶梯下降 StepLrUpdater

阶梯下降, 需要如下参数:
step 为int或list(int) 单位为iter, 若为int则代表每个阶梯的长度; 若为list(int)则为每个阶梯的位置。
gamma float, 默认为0.1, 每个阶梯对学习率的乘数。
min_lr float, 默认为None, 最小学习率。

i step 的学习率将为base_lr * (gamma**i)

在这里插入图片描述

指数下降 ExpLrUpdater

指数下降
gamma float, 指数的底数。

i iter 的学习率将为base_lr * gamma**i

用法:
在这里插入图片描述

线性下降 PolyLrUpdater

线性下降, 与其他方式不同, 线性下降与最大iter数密切相关。
power float, 默认为1., 指数。
min_lr float, 默认为0., 最小学习率。

i iter 的学习率将为(base_lr - min_lr) * (1 - i/max_iter)**power + min_lr
在这里插入图片描述

反函数下降 InvLrUpdater

反函数下降
gamma float, 底数。
power float, 默认为1., 指数。

i iter 的学习率将为base_lr * (1 + gamma * i)**(-power)
在这里插入图片描述

余弦退火 CosineAnnealingLrUpdater

余弦退火, 该方法也与最大iter数密切相关。
min_lr float, 默认为None, 目标学习率(target_lr)。
min_lr_ratio float, 默认为None, 目标学习率比率, 如指定则目标学习率(target_lr)为基础学习率乘以该比例, 将会覆盖min_lr的设置。

i iter 的学习率将为end + 0.5 * weight * (base_lr - target_lr) * cos(pi * i/max_iter) + 1

target_lr + 0.5 * (base_lr - target_lr) * cos(pi * i/max_iter) + 1

在这里插入图片描述

其他

其他的就不一一列举了, 感兴趣的去看源码: mmcv\runner\hooks\lr_updater.py

配置方法

列举2种常用的学习率下降策略配置方法:

阶梯下降

lr_config = dict(policy='step',
                 step=5000,	 # 每 5000 iter 学习率*0.1
                 min_lr=1e-8,
                 by_epoch=False)

指数下降

lr_config = dict(policy='exp',
                 gamma=0.99954,  # 0.1**(1/5000)  # 近似每 5000 iter 学习率*0.1
                 by_epoch=False)

余弦退火

lr_config = dict(policy='CosineAnnealing',
                 min_lr=1e-8,
                 by_epoch=False)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值