Hi, I try to convert a pytorch model to tvm via onnx intermediate model following this tutorial, but fail at prelu operation convertion which reports a dimension mismatch error:
tensor type Tensor[(128), float32] has 1 dimensions, while Tensor[(128, 1, 1), float32] has 3 dimensions; unable to unify: `Tensor[(128), float32]` and `Tensor[(128, 1, 1), float32]
My pytorch version is 1.2, and onnx version is 1.5 which tvm is the latest master branch (15ae9780). I also have tried to update onnx to 1.6 but nothing helps. Here is my simplest example to replicate this error. I don’t know which commit of tvm is compatible for my onnx model and that’s really confusing.
import torch
from torch import nn
import tvm
from tvm import relay
import numpy as np
import onnx
class test_model(nn.Module):
def __init__(self):
super(test_model, self).__init__()
self.l1 = nn.Sequential(nn.Conv2d(3, 64, (3, 3), 2, 1, bias=False),
nn.BatchNorm2d(64))
self.l2 = nn.Sequential(nn.Conv2d(64, 128, (3, 2), 2, 1, bias=False),
nn.BatchNorm2d(128),
nn.PReLU(128))
self.l3 = nn.Sequential(nn.Flatten(),
nn.Linear(128*8*8, 128))
def forward(self, x):
x = self.l1(x)
x = self.l2(x)
x = self.l3(x)
return x
model = test_model()
inputs = torch.ones(1,3,32,32)
model(inputs)
torch.onnx.export(model, inputs, "test.onnx")
input_node="input.1"
input_shape=(1, 3, 32, 32)
onnx_model = onnx.load("test.onnx")
onnx.checker.check_model(model)
onnx.helper.printable_graph(model.graph)
net, params = relay.frontend.from_onnx(model, shape={input_node: input_shape})