code: def __init__(self, in_planes, out_planes, stride, groups):
      super(Bottleneck, self).__init__()
      self.stride = stride
  
      mid_planes = out_planes / 4
      g = 1 if in_planes == 24 else groups
      self.conv1 = nn.Conv2d(
          in_planes, mid_planes, kernel_size=1, groups=g, bias=False
      )
      self.bn1 = nn.BatchNorm2d(mid_planes)
      self.shuffle1 = ShuffleBlock(groups=g)
      self.conv2 = nn.Conv2d(
          mid_planes,
          mid_planes,
          kernel_size=3,
          stride=stride,
          padding=1,
          groups=mid_planes,
          bias=False,
      )
      self.bn2 = nn.BatchNorm2d(mid_planes)
      self.conv3 = nn.Conv2d(
          mid_planes,
          out_planes,
          kernel_size=1,
          groups=groups,
          bias=False,
      )
      self.bn3 = nn.BatchNorm2d(out_planes)
  
      self.shortcut = nn.Sequential()
      if stride == 2:
          self.shortcut = nn.Sequential(
              nn.AvgPool2d(3, stride=2, padding=1)
          )
  
file_path: nni/examples/trials/cifar10_pytorch/models/shufflenet.py
imports: import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new Bottleneck object from inherited base classes: nn with example: obj = Bottleneck(in_planes, out_planes, stride, groups)