keras一般保存为h5py格式的模型,当然也可以直接使用tf.saved_model保存为pb模型,那如果想将保存的h5py模型导出为pb模型该怎么办呢?以下代码就可以完成该项功能。
假设我们保存了keras的模型为model.json(结构)和weights.h5(权重),
首先读取keras模型:
# tensorflow == 1.13.1
import tensorflow as tf
def load_keras_model(model_path, weights_path):
fr = open(model_path, "r")
model_json = fr.read()
fr.close()
model = tf.keras.models.model_from_json(model_json, custom_objects={"tf":tf})
model.load_weights(weights_path)
return model
然后转换tensor name并导出模型:
model_export_dir = "./model/1"
model = load_keras_model("model.json", "weights.h5")
name_to_inputs = {i.name.split(":")[0]:i for i in model.inputs}
name_to_outputs = {i.name:i for i in model.outputs}
print(name_to_inputs)
print(name_to_outputs)
tf.saved_model.simple_save(tf.keras.backend.get_session(),
model_export_dir,
inputs=name_to_inputs,