pytorch中调整学习率: torch.optim.lr_scheduler

文章翻译自: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)

设置每个参数组的学习率为lr *\lambda ^{n},    n=\frac{epoch}{step\_size}      ,当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(...)

-----------------------------------------------------------------------------------------------------------------------------------------------

..................

 

猜你喜欢

转载自blog.csdn.net/Strive_For_Future/article/details/83213971
今日推荐