ngraph.opset3.ops.shuffle_channels

ngraph.opset3.ops.shuffle_channels(data: _pyngraph.Node, axis: int, group: int, name: Optional[str] = None) _pyngraph.Node

Perform permutation on data in the channel dimension of the input tensor.

Parameters
  • data – The node with input tensor.

  • axis – Channel dimension index in the data tensor. A negative value means that the index should be calculated from the back of the input data shape.

  • group – The channel dimension specified by the axis parameter should be split into this number of groups.

  • name – Optional output node name.

Returns

The new node performing a permutation on data in the channel dimension of the input tensor.

The operation is the equivalent with the following transformation of the input tensor data of shape [N, C, H, W]:

data_reshaped = reshape(data, [N, group, C / group, H * W])

data_trnasposed = transpose(data_reshaped, [0, 2, 1, 3])

output = reshape(data_trnasposed, [N, C, H, W])

For example:

Inputs: tensor of shape [1, 6, 2, 2]

        data = [[[[ 0.,  1.], [ 2.,  3.]],
                 [[ 4.,  5.], [ 6.,  7.]],
                 [[ 8.,  9.], [10., 11.]],
                 [[12., 13.], [14., 15.]],
                 [[16., 17.], [18., 19.]],
                 [[20., 21.], [22., 23.]]]]

        axis = 1
        groups = 3

Output: tensor of shape [1, 6, 2, 2]

        output = [[[[ 0.,  1.], [ 2.,  3.]],
                   [[ 8.,  9.], [10., 11.]],
                   [[16., 17.], [18., 19.]],
                   [[ 4.,  5.], [ 6.,  7.]],
                   [[12., 13.], [14., 15.]],
                   [[20., 21.], [22., 23.]]]]