code: def __init__(
      self, kernel_size, in_ch, out_ch, skip, exp_ratio, stride
  ):
      super().__init__()
      self.kernel_size = kernel_size
      self.in_ch = in_ch
      self.out_ch = out_ch
      self.skip = skip
      self.exp_ratio = exp_ratio
      self.stride = stride
  
      mid_ch = in_ch * exp_ratio
      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 - 1) // 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 MobileConv object from inherited base classes: nn with example: obj = MobileConv(kernel_size, in_ch, out_ch, skip, exp_ratio, stride)