onnx模型运行时遇到Reshape节点报错如下:
很明显这个是reshape操作的错误,在pytorch中转成onnx对应是Reshape节点的是view()、transpose()等方法,用Netron可视化onnx模型定位到问题节点,然后找到问题节点在源代码中的位置,复现这个报错代码如下:
1 2 3 4 5 | import torch a=torch.randn(250, 1, 1) # a.size=(250, 1, 1) b=a.transpose(0,2).view(1,1,10, 25) # 把a维度变换成1,1,250,然后view成四维的1,1,10,25 b.size()=1,1,10,25 |
就是在变换维度的时候导致onnx模型报错,解决方法是不要用view()将tensor直接扩展为4维tensor,还是保持三维的然后使用unsqueeze(),代码修改如下:
1 2 3 4 5 6 | import torch a=torch.randn(250, 1, 1) # a.size=(250, 1, 1) b=a.transpose(0,2).view(1,10,25).unsqueeze(0) #把a维度变换成1,1,250,然后view成四维的1,1,10,25 b.size()=1,1,10,25 |