class_docstr: A layer that shuffle a 2D image [batch, height, width, channel], see `here <https://arxiv.org/abs/1707.01083>`__.
  
  Parameters
  ----------
  group: int
      The number of groups.
  name : str
      A unique layer name.
  
  Examples
  --------
  >>> x = tl.layers.Input([1, 16, 16, 8], name='input')
  >>> y = tl.layers.Shuffle(group=2, name='shuffle')(x)
  (1, 16, 16, 8)
class_docstr_tok: ["A","layer","that","shuffle","a","2D","image","[","batch",",","height",",","width",",","channel","]",",","see","`","here","<","https",":","\/\/arxiv.org\/abs\/1707.01083",">","`","__",".","Parameters","--","--","--","--","--","group",":","int","The","number","of","groups",".","name",":","str","A","unique","layer","name",".","Examples","--","--","--","--",">",">",">","x","=","tl.layers.Input","(","[","1",",","16",",","16",",","8","]",",","name='input","'",")",">",">",">","y","=","tl.layers.Shuffle","(","group=2",",","name='shuffle","'",")","(","x",")","(","1",",","16",",","16",",","8",")"]
code: def forward(self, inputs):
      in_shape = inputs.get_shape().as_list()
      h, w, in_channel = in_shape[1:]
      if in_channel % self.group != 0:
          raise ValueError(
              "The in_channel must be a multiple of the number of groups. The in_channel got %d and the number of groups is %d."
              % (in_channel, self.group)
          )
      temp = tf.reshape(
          inputs, [-1, h, w, in_channel // self.group, self.group]
      )
      temp = tf.transpose(temp, [0, 1, 2, 4, 3])
      outputs = tf.reshape(temp, [-1, h, w, in_channel], name=self.name)
      return outputs
  
imports: import tensorflow
  from tensorlayer import logging
  from tensorlayer.decorators import deprecated_alias
  from tensorlayer.layers.core import Layer
  from tensorlayer.layers.utils import flatten_reshape
label_desc: Use image node_id 4 for calling the Shuffle obj's underlying member method code with example usage: obj.forward(inputs) and returns: outputs