TensorFlow Hub hosts models for a variety of tasks. Models for the same task are encouraged to implement a common API so that model consumers can easily exchange them without modifying the code that uses them, even if they come from different publishers.
The goal is to make exchanging different models for the same task as simple as switching a string-valued hyperparameter. With that, model consumers can easily find the best one for their problem.
Reusable SavedModel: the common foundation
The Reusable SavedModel API defines general conventions how to load a SavedModel back into a Python program and reuse it as part of a bigger TensorFlow model.
obj = hub.load("path/to/model") # That's tf.saved_model.load() after download. outputs = obj(inputs, training=False) # Invokes the tf.function obj.__call__.
For Keras users, the
hub.KerasLayer class relies on this API to wrap the
Reusable SavedModel as a Keras Layer (shielding Keras users from its details),
with inputs and outputs according to the task-specific APIs listed below.
These refine the Reusable SavedModel API with conventions for particular ML tasks and types of data.