tensorflow新API:TensorRT创建\u推理\u图形错误
我有一个用于目标检测的自定义更快的R-CNN网络,其中我定义了一些自定义操作符:tensorflow新API:TensorRT创建\u推理\u图形错误,tensorflow,tensorrt,Tensorflow,Tensorrt,我有一个用于目标检测的自定义更快的R-CNN网络,其中我定义了一些自定义操作符:nms和roi\u pooling,它们被编译成。so文件。.so文件被包装,可由tensorflow框架调用 将tensorflow冻结图转换为.pb文件后,我使用以下代码: trt_graph = trt.create_inference_graph(graph_def, OUTPUT_NAMES, max_batch_size=c
nms
和roi\u pooling
,它们被编译成。so
文件。.so
文件被包装,可由tensorflow框架调用
将tensorflow冻结图转换为.pb
文件后,我使用以下代码:
trt_graph = trt.create_inference_graph(graph_def, OUTPUT_NAMES,
max_batch_size=cfg.test_batch_per_gpu,
max_workspace_size_bytes=5000000000,
precision_mode="FP16") # Get optimized graph
但它报告了很多警告和错误:
2018-04-25 23:45:54.451261: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:0 due to: "Invalid argument: Failed to create Input layer" SKIPPING......( 30 nodes)
2018-04-25 23:45:54.452898: E tensorflow/contrib/tensorrt/log/trt_logger.cc:38] DefaultLogger Parameter check failed at: ../builder/Network.cpp::addInput::377, condition: isValidDims(dims)
2018-04-25 23:45:54.452914: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:1 due to: "Invalid argument: Failed to create Input layer" SKIPPING......( 23 nodes)
2018-04-25 23:45:54.455730: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:2 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.457270: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:3 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp_1" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.458798: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:4 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp_5" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.460327: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:5 due to: "Unimplemented: Require 4 dimensional input. Got 1 resnet_v1_50_5/strided_slice_60" SKIPPING......( 6 nodes)
2018-04-25 23:45:54.461882: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:6 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp_6" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.463425: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:7 due to: "Unimplemented: Require 4 dimensional input. Got 1 resnet_v1_50_5/strided_slice_6" SKIPPING......( 6 nodes)
2018-04-25 23:45:54.464976: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:8 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/ones_2" SKIPPING......( 4 nodes)
2018-04-25 23:45:54.466543: E tensorflow/contrib/tensorrt/log/trt_logger.cc:38] DefaultLogger Parameter check failed at: ../builder/Network.cpp::addInput::377, condition: isValidDims(dims)
2018-04-25 23:45:54.466571: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:9 due to: "Invalid argument: Failed to create Input layer" SKIPPING......( 33 nodes)
2018-04-25 23:45:54.468105: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:10 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/ones_1" SKIPPING......( 3 nodes)
2018-04-25 23:45:54.469726: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:11 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp_7" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.471356: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:12 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/ones_3" SKIPPING......( 4 nodes)
2018-04-25 23:45:54.473207: E tensorflow/contrib/tensorrt/log/trt_logger.cc:38] DefaultLogger Parameter check failed at: ../builder/Network.cpp::addInput::377, condition: isValidDims(dims)
2018-04-25 23:45:54.473259: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:13 due to: "Invalid argument: Failed to create Input layer" SKIPPING......( 380 nodes)
2018-04-25 23:45:54.475765: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:14 due to: "Unimplemented: Require 4 dimensional input. Got 1 resnet_v1_50_5/strided_slice_8" SKIPPING......( 6 nodes)
...
这个错误的原因是什么?如何解决这个问题?谢谢。如果您的输入节点未正确注册,则会发生这种情况。请确保您使用了正确的输入节点名称,您可以在会话中将tf graph中的节点名称打印为
print([n.name for n in tf.get_default_graph().as_graph_def().node])
有关详细信息,请参阅nvidia开发者论坛,如果您的输入节点未正确注册,则会发生这种情况。请确保您使用了正确的输入节点名称,您可以在会话中将tf图中的节点名称打印为print([n.name for n in tf.get_default_graph().as_graph_def().node])
有关详细信息,请参阅nvidia开发者论坛,这可能是因为TensorRT在优化图形时需要知道所有张量的大小。一个可能的修复方法是为更快的rcnn模型指定一个固定的输入图像张量大小,例如,对模型配置文件进行以下修改
原来:
faster_rcnn {
num_classes: 90
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 600
max_dimension: 1024
}
}
......
修改:
faster_rcnn {
num_classes: 90
image_resizer {
fixed_shape_resizer {
height: 600
width: 1024
}
}
......
参考资料:这可能是因为TensorRT要求在优化图形时,所有张量的大小都是已知的。一个可能的修复方法是为更快的rcnn模型指定一个固定的输入图像张量大小,例如,对模型配置文件进行以下修改 原来:
faster_rcnn {
num_classes: 90
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 600
max_dimension: 1024
}
}
......
修改:
faster_rcnn {
num_classes: 90
image_resizer {
fixed_shape_resizer {
height: 600
width: 1024
}
}
......
参考资料:你找到了这个问题的解决方案吗?@DaveS可能是TensorRT,在某些特定层上只支持4D张量。我猜我在尝试转换基于resnet的金字塔网络时也会遇到类似的错误。你找到解决此问题的方法了吗?@DaveS可能是TensorRT,在某些特定层上仅支持4D tensor。我猜我在尝试转换基于resnet的金字塔网络时也会遇到类似的错误。欢迎将a转换为解决方案,但请确保您的答案在没有它的情况下是有用的:在链接周围添加上下文,以便您的其他用户能够了解它是什么以及为什么存在,然后引用你链接到的页面最相关的部分,以防目标页面不可用。欢迎使用解决方案,但请确保您的答案在没有它的情况下是有用的:在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在,然后引用您链接到的页面最相关的部分,以防目标页面不可用。