Промежуточный градиент при оптимизации

Во время обучения модели GP с помощью GPFlow я заинтересован в наблюдении за градиентами, заданными ScipyOptimizer. Я хотел бы связать эти градиенты с другими моделями GP. У кого-нибудь есть какие-либо рекомендации относительно того, как вывести эти тензоры до того, как они будут переданы оптимизатору?

1 ответ

Я не думаю, что есть способ достичь этого без взлома исходного кода gpflow. Самым простым решением, вероятно, является редактирование loss_grad_func_wrapper функция определена внутри ScipyOptimizerInterface._minimize в gpflow/training/external_optimizer.py - он получает значения всех обучаемых параметров x, потери и градиенты - хотя обратите внимание, что это упакованные параметры (т.е. один массив всех параметров) - вам придется вручную разбить их на значения / градиенты на тензор... или взломать eval_func(x) в ExternalOptimizerInterface, который выполняет распаковку, обновляет feed_dict, запускает расчет градиента и упаковывает результаты... Надеюсь, это даст вам хотя бы отправную точку!

Другие вопросы по тегам