mmlab中学习率优化参数整理

mmlab中学习率优化参数整理

optimizer = dict(type='SGD',
                 lr=0.01, 
                 momentum=0.9, 
                 weight_decay=0.0001)
lr_config = dict(
    			policy='CosineAnnealing',
   	 			min_lr=0,
   	 			warmup='linear',
    			warmup_iters=4000,
    			warmup_ratio=0.0001)

优化器optimizer:
链接:https://blog.csdn.net/weixin_39737764/article/details/111231654

***momentum:***上一次梯度更新的权重,一般取值在0.5–0.99之间。通常设为0.9,momentum可以让使用SGD的深度学习方法更加稳定以及快速。

weight_decay: 权重衰减项,防止过拟合的一个参数。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。

在 MMClassification 中,我们同样使用 lr_config 配置学习率预热策略,主要的参数有以下几个:
链接: https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/schedule.html#id11
warmup : 学习率预热曲线类别,必须为 ‘constant’、 ‘linear’, ‘exp’ 或者 None 其一, 如果为 None, 则不使用学习率预热策略。

warmup_by_epoch : 是否以轮次(epoch)为单位进行预热。

warmup_iters : 预热的迭代次数,当 warmup_by_epoch=True 时,单位为轮次(epoch);当 warmup_by_epoch=False 时,单位为迭代次数(iter)。

warmup_ratio : 预测的初始学习率 lr = lr * warmup_ratio。

设置举例:

1,参考:https://mp.weixin.qq.com/s?__biz=MzAxMzc2NDAxOQ==&mid=2650431672&idx=2&sn=c0bce23bd917b8654a5174c23349c0c7&chksm=83935464b4e4dd721331c3a726c17dd421b15945708e1330a054190b578c65e76c5b95d0ff3f&scene=27

lr_config = dict(
    policy='step',
    warmup='linear',
    warmup_iters=500,
    warmup_ratio=0.001,
    step=[8, 9])
total_epochs = 15

说明:
policy: 这里学习率采用多阶段调整的策略。

warmup: 学习率预热的类型,用于初始时稳定训练过程,可选 constant, linear 或 exp。

warmup_iters: 预热的迭代次数。

warmup_ratio: 预热学习率与比值,当使用linear类型时,在初始的迭代次数里,使用1 - (1 - cur_iters / warmup_iters) * (1 - warmup_ratio) 获取当前迭代轮次的学习率,因此越靠前的轮次学习率越小,更多细节可见 MMCV 的 lr_updater.py。

step=[8, 9]: 分别在第 8 和第 9 个 epoch 之后将学习率降为之前的 0.1。

total_epochs = 15: 与原论文不一样的是,这里一共训练 15 个 epochs。

lr_updater.py 链接:
https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/lr_updater.py

你可能感兴趣的:(MMLab学习,学习,人工智能)