code: def __init__(
      self,
      in_ch,
      out_ch,
      kernel_size,
      stride,
      expansion_factor,
      skip,
      bn_momentum=0.1,
  ):
      super(_InvertedResidual, self).__init__()
      assert stride in [1, 2]
      assert kernel_size in [3, 5]
      mid_ch = in_ch * expansion_factor
      self.apply_residual = skip and in_ch == out_ch and stride == 1
      self.layers = nn.Sequential(
          # Pointwise
          nn.Conv2d(in_ch, mid_ch, 1, bias=False),
          nn.BatchNorm2d(mid_ch, momentum=bn_momentum),
          nn.ReLU(inplace=True),
          # Depthwise
          nn.Conv2d(
              mid_ch,
              mid_ch,
              kernel_size,
              padding=kernel_size // 2,
              stride=stride,
              groups=mid_ch,
              bias=False,
          ),
          nn.BatchNorm2d(mid_ch, momentum=bn_momentum),
          nn.ReLU(inplace=True),
          # Linear pointwise. Note that there's no activation.
          nn.Conv2d(mid_ch, out_ch, 1, bias=False),
          nn.BatchNorm2d(out_ch, momentum=bn_momentum),
      )
  
imports: from nni.retiarii import basic_unit
  import nni.retiarii.nn.pytorch
  import warnings
  import torch
  import torch.nn
  import torch.nn.functional
  from nni.retiarii import model_wrapper
  import sys
  from pathlib import Path
label_desc: Use image node_id 1 to create a new _InvertedResidual object from inherited base classes: nn with example: obj = _InvertedResidual(in_ch, out_ch, kernel_size, stride, expansion_factor, skip, bn_momentum)