将 Tensorflow Frozen Graph 转换为 UFF 以进行 TensorRT 推理
Converting Tensorflow Frozen Graph to UFF for TensorRT inference
我想在 TensorRT (C++) 中使用 tensorflow 模型,首先需要将 .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 转换器 (1.15.0) 相同版本训练的模型进行测试,但仍然存在相同的错误。
回答我自己的问题:
我的 .pb 文件不是冻结图,而是 SavedModel 格式的一部分
解决此问题 1) 将其转换为冻结图并使用冻结图:
python -m tensorflow.python.tools.freeze_graph --input_saved_model_dir SAVED_MODEL_DIR
那么 uff.from_tensorflow_frozen_model()
应该可以。
我想在 TensorRT (C++) 中使用 tensorflow 模型,首先需要将 .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 转换器 (1.15.0) 相同版本训练的模型进行测试,但仍然存在相同的错误。
回答我自己的问题: 我的 .pb 文件不是冻结图,而是 SavedModel 格式的一部分
解决此问题 1) 将其转换为冻结图并使用冻结图:
python -m tensorflow.python.tools.freeze_graph --input_saved_model_dir SAVED_MODEL_DIR
那么 uff.from_tensorflow_frozen_model()
应该可以。