1、StepLR

先上API:

# optimizer:优化器
# step_size:每隔多少epoch改变学习率lr
# gamma=0.1:训练到这一部分epoch×上一epoch的lr
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1,last_epoch=-1, verbose=False)

关于gamma=0.1,也就是说1-10个epoch,lr=0.1,则10-20的lr为0.1×0.1;
在这里插入图片描述

2、MultiStepLR

torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones,gamma=0.1, last_epoch=-1, verbose=False)

只对StepLR的API里面的step_size进行改动,变为milestones,milestones可以设置为[10,40,60],即是指前10个epoch的lr为0.1,10-40的epoch为0.1×0.1,40-60的epoch的lr为0.1×0.1×0.1,
在这里插入图片描述

注: 大多数都采用此方法;

3、ExponentialLR

API:

torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma, last_epoch=-1, verbose=False)

在这里插入图片描述
此方法容易造成过早的停止训练,学习率更新方式为: l r = l r × γ e p o c h lr=lr×\gamma^{epoch} lr=lr×γepoch

4、CosineAnnealingLR

API:

torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max,eta_min=0,last_epoch=-1,verbose=False)

学习率更新公式为:在这里插入图片描述
η m i n \eta_{min} ηmin为设定的最小学习率,
η m a x \eta_{max} ηmax为设置的最大学习率,
T m a x T_{max} Tmax为epoch周期的一半,
T c u r T_{cur} Tcur为当前的epoch,
在这里插入图片描述

5、CyclicLR

6、ReduceLROnPlateau

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐