python - 如何在 lr_scheduler LambdaLR 中设置最小学习率?

标签 python pytorch learning-rate

我正在使用 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)  

enter image description here

我正在尝试设置一个最小学习率,这样它就不会变为 0。我该怎么做?

最佳答案

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

LRepoch = LRinitial * Lambda(epoch):

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

这意味着我们可以这样写:

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

关于python - 如何在 lr_scheduler LambdaLR 中设置最小学习率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67040362/

相关文章:

python - PyTorch 如何计算二阶雅可比?

python - 在 tensorflow 中正确设置学习率的指数衰减

python - 什么时候调用类装饰器?

对 API URL 的 Python get 请求返回 422 错误,但在浏览器上没有问题。潜在的服务人员问题?

python - __repr__ 应该返回字节还是 unicode?

python - 使用 Flask 无法正确显示图像

machine-learning - pytorch 中的梯度裁剪没有效果(梯度爆炸仍然发生)

python - Longformer 获取last_hidden_​​state