code: def __init__(self, hidden_size):
      super(Net, self).__init__()
      # two options of conv1
      self.conv1 = LayerChoice(
          OrderedDict(
              [
                  ("conv5x5", nn.Conv2d(1, 20, 5, 1)),
                  ("conv3x3", nn.Conv2d(1, 20, 3, 1)),
              ]
          ),
          key="first_conv",
      )
      # two options of mid_conv
      self.mid_conv = LayerChoice(
          [
              nn.Conv2d(20, 20, 3, 1, padding=1),
              nn.Conv2d(20, 20, 5, 1, padding=2),
          ],
          key="mid_conv",
      )
      self.conv2 = nn.Conv2d(20, 50, 5, 1)
      self.fc1 = nn.Linear(4 * 4 * 50, hidden_size)
      self.fc2 = nn.Linear(hidden_size, 10)
      # skip connection over mid_conv
      self.input_switch = InputChoice(
          n_candidates=2, n_chosen=1, key="skip"
      )
  
imports: import os
  import argparse
  import logging
  from collections import OrderedDict
  import nni
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.optim
  from torchvision import datasets, transforms
  from nni.nas.pytorch.mutables import LayerChoice, InputChoice
  from nni.algorithms.nas.pytorch.classic_nas import get_and_apply_next_architecture
label_desc: Use image node_id 1 to create a new Net object from inherited base classes: nn with example: obj = Net(hidden_size)