文章翻译自:https://pytorch.org/docs/stable/optim.html
torch.optim.lr_scheduler 中提供了基于多种epoch数目调整学习率的方法.
torch.optim.lr_scheduler.ReduceLROnPlateau :允许基于一些验证测量对学习率进行动态的下降
----------------------------------------------------------------------------------------------------------------------
class torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda,last_epoch=-1)
将每一个参数组的学习率设置为初始学习率lr的某个函数倍.当last_epoch=-1时,设置初始学习率为lr.
参数:
optimizer(Optimizer对象)--优化器
lr_lambda(是一个函数,或者列表(list))--
当是一个函数时,需要给其一个整数参数,使其计算出一个乘数因子,用于调整学习率,通常该输入参数是epoch数目
或者是一组上面的函数组成的列表,
last_epoch(int类型):最后一次epoch的索引,默认为-1.
示例:
# 假设有两组个参数组
lambda1 = lambda epoch:epoch // 30
lanbda2 = lambda epoch:0.95**epoch
scheduler = LambdaLR(optimizer,lr_lambda=[lambdda1,lambda2])
for epoch in range(100):
scheduler.step()
train(...)
validate(...)
--------------------------------------------------------------------------------------------------------------------
class torch.optim.lr_scheduler.StepLR(optimizer,step_size,gamma=0.1,last_epoch=-1)
设置每个参数组的学习率为, ,当last_epoch=-1时,令lr=lr
参数:
optimizer(Optimizer对象)--优化器
step_size(整数类型): 调整学习率的步长,每过step_size次,更新一次学习率
gamma(float 类型):学习率下降的乘数因子
last_epoch(int类型):最后一次epoch的索引,默认为-1.
示例:
>>> # Assuming optimizer uses lr = 0.05 for all groups
>>> # lr = 0.05 if epoch < 30
>>> # lr = 0.005 if 30 <= epoch < 60
>>> # lr = 0.0005 if 60 <= epoch < 90
>>> # ...
>>> scheduler = StepLR(optimizer, step_size=30, gamma=0.1)
>>> for epoch in range(100):
>>> scheduler.step()
>>> train(...)
>>> validate(...)
-----------------------------------------------------------------------------------------------------------------------------------------------
..................