Pytorch 当尝试将双线性层转换为ONNX时,上采样ONNX给出无效的_图

Pytorch 当尝试将双线性层转换为ONNX时,上采样ONNX给出无效的_图,pytorch,onnx,Pytorch,Onnx,当我将在Pytorch上训练的双线性层的网络转换为ONNX时,我得到以下错误 RuntimeError:[ONNXRuntimeError]:10:无效的\u图形:负载模型 from test.onnx失败:类型错误:输入的类型为“tensor(int64)” 节点()中运算符(楼层)的参数(11)无效 我不确定为什么会发生这种错误,我尝试从源代码构建NX,但问题似乎仍然没有解决 有什么想法可以导致这个错误吗?或者如何解决这个问题 繁殖方式- from torch import nn impo

当我将在Pytorch上训练的双线性层的网络转换为ONNX时,我得到以下错误

RuntimeError:[ONNXRuntimeError]:10:无效的\u图形:负载模型 from test.onnx失败:类型错误:输入的类型为“tensor(int64)” 节点()中运算符(楼层)的参数(11)无效

我不确定为什么会发生这种错误,我尝试从源代码构建NX,但问题似乎仍然没有解决

有什么想法可以导致这个错误吗?或者如何解决这个问题

繁殖方式-

from torch import nn

import torch
import torch.nn.functional as F
import onnxruntime as rt

class Upsample(torch.nn.Module):
    def forward(self, x):
        #l = nn.Conv2d(3, 3, kernel_size=1, stride=1, padding=1, bias=True)
        return F.interpolate(x, scale_factor=2, mode="bilinear", align_corners=False)

m = Upsample()
v = torch.randn(1,3,128,128, dtype=torch.float32, requires_grad=False)

torch.onnx.export(m, v, "test.onnx")
sess = rt.InferenceSession("test.onnx")

此错误已在中修复(修复在functional.py中),因此如果安装pytorch的夜间构建,您应该能够获得它

但是,在同一PR中,双线性模式下的上采样转换已被禁用;原因是Pytorch的双线性模式与ONNX的不一致,最近模式是当前唯一支持的模式


ONNX中的Upsample(现在称为Resize)正在opset 11中更新,以支持与中的Pytorch对齐的双线性模式,但此模式尚未推出。

我通过在中更改
模式(s=“bilinear”
)来构建Pytorch 1.0.0解决了上述问题,如本文所述,它似乎可以工作。但我仍然不知道这种变化如何影响上采样的网络图,仍然在验证结果@劳拉,你有没有尝试过这样的双线性上采样修复,谢谢你的修复。