Почему мы должны упомянуть функцию потерь в функции Keras load_model? - PullRequest
0 голосов
/ 23 декабря 2018

Я создал модель Keras с помощью пользовательской функции потерь и сохранил ее.Когда я перезагружал обученную модель, используя функцию Keras load_model(), чтобы сделать прогноз, мне пришлось передать пользовательскую функцию потерь в аргумент custom_objects:

new_model=load_model('yolo_1.model',custom_objects={'custom_loss':custom_loss}) 

Мой вопрос заключается в том, почему мы должны упомянутьпользовательская функция потери в load_model()?Я думаю, что функция потерь не нужна в процессе прогнозирования.

1 Ответ

0 голосов
/ 23 декабря 2018

Это потому, что аргумент include_optimizer метода save по умолчанию установлен на True.Следовательно, оптимизатор, а также функция потерь будут сохранены, и в результате они будут загружены при использовании функции load_model.

Однако, если вы хотите использовать свою модель только для прогнозирования, тогда вы быне нужно сохранять оптимизатор и поэтому при сохранении модели установите include_optimizer на False:

model.save('my_model.h5', include_optimizer=False)

Таким образом, оптимизатор и используемая функция потерь не будут сохранены и, следовательно, вам не понадобитсячтобы указать пользовательскую функцию потерь, которую вы использовали при загрузке модели.

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