onnx模型转openvino报错nGraph does not support the following ONNX operations: If

11 篇文章 0 订阅
5 篇文章 1 订阅

onnx模型转换openvino进行部署时首先需要用openvino官方给的优化程序对onnx模型进行优化,之后使用openvino官方API加载优化后的模型如果不报错说明onnx模型转openvino模型成功,就可以编写推理代码然后进行部署。我在使用优化程序转换onnx模型时虽无报错但是在使用openvino官方API加载模型时报错nGraph does not support the following ONNX operations: If,这个错误好像是onnx模型转openvino模型不支持if条件语句,因此我首先尝试将代码里所有if语句去掉,但还是报这个错误,在经过仔细排查之后发现pytorch的squeeze()方法方法在转换成onnx模型后会产生If节点,最终导致转换openvino模型出现nGraph does not support the following ONNX operations: If这个报错,squeeze()方法只是去掉tensor中维度为1的维度,并不清楚为何在转换成onnx模型后会产生If节点。下面列举一个squeeze()转换成onnx之后产生If节点的可视化例子:

我的代码中有一步是去除一个tensor中维度为1的维度,刚开始我使用squeeze()方法然后转成onnx模型后可视化模型如下图1所示,之后我将squeeze()改为使用索引的方法,然后转成onnx模型并可视化如下图2所示,对比可以发现squeeze()方法其实严格来说转成onnx模型是生成了shape、Equal和If三个节点,原因可能是pytorch官方的squeeze()源码实现是使用的这三个算子吧。

                              

    图1:squeeze                                                        图2:索引

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值