Keras to TensorFlow
keras_to_tensorflow.py is a tool that converts a trained keras model into a ready-for-inference TensorFlow model.
In the default behaviour, this tool freezes the nodes (converts all TF variables to TF constants), and saves the inference graph and weights into a binary protobuf (.pb) file. During freezing, TensorFlow also applies node pruning which removes nodes with no contribution to the output tensor.
This tool supports multiple output networks and enables the user to rename the output tensors via the
--output_meta_ckptflag is set, the checkpoint and metagraph files for TensorFlow will also be exported which can later be used in the
tf.train.Saverclass to continue training.
How to use
Keras models can be saved as a single [
h5] file, which stores both the architecture and weights, using the
This model can be then converted to a TensorFlow model by calling this tool as follows:
python keras_to_tensorflow.py --input_model="path/to/keras/model.h5" --output_model="path/to/save/model.pb"
Keras models can also be saved in two separate files where a [
h5] file stores the weights, using the
model.save_weights() function, and another
.json file stores the network architecture using the
In this case, the model can be converted as follows:
python keras_to_tensorflow.py --input_model="path/to/keras/model.h5" --input_model_json="path/to/keras/model.json" --output_model="path/to/save/model.pb"
python keras_to_tensorflow.py --help
to learn about other supported flags (quantize, output_nodes_prefix, save_graph_def).
The code on how to freeze and save keras models in previous versions of tensorflow is also available. Back then, the freeze_graph tool (
/tensorflow/python/tools/freeze_graph.py) was used to convert the variables into constants. This functionality is now handled by