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

时间:2018-10-05 08:01:34

标签: python machine-learning deep-learning pytorch

在培训的同时,我想知道learning_rate的价值。 我该怎么办?

这是我的代码,像这样:

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

谢谢。

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

或者,您可以将 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 docs

相关问题