Как сохранить не обучаемые переменные в контрольной точке tf.Estimator? - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь включить слой Плотный , который нельзя обучить и инициализировать как единичную матрицу, как часть моего Оценщика тензорного потока.Интуиция заключается в том, чтобы этот плотный слой проходил через свои входные данные во время стандартного обучения и после него выполнялся шаг тонкой настройки.Суть в том, что я не хочу, чтобы эти веса обновлялись вообще во время начального раунда, только во время тонкой настройки.

Я могу сделать несколько вещей, чтобы сделать эти веса необучаемыми, включая использование обучаемого аргумента вПлотный конструктор или отфильтровывая что-либо с плотным именем перед передачей в MomentumOptimizer.compute_gradients ().

Но в любом случае (сделать плотный не обучаемый или просто не передавать его оптимизатору), tf будетвыдает ошибку, говорящую о том, что он не может найти ключ, связанный с плотным слоем.

Я понимаю, что поскольку при первом запуске, когда плотный невозможно обучить, он не будет сохранен в файле контрольных точек.Аналогично, если он отфильтрован от передачи в compute_gradients, то возникает та же проблема.

Есть ли какой-либо метод, позволяющий просто сохранить необученные переменные, даже с их инициализированными значениями, в прогонах?

NotFoundError (см. Выше для отслеживания): плотный ключ / ядро ​​/ импульс не найден в контрольной точке

1 Ответ

0 голосов
/ 27 ноября 2018

Я отвечу на свой вопрос здесь, потому что он не был сразу очевиден для меня, так как документация tf, кажется, не проясняет это.Если вы хотите ввести новую обучаемую переменную, то она должна быть принципиально другой моделью в более поздних.Таким образом, чтобы выполнить точную настройку существующих весов, эти существующие веса в новой модели должны быть определены из настроек теплого старта.

Так что обучайте модель, условно не включая слой тонкой настройки, когда ваш ОценщикФункция модели работает.Обучите существующую модель и затем создайте другую модель, которая является отдельной.Технически это просто означает, что вам нужно использовать новый каталог моделей, но настройки горячего старта должны указывать на модель, которую вы предварительно обучали.

При точной настройке функция вашей модели должна условно включать слои тонкой настройки,но он должен восстановить веса с предыдущего запуска, установив параметры теплого запуска, чтобы посмотреть каталог предыдущей модели.

...