Обновление скорости обучения с помощью Libtorch 1.5 и опций оптимизатора в C ++ - PullRequest
0 голосов
/ 16 июня 2020

С выпуском стабильной версии 1.5 C ++ API для PyTorch некоторые изменения в интерфейсах объектов. Например, теперь

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);

в новой версии? Любая помощь будет оценена по достоинству! Спасибо

1 Ответ

0 голосов
/ 17 июня 2020

Оптимизаторы теперь ведут себя как их 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 - Как вы измените скорость обучения Adam с момента последней фиксации? :

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