code: def __init__(
      self, node_id, num_prev_nodes, channels, num_downsample_connect
  ):
      super().__init__()
      self.ops = nn.ModuleList()
      choice_keys = []
      for i in range(num_prev_nodes):
          stride = 2 if i < num_downsample_connect else 1
          choice_keys.append("{}_p{}".format(node_id, i))
          self.ops.append(
              mutables.LayerChoice(
                  [
                      ops.OPS[k](channels, stride, False)
                      for k in ops.PRIMITIVES
                  ],
                  key=choice_keys[-1],
              )
          )
      self.drop_path = ops.DropPath()
      self.input_switch = mutables.InputChoice(
          choose_from=choice_keys,
          n_chosen=2,
          key="{}_switch".format(node_id),
      )
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  import ops
  import numpy
  from nni.nas.pytorch import mutables
  from utils import parse_results
  from aux_head import DistillHeadCIFAR, DistillHeadImagenet, AuxiliaryHeadCIFAR, AuxiliaryHeadImageNet
label_desc: Use image node_id 1 to create a new Node object from inherited base classes: nn with example: obj = Node(node_id, num_prev_nodes, channels, num_downsample_connect)