shuffle_channel¶
- paddle.fluid.layers.nn. shuffle_channel ( x, group, name=None ) [source]
-
This operator shuffles the channels of input x. It divide the input channels in each group into
group
subgroups, and obtain a new order by selecting element from every subgroup one by one.Please refer to the paper https://arxiv.org/pdf/1707.01083.pdf
Given a 4-D tensor input with the shape (N, C, H, W): input.shape = (1, 4, 2, 2) input.data =[[[[0.1, 0.2], [0.2, 0.3]], [[0.3, 0.4], [0.4, 0.5]], [[0.5, 0.6], [0.6, 0.7]], [[0.7, 0.8], [0.8, 0.9]]]] Given group: 2 then we get a 4-D tensor out with the same shape of input: out.shape = (1, 4, 2, 2) out.data = [[[[0.1, 0.2], [0.2, 0.3]], [[0.5, 0.6], [0.6, 0.7]], [[0.3, 0.4], [0.4, 0.5]], [[0.7, 0.8], [0.8, 0.9]]]]
- Parameters
-
x (Variable) – The input tensor variable. It should be a 4-D tensor with shape [N, C, H, W]
group (int) – Indicating the counts of subgroups, It should divide the number of channels.
- Returns
-
the channels shuffling result is a tensor variable with the same shape and same type as the input.
- Return type
-
out(Variable)
- Raises
-
ValueError – If group is not an int type variable.
Examples
import paddle import paddle.fluid as fluid paddle.enable_static() input = fluid.data(name='input', shape=[None,4,2,2], dtype='float32') out = fluid.layers.shuffle_channel(x=input, group=2)