转换onnx_PyTorch 到 ONNX 到 Tensorflow 到 TFLite的坑

.view()

在 Pytorch 中,经常会对某个具体的 Tensor 做变换的处理。但在 PyTorch 转换到 ONNX 的过程中,例如

fea = fea.view(1, -1, 1, 1)

ONNX 会错误将 view 的纬度扩张变成 Reshape 节点,如下图所示

db00e9d74ed92af125b89c71cbe1da2a.png

但是在 Reshape 节点转换到 Tensorflow 的时候,Reshape 节点就变成了 Where 节点和若干节点的组合以防止出现纬度扩张的时候的 Bug,如下图所示

a2825dee2f9f4dc528a43734029faa40.png

虽然这样子处理貌似稳妥,但是在后续 TF 模型转换到 TFLite 的时候,TFLite 是不支持 Where 节点的。在翻阅 PyTorch Discuss 和 Stackoverflow 的众多讨论后发现大部分人也都是在这里弃坑。

为了避免这个自动转换的问题,这里正确的处理方式为

fea = 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值