随着 PyTorch C++ API 1.5 稳定版的发布,一些对象接口发生了一些变化。例如,现在
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);
}
如果您没有指定单独的参数组,则只有一个组,您可以按照问题 #35640 - 自最新提交以来如何更改 Adam 学习率中的建议直接设置其学习率?
static_cast<torch::optim::AdamOptions &>(optimizer.param_groups()[0].options()).lr(new_lr)