code: def __init__(
      self,
      n_nodes,
      channels_pp,
      channels_p,
      channels,
      reduction_p,
      reduction,
  ):
      super().__init__()
      self.reduction = reduction
      self.n_nodes = n_nodes
  
      # If previous cell is reduction cell, current input size does not match with
      # output size of cell[k-2]. So the output[k-2] should be reduced by preprocessing.
      if reduction_p:
          self.preproc0 = ops.FactorizedReduce(
              channels_pp, channels, affine=False
          )
      else:
          self.preproc0 = ops.StdConv(
              channels_pp, channels, 1, 1, 0, affine=False
          )
      self.preproc1 = ops.StdConv(
          channels_p, channels, 1, 1, 0, affine=False
      )
  
      # generate dag
      self.mutable_ops = nn.ModuleList()
      for depth in range(2, self.n_nodes + 2):
          self.mutable_ops.append(
              Node(
                  "{}_n{}".format(
                      "reduce" if reduction else "normal", depth
                  ),
                  depth,
                  channels,
                  2 if reduction else 0,
              )
          )
  
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 Cell object from inherited base classes: nn with example: obj = Cell(n_nodes, channels_pp, channels_p, channels, reduction_p, reduction)