使用C ++中的Libtorch 1.5和优化选项更新学习率

时间:2020-06-16 18:28:35

标签: c++ pytorch libtorch

随着PyTorch的C ++ API的1.5稳定版本的发布,某些对象接口有了一些更改。例如,现在

optimizer.options.learning_rate();

将不起作用(此处使用的优化器是Adam),因为learning_rate已更改为lr(请参阅https://github.com/pytorch/pytorch/releases),但是优化器不再具有选项({{1 }}。所以我的问题是:一个会如何运行

no member named 'options' in 'torch::optim::Adam'

或更新学习率

optimizer.options.learning_rate();

使用新版本?任何帮助将不胜感激!谢谢

1 个答案:

答案 0 :(得分:0)

优化器现在的行为与Python相似,并且需要为每个参数组设置学习率。

for (auto param_group : optimizer.param_groups()) {
  # Static cast needed as options() returns OptimizerOptions (base class)
  static_cast<torch::optim::AdamOptions &>(param_group.options()).lr(new_lr);
}

如果您未指定单独的参数组,则只有一个组,您可以按照Issue #35640 - How do you change Adam learning rate since the latest commits?中的建议直接设置其学习率:

static_cast<torch::optim::AdamOptions &>(optimizer.param_groups()[0].options()).lr(new_lr)