解决Pytorch转onnx错误:Only tuples, lists and Variables are supported as JIT inputs/outputs!

博客作者在尝试使用torch.onnx.export将PyTorch模型转换为ONNX格式时遇到错误:Only tuples, lists and Variables are supported as JIT inputs/outputs...。经过排查,发现问题是由于在forward函数内部将输出从Tensor转换为numpy或list导致的。解决方案是将这类转换移出模型的forward函数,确保所有输入输出为规定类型。通过这个修改,成功解决了转换问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、错误描述

    最近尝试通过torch.onnx.export接口将pth转为onnx,但是报了错误:Only tuples, lists and Variables are supported as JIT inputs/outputs......。上图是我的代码,没有任何问题。

     网上的一些常见的解决方法如下:

  • 升级pytorch版本(未解决
  • 模型的某些input和output不是规定的类型或者说不存在 (解决了我的问题

二、具体做法

    沿着第二种解决思路,重新审视了自己的模型的各个模块,最后发现了问题,在forward函数内部,将推理结果从tensor类型转换为了numpy类型或者是python的list,这都会导致在转onnx时报如上错误,所以最终将forward内部的转换逻辑从内部删除,在模型的外部根据需要再进行转换,问题就迎刃而解。

     如上图,去掉classify_scores2result转换函数后,直觉返回head的推理结果即可转换成功。

三、如何发现解决办法的

  •  注意warning类型日志
  •  多百度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值