Lunderberg commented on code in PR #13414:
URL: https://github.com/apache/tvm/pull/13414#discussion_r1038523978
##########
python/tvm/topi/nn/depthwise_conv2d.py:
##########
@@ -252,8 +253,18 @@ def depthwise_conv2d_nhwc(Input, Filter, stride, padding,
dilation, out_dtype=No
dilation_h, dilation_w = dilation
batch, in_height, in_width, in_channel = Input.shape
+
+ dim = len(Input.shape) - 2
+
# shape of dilated kernel
- filter_height, filter_width, filter_channel, channel_multiplier =
Filter.shape
+ if kernel_layout == "HWOI":
+ filter_height, filter_width, filter_channel, channel_multiplier =
Filter.shape
+ kernel_permutation_to = [0, 1] + list(range(2, dim + 2))
+ elif kernel_layout == "HWIO":
+ filter_height, filter_width, channel_multiplier, filter_channel =
Filter.shape
+ kernel_permutation_to = [dim + 1, dim] + list(range(dim))
+
+ kernel_permutation_from = np.argsort(kernel_permutation_to)
Review Comment:
Ah, I see. It looks like that implementation is trying to be more clever,
and to identify the permutation by inspecting the string. In this case, since
we're only supporting two explicitly enabled shapes, I'd lean for defining a
`kernel_permutation` directly for each one.
```python
if kernel_layout == 'HWOI':
kernel_permutaiton = [0,1,2,3]
elif kernel_layout == 'HWIO':
kernel_permutaiton = [0,1,3,2]
else:
raise ValueError(f'Unsupported kernel layout: {kernel_layout}')
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]