def @main(%data: Tensor[(1, 112, 112, 32), float32]) -> Tensor[(1, 112, 112, 64), float32] {
%3 = fn (%p0: Tensor[(1, 112, 112, 32), float32], %p1: Tensor[(3, 3, 32, 1), float32], %p2: Tensor[(1, 1, 1, 32), float32], %p3: Tensor[(1, 1, 1, 32), float32], Primitive=1) -> Tensor[(1, 112, 112, 32), float32] {
%0 = nn.conv2d(%p0, %p1, padding=[1, 1, 1, 1], groups=32, channels=32, kernel_size=[3, 3], data_layout="NHWC", kernel_layout="HWIO") /* ty=Tensor[(1, 112, 112, 32), float32] */;
%1 = multiply(%0, %p2) /* ty=Tensor[(1, 112, 112, 32), float32] */;
%2 = add(%1, %p3) /* ty=Tensor[(1, 112, 112, 32), float32] */;
nn.relu(%2) /* ty=Tensor[(1, 112, 112, 32), float32] */
};
%4 = %3(%data, meta[relay.Constant][0] /* ty=Tensor[(3, 3, 32, 1), float32] */ /* ty=Tensor[(3, 3, 32, 1), float32] */, meta[relay.Constant][1] /* ty=Tensor[(1, 1, 1, 32), float32] */ /* ty=Tensor[(1, 1, 1, 32), float32] */, meta[relay.Constant][2] /* ty=Tensor[(1, 1, 1, 32), float32] */ /* ty=Tensor[(1, 1, 1, 32), float32] */) /* ty=Tensor[(1, 112, 112, 32), float32] */;
%8 = fn (%p01: Tensor[(1, 112, 112, 32), float32], %p11: Tensor[(1, 1, 32, 64), float32], %p21: Tensor[(1, 1, 1, 64), float32], %p31: Tensor[(1, 1, 1, 64), float32], Primitive=1) -> Tensor[(1, 112, 112, 64), float32] {
%5 = nn.conv2d(%p01, %p11, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1], data_layout="NHWC", kernel_layout="HWIO") /* ty=Tensor[(1, 112, 112, 64), float32] */;
%6 = multiply(%5, %p21) /* ty=Tensor[(1, 112, 112, 64), float32] */;
%7 = add(%6, %p31) /* ty=Tensor[(1, 112, 112, 64), float32] */;
nn.relu(%7) /* ty=Tensor[(1, 112, 112, 64), float32] */
};
%8(%4, meta[relay.Constant][3] /* ty=Tensor[(1, 1, 32, 64), float32] */ /* ty=Tensor[(1, 1, 32, 64), float32] */, meta[relay.Constant][4] /* ty=Tensor[(1, 1, 1, 64), float32] */ /* ty=Tensor[(1, 1, 1, 64), float32] */, meta[relay.Constant][5] /* ty=Tensor[(1, 1, 1, 64), float32] */ /* ty=Tensor[(1, 1, 1, 64), float32] */) /* ty=Tensor[(1, 112, 112, 64), float32] */
}
Hello, I’m just start learning how to use Relay’s pattern matching. I wonder if there’s a way I can match a function pattern (together with its internal pattern, e.g. conv+mul+add+relu
), just like the two shown in the above example? Thanks in advance!