What is default weights layout should be used for transpose_conv op?

I’m a little bit confused about the layout of weights and about kernel_layout in relay.nn.conv2d_transpose.

According to the function declaration relay.nn.conv2d_transpose default kernel_layout is OIHW

BUT Topi nn conv2d_transpose_nchw_preprocess parses kernel tensor as IOHW

test_conv2d_transpose_run uses IOHW weights and does not explicitly specify kernel_layout (keeps it default as OIHW)

test_conv2d_transpose_infer_type uses IOHW weights as well

BTW, 2 lines above are NCHW instead of NHWC…

So, I’m confused. Why all conv2d_transpose tests use weights in IOHW layout and at the same time they keep default kernel_layout parameter (which is OIHW)

@tqchen @zhiics @merrymercy

Interesting, topi nn conv2d_transpose_nchw_preprocess transforms kernel layout from IOHW to OIHW, and rotates kernel by 180 degrees

So, looks like it might be correct that relay.nn.conv2d_transpose users should provide weights in IOHW layout, but set kernel_layout to OIHW.