将Tensorflow冻结图转换为UFF以进行TensorRT推理

时间:2019-12-15 16:05:43

标签: tensorflow tensorrt uff

我想在TensorRT(C ++)中使用张量流模型,并且首先需要将.pb转换为.uff格式。执行此代码时:

uff_model = uff.from_tensorflow_frozen_model(
  frozen_file="my_tf_model.pb",
  output_nodes=["output_layer"],
  output_filename="tmp.uff",
  debug_mode=True,
)

我收到此错误消息:

Traceback (most recent call last):
  File "/home/jodo/ILONA/object-detection/ssd/src/uff_converter/uff_converter.py", line 29, in <module>
    text=False,
  File "/home/jodo/miniconda3/envs/uff_converter/lib/python3.7/site-packages/uff/converters/tensorflow/conversion_helpers.py", line 228, in from_tensorflow_frozen_model
    graphdef.ParseFromString(frozen_pb.read())
google.protobuf.message.DecodeError: Error parsing message

导出的图形(my_tf_model.pb)经过训练并使用tensorflow 2.0.0保存。但是对于uff转换器,我必须使用tensorflow 1.15.0。这可能是个问题,还是.pb文件向下兼容?

更新:使用经过训练的模型进行测试,该模型使用与uff Converter相同的版本(1.15.0),并且仍然存在相同的错误。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题: 我的.pb文件不是冻结的图形,而是SavedModel格式的一部分(更多信息[here]

要解决此问题,请执行以下操作:1)将其转换为冻结图并使用冻结图:

python -m tensorflow.python.tools.freeze_graph --input_saved_model_dir SAVED_MODEL_DIR

然后uff.from_tensorflow_frozen_model()应该起作用。