如何解决onnxjs opset版本和MaxPool
我正在尝试使用以下代码从Torchvision导出FCN:
model= models.segmentation.fcn_resnet101(pretrained=True,progress=True,num_classes=21,aux_loss=None)
model.eval()
x = torch.randn(1,3,512,512)
torch_out = model(x)
torch.onnx.export(model,x,"seg_rn.onnx",export_params=True,opset_version=11,do_constant_folding=True,verbose=True
)
导出模型时,我需要最少的opset 11以支持pytorch插值的工作方式,这在python onnx运行时中运行时onnx模型的输出证实了。
在python onnx运行时中运行很好,但是当我在onnxjs中加载模型时,就像这样:
var session = new InferenceSession();
const modelURL = "./models/seg_rn.onnx";
await session.loadModel(modelURL);
我得到Uncaught (in promise) TypeError: cannot resolve operator 'Shape' with opsets: ai.onnx v11
如果我从torchvision.models.segmentation
创建自己的位副本,则可以消除有关Shape的错误(通过为输入指定静态形状并告诉插值调整大小的因素),但随后我得到了基本上相同的错误:Uncaught (in promise) TypeError: cannot resolve operator 'MaxPool' with opsets: ai.onnx v11
,但这一次涉及的是MaxPool。忽略测试并使用opset v10输出会导致可加载的模型,但是那将是不正确的。
这是怎么回事?有什么前进的方向,还是我基本上被困住了?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。