TensorRT – Invalid Node – TopK,This version of TensorRT only supports input K as an initializer
1 This version of TensorRT only supports input K as an initializer
今天使用TensorRT-8.5.1.7的trtexec工具转换onnx模型为trt模型时出现了以下错误:
[04/27/2023-09:04:12] [E] [TRT] ModelImporter.cpp:729: --- End node ---
[04/27/2023-09:04:12] [E] [TRT] ModelImporter.cpp:732: ERROR: ModelImporter.cpp:168 In function parseGraph:
[6] Invalid Node - TopK_573
This version of TensorRT only supports input K as an initializer. Try applying constant folding on the model using Polygraphy: https://github.com/NVIDIA/TensorRT/tree/master/tools/Polygraphy/examples/cli/surgeon/02_folding_constants
[04/27/2023-09:04:12] [E] Failed to parse onnx file
从错误信息上看,是TopK算子没有找到,然后TensorRT给的建议是使用它的Polygraphy工具对Onnx模型进行constant folding。
之后我按照https://github.com/NVIDIA/TensorRT/tree/master/tools/Polygraphy/examples/cli/surgeon/02_folding_constants配置了Polygraphy工具的环境,并对onnx模型进行了constant folding操作,再次进行转换还是出现了问题。
2 问题解决方法
目前TensorRT版本已经到了8.6.0的预览版,我从8.6.0版本的官方文档https://docs.nvidia.com/deeplearning/tensorrt/archives/index.html#trt_8 看到了其的算子支持是包含TopK的,然后我使用了最新的8.6.0预览版本8.6.0.12重新对原始的onnx模型进行转换,竟然成功了。
然后我看8.5.3的文档,里面竟然也是支持TopK算子的,然后我又重新使用了8.5.3对原始的onnx模型进行了转换,但是在解析模型时同样出现了TopK算子有错的信息。
这真是令人费解。
不过以后遇到TensorRT转换Onnx模型出现算子不支持的情况,首先应该查看最新TensorRT的算子支持列表,查看是否有这个算子,避免浪费太多时间。
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:TensorRT – Invalid Node – TopK,This version of TensorRT only supports input K as an initializer
原文链接:https://www.stubbornhuang.com/2596/
发布于:2023年04月27日 9:33:26
修改于:2023年04月27日 9:34:45
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52