【问题标题】:Pytorch: looking for a function that let me to manually set learning rates for specific epochs intervalsPytorch:寻找一个功能,让我手动设置特定时期间隔的学习率
【发布时间】:2020-08-11 20:28:12
【问题描述】:

例如,设置前 100 个 epoch 的 lr = 0.01,从 epoch 101 到 epoch 1000 的 lr = 0.001,对于 epoch 1001-4000,lr = 0.0005。基本上我的学习率计划不会让它以固定的步数呈指数衰减。我知道它可以通过自定义函数来实现,只是好奇是否已经开发了这样做的函数。

【问题讨论】:

    标签: pytorch learning-rate


    【解决方案1】:

    torch.optim.lr_scheduler.LambdaLR 是您正在寻找的。它返回初始学习率的multiplier,因此您可以为任何给定的时期指定任何值。对于您的示例,它将是:

    def lr_lambda(epoch: int):
        if 100 < epoch < 1000:
            return 0.1
        if 1000 < epoch 4000:
            return 0.05
    
    # Optimizer has lr set to 0.01
    scheduler = LambdaLR(optimizer, lr_lambda=[lambda1, lambda2])
    for epoch in range(100):
        train(...)
        validate(...)
        optimizer.step()
        scheduler.step()
    

    在 PyTorch 中有一些常用功能(如 MultiStepLRExponentialLR),但对于自定义用例(如您的),LambdaLR 是最简单的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 2020-11-16
      • 2020-03-19
      • 1970-01-01
      • 2020-03-19
      • 2021-10-13
      • 2022-06-29
      • 1970-01-01
      相关资源
      最近更新 更多