一、错误描述
最近尝试通过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类型日志
- 多百度