mindspore.ops.channel_shuffle

mindspore.ops.channel_shuffle(x, groups)[source]

Divide the channels in a tensor of shape \((*, C, H, W)\) into \(g\) groups and rearrange them as \((*, \frac{C}{g}, g, H*W)\), while keeping the original tensor shapes.

Parameters
  • x (Tensor) – Tensor to be divided, it has shape \((*, C, H, W)\), with float16, float32, int8, int16, int32, int64, uint8, uint16, uint32, uint64 data type.

  • groups (int) – Number of groups to divide channels in.

Returns

A Tensor, has the same type as the x, and has the shape \((*, C, H, W)\).

Raises
  • TypeError – If data type of x is not one of the following: float16, float32, int8, int16, int32, int64, uint8, uint16, uint32, uint64.

  • TypeError – If dim of x is < 4.

  • TypeError – If groups is not a positive number.

  • ValueError – If channel number of x is not divisible by groups.

Supported Platforms:

Ascend CPU

Examples

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> group = 2
>>> x = Tensor(np.arange(1* 4 * 2 * 2).reshape(1, 4, 2, 2).astype(np.int16))
>>> y = mindspore.ops.channel_shuffle(x, group)
>>> print(y)
[[[[ 0  1]
   [ 2  3]]
   [[ 8  9]
   [10 11]]
   [[ 4  5]
   [ 6  7]]
   [[12 13]
   [14 15]]]]