tf.keras.models.save_model
| Просмотр исходного кода на GitHub |
Сохраняет модель как файл TensorFlow SavedModel или HDF5.
tf.keras.models.save_model(
model, filepath, overwrite=True, include_optimizer=True, save_format=None,
signatures=None, options=None, save_traces=True
)
См. Руководство по сериализации и сохранению для получения подробной информации.
Использование:
model = tf.keras.Sequential([
tf.keras.layers.Dense(5, input_shape=(3,)),
tf.keras.layers.Softmax()])
model.save('/tmp/model')
loaded_model = tf.keras.models.load_model('/tmp/model')
x = tf.random.uniform((10, 3))
assert np.allclose(model.predict(x), loaded_model.predict(x))
Файл SavedModel и HDF5 содержат:
- конфигурацию модели (топологию)
- веса модели
- состояние оптимизатора модели (при необходимости)
Таким образом, модели могут быть повторно созданы в точно таком же состоянии без какого-либо кода, используемого для определения или обучения модели.
Обратите внимание, что веса модели могут иметь разные имена в области видимости после загрузки. Имена области видимости включают имена модели/слоя, такие как "dense_1/kernel:0". Рекомендуется использовать свойства слоя для доступа к конкретным переменным, например model.get_layer("dense_1").kernel.
Формат сериализации SavedModel
Keras SavedModel использует tf.saved_model.save для сохранения модели и всех отслеживаемых объектов, прикрепленных к модели (например, слоев и переменных). Конфигурация модели, веса и оптимизатор сохраняются в SavedModel. Кроме того, для каждого Keras слоя, прикрепленного к модели, SavedModel хранит:
- конфигурацию и метаданные — например, имя, тип данных, состояние обучаемости
- отслеженные функции вызова и потери, которые хранятся как подграфы TensorFlow.
Отслеженные функции позволяют формату SavedModel сохранять и загружать пользовательские слои без исходного определения класса.
Вы можете выбрать не сохранять отслеженные функции, отключив save_traces параметр. Это уменьшит время сохранения модели и объем места на диске, занимаемый выходным SavedModel. Если вы включите этот параметр, вам необходимо предоставить все пользовательские определения классов при загрузке модели. См. параметр custom_objects в tf.keras.models.load_model.
| Аргументы | |
|---|---|
model | Экземпляр Keras модели, который нужно сохранить. |
filepath | Одно из следующего:
|
overwrite | Нужно ли перезаписывать существующую модель по указанному пути или вместо этого запросить у пользователя подтверждение вручную. |
include_optimizer | Если True, сохранить состояние оптимизатора вместе с моделью. |
save_format | 'tf' или 'h5', указывает, сохранить ли модель в формате Tensorflow SavedModel или HDF5. По умолчанию 'tf' в TF 2.X и 'h5' в TF 1.X. |
signatures | Подписи для сохранения с SavedModel. Применимо только к формату 'tf'. Подробности см. в параметре signatures в tf.saved_model.save. |
options | (только для формата SavedModel) tf.saved_model.SaveOptions объект, определяющий параметры сохранения в SavedModel. |
save_traces | (только для формата SavedModel) При включении SavedModel будет хранить следы функций для каждого слоя. Это можно отключить, так что будут сохранены только конфигурации каждого слоя. По умолчанию True. Отключение этого сократит время сериализации и уменьшит размер файла, но требует, чтобы все пользовательские слои/модели реализовывали метод get_config(). |
| Возможные исключения | |
|---|---|
ImportError | Если формат сохранения — hdf5, а h5py недоступен. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/keras/models/save_model