如何在PyTorch中合并两个学习率调度程序?

时间:2019-10-10 18:22:01

标签: pytorch

我想使用OneCycleLR将LR从较低的值预热,然后使用ReduceLROnPlateau从峰值降低LR。

我了解在使用OneCycleLR增加LR后可以手动模拟ReduceLROnPlateau,但是有一种更简单的方法直接将这两个调度程序一起使用吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

PyToch在github上发布了method,而不是官方指南。

您可以尝试以下代码段:

import torch
from torch.nn import Parameter
from torch.optim import SGD
from torch.optim.lr_scheduler import ExponentialLR, StepLR

model = [Parameter(torch.randn(2, 2, requires_grad=True))]
optimizer = SGD(model, 0.1)

scheduler1 = ExponentialLR(optimizer, gamma=0.9)
scheduler2 = StepLR(optimizer, step_size=5, gamma=0.1)

for epoch in range(10):

    print(epoch, scheduler2.get_last_lr()[0])

    optimizer.step()
    scheduler1.step()
    scheduler2.step()