1 Error Code 2: Internal Error (Slice_74 requires bool or uint8 I/O but node can not be handled by Myelin错误

1.1 问题

今天在用TensorRT转化onnx模型出现了以下错误

转换onnx模型出现Error Code 2: Internal Error (Slice_74 requires bool or uint8 I/O but node can not be handled by Myelin错误

这在https://forums.developer.nvidia.com/t/requires-bool-i-o-but-node-can-not-be-handled-by-myelin/212076 的官网论坛上也提及到了这个问题,主要原因是TensorRT的Slice层不支持bool型的输入

1.2 解决方法

下面两个地方也提到了相同的解决方案:

TensorRT – 转换onnx模型出现Slice_74 requires bool or uint8 I/O but node can not be handled by Myelin错误-StubbornHuang Blog
TensorRT – 转换onnx模型出现Slice_74 requires bool or uint8 I/O but node can not be handled by Myelin错误-StubbornHuang Blog

解决方案就是对onnx模型进行操作,在出问题的Slice前后都插入cast节点进行数值类型转换,将输入到Slice节点的数据从bool型转换为int32类型,执行完Slice操作之后再接一个cast节点,从int32类型转换为bool类型。

至于添加cast节点,既可以使用onnx库也可以使用NVIDIA自己的Onnx GraphSurgeon库进行操作。

1.3 使用Onnx GraphSurgeon修改onnx模型,解决转换Slice的输入类型不能为Bool的转换错误

下面是可供参考的使用Onnx GraphSurgeon修改onnx模型,增加Cast节点的代码

此文章剩余43%被隐藏需要付费查看,内容查看价格3小饼子立即购买,VIP免费
支付前请仔细阅读以下说明,如支付代表您了解并同意了以下说明:
(1)资源收集自互联网,仅供自我学习,请在下载后24小时内删除该资源,如下载者将此资源用于其他非法用途,本站不承担任何法律责任;如有侵权,请立即联系我,马上删除!
(2)下载单个资源则点击立即下载或者立即购买按钮;本站VIP可下载本站所有资源。
(3)请不要使用手机以及电脑浏览器的无痕模式进行支付操作,以免造成支付成功但未显示下载链接。
(4)如遇支付问题或者资源失效问题请点击按钮点击反馈进行反馈或者发送说明邮件到stubbornhuang@qq.com