目录
一、StepLR
二、MultiStepLR
三、ExponentialLR
四、CosineAnnealingLR
五、ReduceLRonPlateau
六、LambdaLR
小结:学习率调整
一、StepLR
optimizer = torch.optim.SGD(model.parameters(), lr=learn_rate)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer,step_size=10,gamma=0.1) # 选定调整方法
①torch.optim.lr_scheduler.StepLR(optimizer,step_size=50,gamma=0.1)即:【等间隔调整学习率】,每经过step_size个epoch,做一次学习率decay,以gamma值为缩小倍数。
参数:
optimizer 是之前定义好的需要优化的优化器的实例名
step_size 是学习率衰减的周期;每经过每个epoch,做一次学习率decay
gamma 学习率衰减的乘法因子;默认为:0.1
例如:
二、MultiStepLR
optimizer = torch.optim.SGD(model.parameters(), lr=learn_rate)
scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer,milestones=[25,30,35],gamma=0.1)
②scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer,milestones=[25,30,35],gamma=0.1)
即:【按照给定的间隔,调整学习率】
参数: milestones 设置调整的里程数 (以数组的形式)
三、ExponentialLR
optimizer = torch.optim.SGD(model.parameters(), lr=learn_rate)
scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer,gamma=0.95)
③scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer,gamma=0.95) 即:【按指数衰减调整学习率】 参数:gamma:指数的底数 (通常会设置接近于1的数) 调整方式:lr = lr * gamma**epoch
四、CosineAnnealingLR
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=10,eta_min=0.)
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=20,eta_min=0.) 即:【预先周期调整学习率】 参数:T_max:下降周期 eta_min: 学习率下限
五、ReduceLRonPlateau
六、LambdaLR
scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda=lambda1)
小结:学习率调整
1、有序调整:Step、MultiStep、Exponential和CosineAnnealing
2、自适应调整:ReduceLROnPleateau
3、自定义调整:Lambda
tips:
学习率初始化:设置较小数:0.01、0.001、0.0001