PyTorch -如何在训练中获得学习率?

svmlkihl  于 2022-12-18  发布在  其他
关注(0)|答案(3)|浏览(221)

在训练的时候,我想知道学习率的值,我该怎么做?
这是我的代码,像这样:

my_optimizer = torch.optim.SGD(my_model.parameters(), 
                               lr=0.001, 
                               momentum=0.99, 
                               weight_decay=2e-3)

谢谢你。

hjqgdpho

hjqgdpho1#

仅对于一个参数组(如您给出的示例),您可以使用此函数并在训练期间调用它,以获取当前学习率:

def get_lr(optimizer):
    for param_group in optimizer.param_groups:
        return param_group['lr']
u3r8eeie

u3r8eeie2#

或者,您可以将lr_scheduler与优化器沿着使用,并简单地调用内置的lr_scheduler.get_lr()方法。
下面是一个例子:

my_optimizer = torch.optim.Adam( my_model.parameters(), 
                                 lr = 0.001, 
                                 weight_decay = 0.002)

my_lr_scheduler = torch.optim.lr_scheduler.StepLR( my_optimizer, 
                                                step_size = 50, 
                                                gamma = 0.1)

# train
...
my_optimizer.step()
my_lr_scheduler.step()

# get learning rate
my_lr = my_lr_scheduler.get_lr()
# or
my_lr = my_lr_scheduler.optimizer.param_groups[0]['lr']

使用lr_scheduler的额外好处是可以更好地控制lr随时间的变化; lr_decay等。有关lr_scheduler参数,请参阅pytorch文档。

qf9go6mv

qf9go6mv3#

使用优化器。param_groups[-1]['lr']

相关问题