一、PyTorch的六种学习率调整策略
class_LRScheduler
主要属性:
- optimizer:关联的优化器
- last_epoch:记录epoch数
- base_lrs:记录初始学习率
主要方法:
- step():更新下一个epoch的学习率
- get_lr():虚函数,计算下一个epoch的学习率
学习率调整
1、StepLR
功能:等间隔调整学习率
主要参数:
- step_size:调整间隔数
- gamma:调整系数
调整方式:lr = lr * gamma
2、MultiStepLR
功能:按给定间隔调整学习率
主要参数:
milestones:设定调整时刻数
gamma:调整系数
3、ExponetialLR
功能:按指数衰减调整学习率
主要参数:
gamma:指数的底
调整方式:lr = lr * gamma ** epoch
4、CosineAnnealingLR
功能:余弦周期调整学习率
主要参数:
T_max:下降周期
eta_min:学习率下降
调整方式:
5、ReduceLRonPlateau
功能:监控指标,当指标不再变化则调整
主要参数:
mode:min/max 两种模式
factor:调整系数
patience:“耐心”,接受几次不变化
cooldown:“冷却时间”,停止监控一段时间
verbose:是否打印日志
min_lr:学习率下限
eps:学习率衰减最小值
6、LambdaLR
功能:自定义调整策略
主要参数:
lr_lambda:function or list
小结:
1、有序调整:Step、MultiStep、Exponential 和 CosineAnnealing
2、自适应调整:ReduceLROnPleateau
3、自定义调整:Lambda
学习率初始化:
1、设置较小数:0.01、0.001、0.0001
2、搜索最大学习率: