tf.keras.models.save_model

Saves a model as a TensorFlow SavedModel or HDF5 file.

Used in the notebooks

Used in the guide Used in the tutorials

See the Serialization and Saving guide for details.

Usage:

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))

The SavedModel and HDF5 file contains:

  • the model's configuration (topology)
  • the model's weights
  • the model's optimizer's state (if any)

Thus models can be reinstantiated in the exact same state, without any of the code used for model definition or training.

Note that the model weights may have different scoped names after being loaded. Scoped names include the model/layer names, such as "dense_1/kernel:0". It is recommended that you use the layer properties to access specific variables, e.g. model.get_layer("dense_1").kernel.

SavedModel serialization format

Keras SavedModel uses tf.saved_model.save to save the model and all trackable objects attached to the model (e.g. layers and variables). The model config, weights, and optimizer are saved in the SavedModel. Additionally, for every Keras layer attached to the model, the SavedModel stores:

  • the config and metadata -- e.g. name, dtype, trainable status
  • traced call and loss functions, which are stored as TensorFlow subgraphs.

The traced functions allow the SavedModel format to save and load custom layers without the original class definition.

You can choose to not save the traced functions by disabling the save_traces option. This will decrease the time it takes to save the model and the amount of disk space occupied by the output SavedModel. If you enable this option, then you must provide all c