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

Updating learning rate with Libtorch 1.5 and optimiser options in C++

随着 PyTorch 的 1.5 稳定版 C++ API 的发布,一些对象接口发生了一些变化。例如,现在

optimizer.options.learning_rate();

将不起作用(这里使用的优化器是 Adam),因为 learning_rate 已更改为 lr(参见 https://github.com/pytorch/pytorch/releases),而且优化器不再具有选项(no member named 'options' in 'torch::optim::Adam').所以我的问题是:如何 运行

optimizer.options.learning_rate();

或更新学习率

optimizer.options.learning_rate(updatedlearningrate);

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

优化器现在的行为与 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)