@thierry TFLite’s depthwise conv kernel layout is not the same as TF. They are different. Normal conv kernel layout of TFLite is also different with TF.
For TFLite, we obey the definition here: https://github.com/dmlc/tvm/blob/master/topi/python/topi/nn/depthwise_conv2d.py#L131. As you say in NCHW https://github.com/dmlc/tvm/blob/master/topi/python/topi/nn/depthwise_conv2d.py#L60, For NCHW, we always OIHW. However, but for depthwise convolution, the O value equals to input tensor’s channel, i.e. ic.
P.S.
I must apologize that my TFLite’s implementation for depthwise convolution is not correct for depthwise convolution’s multiplier greater than 1, TFLite’s depthwise convolution kernel layout is not I commented there in fact(TFLite depthwise kernel layout is 1xKHxKWx(input_channel * multiplier). The issue I have known when I handle https://github.com/dmlc/tvm/pull/3676. I will support TFLite depthwise convolution multiplier greater than 1 in several days. But again, TFLite’s conv / depthwise convolution kernel layout is not the same as TF.