在tf2之后SavedModel格式成为了默认的模型文件。当前模型是在tf1下训练的frozen.pb文件,为了适应新版本的TensorFlow2,我在本地将此pb文件使用tf1转换为了SavedModel.然后在TensorFlow2模式下推理(当前测试Tensorflow2和tf1的SavedModel文件应该是兼容的)。
import tensorflow as tf
loaded = tf.saved_model.load('savedmodel_path')
infer_func = loaded.signatures['serving_default'] # 这里的签名是默认的。
# 生成输入:{'input_name1':tf.Tensor(input_data1),'input_name2':tf.Tensor(input_data2}
input_dict = {}
# 确定输入名称创建输入数据字典,不确定的话可以通过
# show --dir /tmp/saved_model_path --all 查看输入输出信息
[input_dict.update({inp.name[:-2]:tf.constant(tf.zeros(tuple(map(lambda x:1 if x == None else x,inp.shape.as_list()))),dtype=tf.float32)}) for inp in infer_func.inputs]
output_result = infer_func(**input_dict)