code: def forward(self, x):
      batchsize, num_channels, height, width = x.size()
      channels_per_group = num_channels // self.groups
      # reshape
      x = x.view(
          batchsize, self.groups, channels_per_group, height, width
      )
      # noinspection PyUnresolvedReferences
      x = torch.transpose(x, 1, 2).contiguous()
      # flatten
      x = x.view(batchsize, -1, height, width)
      return x
  
imports: from collections import OrderedDict
  from nni.retiarii.serializer import basic_unit
  import torch
  import nni.retiarii.nn.pytorch
  from putils import get_same_padding, build_activation
label_desc: Use image node_id 2 for calling the ShuffleLayer obj's underlying member method code with example usage: obj.forward(x) and returns: x