Tensorflow 如何定位TensorRT不支持的操作

Tensorflow 如何定位TensorRT不支持的操作,tensorflow,tensorrt,Tensorflow,Tensorrt,当我将tensorflow模型(另存为.pb文件)转换为uff文件时,错误日志如下: Using output node final/lanenet_loss/instance_seg Using output node final/lanenet_loss/binary_seg Converting to UFF graph Warning: No conversion function registered for layer: Slice yet. Converting as custom

当我将tensorflow模型(另存为.pb文件)转换为uff文件时,错误日志如下:

Using output node final/lanenet_loss/instance_seg
Using output node final/lanenet_loss/binary_seg
Converting to UFF graph
Warning: No conversion function registered for layer: Slice yet.
Converting as custom op Slice final/lanenet_loss/Slice
name: "final/lanenet_loss/Slice"
op: "Slice"
input: "final/lanenet_loss/Shape_1"
input: "final/lanenet_loss/Slice/begin"
input: "final/lanenet_loss/Slice/size"
attr {
  key: "Index"
  value {
    type: DT_INT32
  }
}
attr {
  key: "T"
  value {
    type: DT_INT32
  }
}

Traceback (most recent call last):
  File "tfpb_to_uff.py", line 16, in <module>
    uff_model = uff.from_tensorflow(graphdef=output_graph_def, output_filename=output_path, output_nodes=["final/lanenet_loss/instance_seg", "final/lanenet_loss/binary_seg"], text=True)
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/conversion_helpers.py", line 75, in from_tensorflow
    name="main")
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/converter.py", line 64, in convert_tf2uff_graph
    uff_graph, input_replacements)
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/converter.py", line 51, in convert_tf2uff_node
    op, name, tf_node, inputs, uff_graph, tf_nodes=tf_nodes)
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/converter.py", line 28, in convert_layer
    fields = cls.parse_tf_attrs(tf_node.attr)
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/converter.py", line 177, in parse_tf_attrs
    for key, val in attrs.items()}
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/converter.py", line 177, in <dictcomp>
    for key, val in attrs.items()}
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/converter.py", line 172, in parse_tf_attr_value
    return cls.convert_tf2uff_field(code, val)
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/converter.py", line 146, in convert_tf2uff_field
    return TensorFlowToUFFConverter.convert_tf2numpy_dtype(val)
  File "/home/dream/.local/lib/python3.5/site-packages/uff/converters/tensorflow/converter.py", line 74, in convert_tf2numpy_dtype
    return np.dtype(dt[dtype])
TypeError: list indices must be integers or slices, not AttrValue

如何在代码行中找到“切片”层,以便通过TensorRT自定义层对其进行修改?

既然您是从Tensorflow进行解析,那么最好看看TensorRT支持哪些层。从TensorRT 4开始,支持以下层:

  • 占位符
  • 常数
  • 加、分、多、分、最小和最大
  • 比亚萨德
  • 负片、Abs、Sqrt、Rsqrt、Pow、Exp和Log
  • FusedBatchNorm
  • 雷卢,谭,乙状结肠
  • SoftMax
  • 卑鄙
  • ConcatV2
  • 重塑
  • 转置
  • Conv2D
  • DepthwiseConv2dNative
  • ConvTranspose2D
  • 马克斯普尔
  • AvgPool
  • 如果紧跟这些TensorFlow层之一,则支持Pad: Conv2D、depthwisecon2dnative、MaxPool和AvgPool
从我在您的日志中看到的情况来看,您正在尝试部署LaneNet,它是的LaneNet吗

如果是这样的话,它似乎是H-Net的一种变体,但据该报报道,它的体系结构如下:

所以我看到Convs、Relus、Maxpool和Linear,它们都是受支持的,我不知道BN,也许可以看看它指的是哪一层,如果它不在受支持的网络列表中,你就必须从头开始实现它。
祝你好运

我搜索了我所有的代码,甚至找不到一个名为“slice”的单词,代码行中没有名字的图形中是否隐含了一些tensorflow操作?
graph list name: "final/lanenet_loss/Slice"
op: "Slice"
input: "final/lanenet_loss/Shape_1"
input: "final/lanenet_loss/Slice/begin"
input: "final/lanenet_loss/Slice/size"
attr {
  key: "Index"
  value {
    type: DT_INT32
  }
}
attr {
  key: "T"
  value {
    type: DT_INT32
  }
}