Pytorch:正在寻找一个函数,让我可以手动设置特定时期间隔的学习率



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

torch.optim.lr_scheduler.LambdaLR就是您想要的。它返回初始学习率的multiplier,因此您可以为任何给定的epoch指定任何值。例如:

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是最简单的。

相关内容

  • 没有找到相关文章

最新更新