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))
Обратите внимание, что model.save() является псевдонимом для tf.keras.models.save_model().
Файл 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 недоступен. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/models/save_model