prereq
bazel build tensorflow/python/tools:freeze_graph
import argparse
ap = argparse.ArgumentParser()
ap.add_argument('--input', required=True)
ap.add_argument('--output', default="/tmp/model/ckpt")
args = ap.parse_args()
from keras import backend as K
from keras.models import load_model
import tensorflow as tf
K.set_learning_phase(0)
# create model and load weights or ...
# model = create_model()
# model.load_weights(args.input)
# ... load h5 model
load_model(args.input)
saver = tf.train.Saver()
saver.save(K.get_session(), args.default)
print("Output node needed in freeze_graph: %s" % model.output.op.name)
print("Model created in: %s" % args.output)
result
/tmp/model ├── checkpoint ├── ckpt.data-00000-of-00001 ├── ckpt.index └── ckpt.meta
freeze
bazel-bin/tensorflow/python/tools/freeze_graph \ --input_meta_graph=/tmp/model/ckpt.meta \ --input_checkpoint=/tmp/model/ckpt \ --output_graph=frozen_graph.pb \ --input_binary \ --output_node_names="previous output node name"