@huochaitiantang Torch is actually exporting your seemingly simple graph as a very complex ONNX model with a lot of shape-related parameters treated as input weights instead of constants:
To get DynamicToStatic to work here, I need to freeze the params (i.e., turn all of those fabricated weights into constants):
import onnx
import tvm
from tvm import relay
onnx_model = onnx.load("torch_gather.onnx")
mod, params = relay.frontend.from_onnx(onnx_model, freeze_params=True)
print(relay.transform.DynamicToStatic()(mod))
when I do that, I get the expected multiply times a constant:
def @main(%v0: Tensor[(1, 3), float32]) -> Tensor[(1, 3), float32] {
multiply(%v0, meta[relay.Constant][0] /* ty=Tensor[(1, 3), float32] */) /* ty=Tensor[(1, 3), float32] */
}
@BigTree, maybe try freezing parameters on your model?
