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

Pytorch:正在寻找一个函数,可以让我手动设置特定时代间隔的学习速率,pytorch,learning-rate,Pytorch,Learning Rate,例如,对于前100个历元,设置lr=0.01;对于历元101到历元1000,设置lr=0.001;对于历元1001-4000,设置lr=0.0005。基本上,我的学习率计划是不让它以固定的步骤数呈指数衰减。我知道它可以通过自定义函数来实现,只是好奇是否有已经开发的函数来实现这一点。就是您要寻找的。它返回初始学习率的乘数,以便您可以为任何给定的历元指定任何值。举个例子,它是: def lr_lambda(epoch: int): if 100 < epoch < 1000:

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

就是您要寻找的。它返回初始学习率的乘数,以便您可以为任何给定的历元指定任何值。举个例子,它是:

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中,有一些常见的函数,如MultiStepLR或ExponentialLR,但对于您的自定义用例,LambdaLR是最简单的。

是您需要的。它返回初始学习率的乘数,以便您可以为任何给定的历元指定任何值。举个例子,它是:

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中,有一些常见的函数,如MultiStepLR或ExponentialLR,但对于您的自定义用例,LambdaLR是最简单的