本文主要是介绍【pytorch】——ONNX export failed: Couldn‘t export operator aten::adaptive_avg_pool2d,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:
语义分割网络pspnet导出成onnx的时候报错
分析:
主要是ppm中使用了AdaptiveAvgPool2d
解决方案:
- onnx中最新的版本好像也是没有AdaptiveAvgPool2d的
- 因为pytorch是动态尺寸的,所以有AdaptiveAvgPool2d,首先要固定尺寸进行推理
- 将AdaptiveAvgPool2d替换成AvgPool2d
参考自:https://www.cnblogs.com/xiaosongshine/p/10750908.html
import torch as t
import math
import numpy as npalist = t.randn(2,6,7)inputsz = np.array(alist.shape[1:])
outputsz = np.array([2,3])stridesz = np.floor(inputsz/outputsz).astype(np.int32)kernelsz = inputsz-(outputsz-1)*strideszadp = t.nn.AdaptiveAvgPool2d(list(outputsz))
avg = t.nn.AvgPool2d(kernel_size=list(kernelsz),stride=list(stridesz))
adplist = adp(alist)
avglist = avg(alist)print(alist)
print(adplist)
print(avglist)
这篇关于【pytorch】——ONNX export failed: Couldn‘t export operator aten::adaptive_avg_pool2d的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!