code: def __init__(
      self,
      num_in,
      num_mid,
      num_out,
      kernel_size,
      act_type="relu",
      use_se=False,
      strides=1,
      prefix="",
      norm_layer=BatchNorm,
      **kwargs,
  ):
      super(_ResUnit, self).__init__(**kwargs)
      with self.name_scope():
          self.use_se = use_se
          self.first_conv = num_out != num_mid
          self.use_short_cut_conv = True
          if self.first_conv:
              self.expand = _Unit(
                  num_mid,
                  kernel_size=1,
                  strides=1,
                  pad=0,
                  act_type=act_type,
                  prefix="%s-exp" % prefix,
                  norm_layer=norm_layer,
              )
          self.conv1 = _Unit(
              num_mid,
              kernel_size=kernel_size,
              strides=strides,
              pad=self._get_pad(kernel_size),
              act_type=act_type,
              num_groups=num_mid,
              prefix="%s-depthwise" % prefix,
              norm_layer=norm_layer,
          )
          if use_se:
              self.se = _SE(num_mid, prefix="%s-se" % prefix)
          self.conv2 = _Unit(
              num_out,
              kernel_size=1,
              strides=1,
              pad=0,
              act_type=act_type,
              use_act=False,
              prefix="%s-linear" % prefix,
              norm_layer=norm_layer,
          )
          if num_in != num_out or strides != 1:
              self.use_short_cut_conv = False
  
imports: from __future__ import division
  import numpy
  from mxnet.gluon import nn
  from mxnet.gluon.nn import BatchNorm
  from mxnet.gluon.block import HybridBlock
  from mxnet.context import cpu
  from ..nn import ReLU6, HardSigmoid, HardSwish
label_desc: Use image node_id 1 to create a new _ResUnit object from inherited base classes: HybridBlock with example: obj = _ResUnit(num_in, num_mid, num_out, kernel_size, act_type, use_se, strides, prefix, norm_layer)