Можно ли скопировать оптимизатор (состояние) из одной модели в другую? [керас, тензор потока] - PullRequest
0 голосов
/ 14 марта 2019

Предполагается, что я создаю модель A, которая имеет аналогичную, но не совсем ту же архитектуру, что и скомпилированная модель B. Могу ли я скомпилировать модель A следующим образом?

model_A.compile(model_B.optimizer,
                loss=model_B.loss,
                metrics=model_B.metrics,
                )

Меня больше всего беспокоит то, что некоторые значения, хранящиеся в оптимизаторе (например, обновления, веса, ...), относятся к архитектуре модели и могут привести к несоответствию. Может кто-нибудь объяснить, что именно происходит, когда я выполняю такую ​​копию? Я не смог извлечь полезную информацию из исходного кода (l37ff) .

P.s .: Состояние оптимизатора также копируется таким образом? Если нет, можете ли вы как-то скопировать его?

1 Ответ

2 голосов
/ 14 марта 2019

Мы можем использовать оптимизатор от одной модели к другой. Большинство оптимизаторов принимает в качестве аргументов скорость обучения, импульс, затухание и т. Д. model.compile инициализирует веса в соответствии с вашим аргументом. Оптимизатор заботится только о том, как ваш убыток распространяется после его расчета.

Мы изменим оптимизатор только для того, чтобы наша модель быстрее сходилась для данных.

Но вы не сможете использовать одну и ту же функцию потерь для разных моделей (модель b может быть mse, а модель a может иметь softmax в качестве своего последнего слоя). То же самое относится и к точности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...