踩坑记录 | pytorch转ONNX时遇到的问题 tinynet smpl

在将tinynet和smpl模型从PyTorch转换为ONNX格式时,遇到了torch环境版本不兼容、where和einsum算子不支持、以及if语句导致的问题。解决方法包括调整torch版本,用其他函数替换不支持的运算,以及重构含有if语句的代码,以确保ONNX模型的正确导出和结果一致性。
摘要由CSDN通过智能技术生成

1. torch环境问题

我在转换tinynet模型为onnx时,会产生如下报错

ImportError:cannot import name 'container_abcs'

这是由于torch版本不对,改为1.7.1就没有这个问题;因为1.8版本之后container_abcs就已经被移除了。但对于其他模型对这个版本又不适用,onnx对torch的版本是较为敏感的。

转换成功之后还需要验证onnx模型结果,随机生成输入tensor,观察输出结果是否一致,同样注意torch版本问题。

2. 去除不支持算子

在观察tinynex.onnx时发现了where算子,最终将问题定位在tinynet的forward函数中的三个if语句,调整后where算子消失。
在这里插入图片描述

在转换smpl模型时发现了einsum算子,定位问题出现来源于torch.einsum函数,于是使用torch.mm重新写一下就解决了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值