Google I/O returns May 18-20! Reserve space and build your schedule Register now


Load a SavedModel from export_dir.

Used in the notebooks

Used in the guide Used in the tutorials

Signatures associated with the SavedModel are available as functions:

imported = tf.saved_model.load(path)
f = imported.signatures["serving_default"]

Objects exported with additionally have trackable objects and functions assigned to attributes:

exported = tf.train.Checkpoint(v=tf.Variable(3.))
exported.f = tf.function(
    lambda x: exported.v * x,
    input_signature=[tf.TensorSpec(shape=None, dtype=tf.float32)]), path)
imported = tf.saved_model.load(path)
assert 3. == imported.v.numpy()
assert 6. == imported.f(x=tf.constant(2.)).numpy()

Loading Keras models

Keras models are trackable, so they can be saved to SavedModel. The object returned by tf.saved_model.load is not a Keras object (i.e. doesn't have .fit, .predict, etc. methods). A few attributes and functions are still available: .variables, .trainable_variables and .__call__.

model = tf.keras.Model(...), path)
imported = tf.saved_model.load(path)
outputs = imported(inputs)

Use tf.keras.models.load_model to restore the Keras model.

Importing SavedModels from TensorFlow 1.x

SavedModels from tf.estimator.Estimator or 1.x SavedModel APIs have a flat graph instead of tf.function objects. These SavedModels will be loaded with the following attributes:

  • .signatures: A dictionary mapping signature names to functions.
  • .prune(feeds, fetches): A method which allows you to extract functions for new subgraphs. This is equivalent to importing the SavedModel and naming feeds and fetches in a Session from TensorFlow 1.x.

    imported = tf.saved_model.load(path_to_v1_saved_model)
    pruned = imported.prune("x:0", "out:0")

    See tf.compat.v1.wrap_function for details.

  • .variables: A list of imported variables.

  • .graph: The whole imported graph.

  • .restore(save_path): A function that restores variables from a checkpoint saved from tf.compat.v1.Saver.

Consuming SavedModels asynchronously

When consuming SavedModels asynchronously (the producer is a separate process), the SavedModel directory will appear before all files have been written, and tf.saved_model.load will fail if pointed at an incomplete SavedModel. Rather than checking for the directory, check for "saved_model_dir/saved_model.pb". This file is written atomically as the last file operation.

export_dir The SavedModel directory to load from.
tags A tag or sequence of tags identifying the MetaGraph to load. Optional if the SavedModel contains a single MetaGraph, as for those exported from
options tf.saved_model.LoadOptions object that specifies options for loading.

A trackable object with a signatures attribute mapping from signature keys to functions. If the SavedModel was exported by, it also points to trackable objects, functions, debug info which it has been saved.

ValueError If tags don't match a MetaGraph in the SavedModel.