code: def __init__(
      self,
      in_channels,
      out_channels,
      combine_type,
      groups=3,
      grouped_conv=True,
      norm_layer=BatchNorm,
      norm_kwargs=None,
      **kwargs,
  ):
      super(shuffleUnit, self).__init__(**kwargs)
      if combine_type == "add":
          self.DWConv_stride = 1
      elif combine_type == "concat":
          self.DWConv_stride = 2
          out_channels -= in_channels
      self.first_groups = groups if grouped_conv else 1
      self.bottleneck_channels = out_channels // 4
      self.grouped_conv = grouped_conv
      self.output_channel = out_channels
      self.groups = groups
      self.combine_type = combine_type
      with self.name_scope():
          self.conv_beforshuffle = nn.HybridSequential()
          self.conv_beforshuffle.add(
              _conv2d(
                  channel=self.bottleneck_channels,
                  kernel=1,
                  stride=1,
                  num_group=self.first_groups,
              )
          )
          self.conv_aftershuffle = nn.HybridSequential()
          self.conv_aftershuffle.add(
              _conv2d(
                  channel=self.bottleneck_channels,
                  kernel=3,
                  padding=1,
                  stride=self.DWConv_stride,
                  num_group=self.bottleneck_channels,
                  use_act=False,
              )
          )
          self.conv_aftershuffle.add(
              _conv2d(
                  channel=self.output_channel,
                  kernel=1,
                  stride=1,
                  num_group=groups,
                  use_act=False,
              )
          )
  
imports: from mxnet.context import cpu
  from mxnet.gluon import nn
  from mxnet.gluon.nn import BatchNorm
  from mxnet.gluon.block import HybridBlock
label_desc: Use image node_id 1 to create a new shuffleUnit object from inherited base classes: HybridBlock with example: obj = shuffleUnit(in_channels, out_channels, combine_type, groups, grouped_conv, norm_layer, norm_kwargs)