pytorch使用——(十二)学习率调整策略
·
一、基本概念
梯度下降: 𝒘 𝒊+𝟏 = 𝒘 𝒊 − LR * 𝒈(𝒘 𝒊 )
学习率(learning rate)控制更新的步伐
二、 具体方法
1、class _LRScheduler
class _LRScheduler(object):
def __init__(self, optimizer, last_epoch=-1):
def get_lr(self):
raise NotImplementedError
• step():更新下一个epoch的学习率
• get_lr():虚函数,计算下一个epoch的学习率
2、StepLR,功能:等间隔调整学习率
调整方式:lr = lr * gamma
lr_scheduler.StepLR(optimizer, step_size,gamma=0.1, last_epoch=-1)
主要参数:
• step_size:调整间隔数
• gamma:调整系数
3、MultiStepLR,功能:按给定间隔调整学习率
调整方式:lr = lr * gamma
lr_scheduler.MultiStepLR(optimizer,milestones, gamma=0.1, last_epoch=-1)
主要参数:
• milestones:设定调整时刻数
• gamma:调整系数
4、ExponentialLR,功能:按指数衰减调整学习率
调整方式:lr = lr * gamma ** epoch
lr_scheduler.ExponentialLR(optimizer, gamma,last_epoch=-1)
主要参数:
• gamma:指数的底
5、CosineAnnealingLR,功能:余弦周期调整学习率
调整方式:

lr_scheduler.CosineAnnealingLR(optimizer,T_max, eta_min=0, last_epoch=-1
• T_max:下降周期
• eta_min:学习率下限
6、ReduceLRonPlateau,功能:监控指标,当指标不再变化则调整
lr_scheduler.ReduceLROnPlateau(optimizer,mode='min', factor=0.1, patience=10,
verbose=False, threshold=0.0001,threshold_mode='rel', cooldown=0, min_lr=0,
eps=1e-08)
主要参数:
• mode:min/max 两种模式
• factor:调整系数
• patience:“耐心”,接受几次不变化
• cooldown:“冷却时间”,停止监控一段时间
• verbose:是否打印日志
• min_lr:学习率下限
• eps:学习率衰减最小值
7、LambdaLR,功能:自定义调整策略
lr_scheduler.LambdaLR(optimizer, lr_lambda,last_epoch=-1)
三、小结
学习率初始化设置较小数:0.01、0.001、0.0001,搜索最大学习率: 《Cyclical Learning Rates for Training Neural Networks》
- 有序调整:Step、MultiStep、Exponential 和 CosineAnnealing
- 自适应调整:ReduceLROnPleateau
- 自定义调整:Lambda
更多推荐



所有评论(0)