export_saved_model из TF2 сохраняет также веса? - PullRequest
1 голос
/ 22 мая 2019

Я создал, скомпилировал и установил модель с помощью tf.keras, используя последнюю версию TF2.0a . Теперь я хочу сохранить это как pb для последующего использования для вывода.

Я использую:

import time
saved_model_path = "./models/pb/experimental/{}".format(int(time.time()))

tf.keras.experimental.export_saved_model(model, saved_model_path)
saved_model_path

как хорошо описано здесь под точкой как сохраненная_модель

model - это модель, которую я ранее создал / скомпилировал / установил

Теперь мои вопросы,

  1. как export_saved_model узнает, какие веса сохранить? Или это спасает вес от прошлой эпохи?

  2. следуя этой логике, лучше всего загрузить лучшую модель с вашей контрольной точки и затем использовать функцию экспорта?

  3. Add on Вопрос: существует ли обратный вызов, который функционирует в качестве контрольной точки модели из keras, но с этой функцией экспорта? создание pb файлов лучшей модели.

1 Ответ

1 голос
/ 27 мая 2019

Вы можете посмотреть здесь: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/keras/saving/saved_model.py

1) Keras сохраняет модель с последней контрольной точкой, которые фактически являются весами последней эпохи.

Цитировать из источника:

SavedModel содержит:

  1. контрольную точку, содержащую веса модели.

  2. a SavedModel прото с внутренним графом Tensorflow.Отдельные графики сохраняются для прогнозирования (подачи), обучения и оценки.Если модель не была скомпилирована, то будут экспортированы только прогнозы вычислений на графике.

  3. json config модели.Если модель подкласса, она будет включена только в том случае, если метод модели get_config() будет перезаписан.

2) На мой взгляд, лучший способ - это всегда разделять модельархитектура и вес при сохранении и загрузке.Другими словами: да, загрузите веса из лучшей модели.

3) Нет, сейчас нет обратного вызова, который экспортирует всю модель в pb.Так что либо воспользуйтесь обратным вызовом «ModelCheckpoint» и загрузите оптимальные веса впоследствии, либо создайте свой собственный обратный вызов с помощью «LambdaCallback».

Надеюсь, это поможет!

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