【问题标题】:How can I set a minimum learning rate in lr_scheduler LambdaLR?如何在 lr_scheduler LambdaLR 中设置最小学习率?
【发布时间】:2021-07-06 11:17:34
【问题描述】:

我使用LambdaLR 作为学习率函数:

import torch
import torch.nn as nn
import matplotlib.pyplot as plt

model = torch.nn.Linear(2, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
lambda1 = lambda epoch: 0.99 ** epoch
scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lambda1, last_epoch = -1)

lrs = []


for i in range(2001):
    optimizer.step()
    lrs.append(optimizer.param_groups[0]["lr"])
    scheduler.step()

plt.plot(lrs)  

我正在尝试设置最小学习率,使其不会变为 0。我该怎么做?

【问题讨论】:

    标签: python pytorch learning-rate


    【解决方案1】:

    新的学习率总是这样计算的:

    初始学习率是指第一个,而不是最后一个。

    这意味着我们可以写:

    INITIAL_LEARNING_RATE = 0.01
    your_min_lr = 0.0001
    
    lambda1 = lambda epoch: max(0.99 ** epoch, your_min_lr / INITIAL_LEARNING_RATE)
    

    然后当INITIAL_LEARNING_RATE * (0.99 ** epoch) 变得太小时,你会得到your_min_lr,因为INITIAL_LEARNING_RATE * your_min_lr / INITIAL_LEARNING_RATE 等于your_min_lr

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-27
      • 2020-10-22
      • 2016-04-28
      • 2017-08-09
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      相关资源
      最近更新 更多