在培训的同时,我想知道learning_rate的价值。 我该怎么办?
这是我的代码,像这样:
my_optimizer = torch.optim.SGD(my_model.parameters(),
lr=0.001,
momentum=0.99,
weight_decay=2e-3)
谢谢。
答案 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。