torch.optim.lr_scheduler.ExponentialLR
torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma, last_epoch=-1)
每个epoch按指数衰减 lr。
74ad498dc056760839e046a74f403e65.png
ExponentialLR
torch.optim.lr_scheduler.CosineAnnealingLR
torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1)
按照三角函数规则来更新学习率。
表示最小学习率, 即正弦函数最低点
表示最大学习率, 设置为initial_Ir (在last_epoch=-1 时, 即为Ir)。
表示当前epoch数
表示 个 周期所对应的epoch数值
411d725ccd77483de09be33396c04f44.png
CosineAnnealingLR
torch.optim.lr_scheduler.ReduceLROnPlateau
torch.optim.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:(str),从(min, max)中选择。
min:如果指定量不再下降,就减小lr
max:如果指定量不再上升,就减小lr
factor:(float),衰减因子,每次更新lr = lr * factor
patience:(int),容忍度,如果经过patience次迭代后,指标没有变化(上升或下降),就更新lr。
verbose:(bool),每次更新lr,是否向std输出。
threshold:(float),阈值,对于制定的指标只有超过阈值才算有变化
threshold_mode:(str),从(rel,abs)总选择。性能衡量方式。
max模式下:dynamic_threshold = best + threshold
min模式下:dynamic_threshold = best - threshold
max模式下:dynamic_threshold = best * ( 1 + threshold )
min模式下:dynamic_threshold = best * ( 1 - threshold )
rel:
abs:
cooldown:(int),每次调整lr之后,冷却cooldown个epoch,避免lr下降过快
min_lr:(float or list),学习率最小值。如果给定一个标量值,就param_groups中所有组都设置该最小值;也可以用一个list为每组指定一个最小值。
eps:(float),lr变化最小值,如果lr的两次变化差距小于eps,则忽略这次变化。