当我将在Pytorch上训练有双线性层的网络转换为ONNX时,出现以下错误
RuntimeError:[ONNXRuntimeError]:10:INVALID_GRAPH:从test.onnx加载模型失败:类型错误:节点()中运算符(Floor)的输入参数(11)的类型'tensor(int64)'无效。
我不确定为什么会发生此错误,我尝试从源代码构建ONNX,但问题似乎并没有解决。
关于什么可能导致此错误的任何想法?或如何解决这个问题?
繁殖方式
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")
Run Code Online (Sandbox Code Playgroud)
小智 5
此错误已在https://github.com/pytorch/pytorch/pull/21434中修复(修复在functional.py中),因此,如果您安装pytorch的夜间版本,则应该可以得到此错误。
但是,在同一PR中,已禁止以双线性模式转换Upsample。原因是Pytorch的双线性模式与ONNX的不一致,并且Nearest模式是当前唯一支持的模式。
ONNX中的Upsample(现在称为Resize)已在opset 11中进行了更新,以支持与https://github.com/onnx/onnx/pull/2057中的 Pytorch对齐的双线性模式,但这尚未实现。
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |