ShuffleChannels#
Versioned name: ShuffleChannels-1
Name: ShuffleChannels
Category: Data movement
Short description: ShuffleChannels permutes data in the channel dimension of the input tensor.
Detailed description:
Input tensor of data_shape is always interpreted as 4D tensor with the following shape:
dim 0: data_shape[0] * data_shape[1] * ... * data_shape[axis-1]
(or 1 if axis == 0)
dim 1: group
dim 2: data_shape[axis] / group
dim 3: data_shape[axis+1] * data_shape[axis+2] * ... * data_shape[data_shape.size()-1]
(or 1 if axis points to last dimension)
Trailing and leading to axis dimensions are flattened and reshaped back to the original shape after channels shuffling.
The operation is equivalent to the following transformation of the input tensor x of shape [N, C, H, W] and axis = 1:
where group is the layer attribute described below.
Attributes:
axis
Description: axis specifies the index of a channel dimension.
Range of values: an integer number in the range
[-rank(data_shape), rank(data_shape) - 1]Type:
intDefault value: 1
Required: no
group
Description: group specifies the number of groups to split the channel dimension into. This number must evenly divide the channel dimension size.
Range of values: a positive integer in the range
[1, data_shape[axis]]Type:
intDefault value: 1
Required: no
Inputs:
1:
datainput tensor of type T and rank greater or equal to 1. Required.
Outputs:
1: Output tensor with element type T and same shape as the input tensor.
Types
T: any supported numeric type.
Example
<layer ... type="ShuffleChannels" ...>
<data group="3" axis="1"/>
<input>
<port id="0">
<dim>5</dim>
<dim>12</dim>
<dim>200</dim>
<dim>400</dim>
</port>
</input>
<output>
<port id="1">
<dim>5</dim>
<dim>12</dim>
<dim>200</dim>
<dim>400</dim>
</port>
</output>
</layer>