class_docstr: This class defines the ESPNet network
docstr: :param num_classes: number of classes in the dataset. Default is 20 for the cityscapes
  :param p: depth multiplier
  :param q: depth multiplier
  :param encoderFile: pretrained encoder weights. Recall that we first trained the ESPNet-C and then attached the
                      RUM-based light weight decoder. See paper for more details.
docstr_tok: [":","param","num_classes",":","number","of","classes","in","the","dataset",".","Default","is","20","for","the","cityscapes",":","param","p",":","depth","multiplier",":","param","q",":","depth","multiplier",":","param","encoderFile",":","pretrained","encoder","weights",".","Recall","that","we","first","trained","the","ESPNet-C","and","then","attached","the","RUM-based","light","weight","decoder",".","See","paper","for","more","details","."]
code: def __init__(self, num_classes=20, p=2, q=3, encoderFile=None):
      """
      :param num_classes: number of classes in the dataset. Default is 20 for the cityscapes
      :param p: depth multiplier
      :param q: depth multiplier
      :param encoderFile: pretrained encoder weights. Recall that we first trained the ESPNet-C and then attached the
                          RUM-based light weight decoder. See paper for more details.
      """
      super().__init__()
      self.encoder = ESPNet_Encoder(num_classes, p, q)
      if encoderFile is not None:
          self.encoder.load_state_dict(torch.load(encoderFile))
          print("Encoder loaded!")
      # load the encoder modules
      self.modules = []
      for i, m in enumerate(self.encoder.children()):
          self.modules.append(m)
  
      # light-weight decoder
      self.level3_C = C(128 + 3, num_classes, 1, 1)
      self.br = nn.BatchNorm2d(num_classes, eps=1e-03)
      self.conv = CBR(19 + num_classes, num_classes, 3, 1)
  
      self.up_l3 = nn.Sequential(
          nn.ConvTranspose2d(
              num_classes,
              num_classes,
              2,
              stride=2,
              padding=0,
              output_padding=0,
              bias=False,
          )
      )
      self.combine_l2_l3 = nn.Sequential(
          BR(2 * num_classes),
          DilatedParllelResidualBlockB(
              2 * num_classes, num_classes, add=False
          ),
      )
  
      self.up_l2 = nn.Sequential(
          nn.ConvTranspose2d(
              num_classes,
              num_classes,
              2,
              stride=2,
              padding=0,
              output_padding=0,
              bias=False,
          ),
          BR(num_classes),
      )
  
      self.classifier = nn.ConvTranspose2d(
          num_classes,
          num_classes,
          2,
          stride=2,
          padding=0,
          output_padding=0,
          bias=False,
      )
  
imports: import torch
  import torch.nn
label_desc: Use image node_id 1 to create a new ESPNet object from inherited base classes: nn with example: obj = ESPNet(num_classes, p, q, encoderFile)