class_docstr: The ENet implementation based on PaddlePaddle.
  
  The original article refers to
      Adam Paszke, Abhishek Chaurasia, Sangpil Kim, Eugenio Culurciello, et al."ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation"
      (https://arxiv.org/abs/1606.02147).
  
  Args:
      num_classes (int): The unique number of target classes.
      in_channels (int, optional): The channels of input image. Default: 3.
      pretrained (str, optional): The path or url of pretrained model. Default: None.
      encoder_relu (bool, optional): When ``True`` ReLU is used as the activation
          function; otherwise, PReLU is used. Default: False.
      decoder_relu (bool, optional): When ``True`` ReLU is used as the activation
          function; otherwise, PReLU is used. Default: True.
class_docstr_tok: ["The","ENet","implementation","based","on","PaddlePaddle",".","The","original","article","refers","to","Adam","Paszke",",","Abhishek","Chaurasia",",","Sangpil","Kim",",","Eugenio","Culurciello",",","et","al",".","``","ENet",":","A","Deep","Neural","Network","Architecture","for","Real-Time","Semantic","Segmentation","''","(","https",":","\/\/arxiv.org\/abs\/1606.02147",")",".","Args",":","num_classes","(","int",")",":","The","unique","number","of","target","classes",".","in_channels","(","int",",","optional",")",":","The","channels","of","input","image",".","Default",":","3.","pretrained","(","str",",","optional",")",":","The","path","or","url","of","pretrained","model",".","Default",":","None",".","encoder_relu","(","bool",",","optional",")",":","When","``","True","``","ReLU","is","used","as","the","activation","function",";","otherwise",",","PReLU","is","used",".","Default",":","False",".","decoder_relu","(","bool",",","optional",")",":","When","``","True","``","ReLU","is","used","as","the","activation","function",";","otherwise",",","PReLU","is","used",".","Default",":","True","."]
code: def __init__(
      self,
      num_classes,
      in_channels=3,
      pretrained=None,
      encoder_relu=False,
      decoder_relu=True,
  ):
      super(ENet, self).__init__()
  
      self.numclasses = num_classes
      self.initial_block = InitialBlock(
          in_channels, 16, relu=encoder_relu
      )
  
      self.downsample1_0 = DownsamplingBottleneck(
          16,
          64,
          return_indices=True,
          dropout_prob=0.01,
          relu=encoder_relu,
      )
      self.regular1_1 = RegularBottleneck(
          64, padding=1, dropout_prob=0.01, relu=encoder_relu
      )
      self.regular1_2 = RegularBottleneck(
          64, padding=1, dropout_prob=0.01, relu=encoder_relu
      )
      self.regular1_3 = RegularBottleneck(
          64, padding=1, dropout_prob=0.01, relu=encoder_relu
      )
      self.regular1_4 = RegularBottleneck(
          64, padding=1, dropout_prob=0.01, relu=encoder_relu
      )
  
      self.downsample2_0 = DownsamplingBottleneck(
          64,
          128,
          return_indices=True,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.regular2_1 = RegularBottleneck(
          128, padding=1, dropout_prob=0.1, relu=encoder_relu
      )
      self.dilated2_2 = RegularBottleneck(
          128,
          dilation=2,
          padding=2,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.asymmetric2_3 = RegularBottleneck(
          128,
          kernel_size=5,
          padding=2,
          asymmetric=True,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.dilated2_4 = RegularBottleneck(
          128,
          dilation=4,
          padding=4,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.regular2_5 = RegularBottleneck(
          128, padding=1, dropout_prob=0.1, relu=encoder_relu
      )
      self.dilated2_6 = RegularBottleneck(
          128,
          dilation=8,
          padding=8,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.asymmetric2_7 = RegularBottleneck(
          128,
          kernel_size=5,
          asymmetric=True,
          padding=2,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.dilated2_8 = RegularBottleneck(
          128,
          dilation=16,
          padding=16,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
  
      self.regular3_0 = RegularBottleneck(
          128, padding=1, dropout_prob=0.1, relu=encoder_relu
      )
      self.dilated3_1 = RegularBottleneck(
          128,
          dilation=2,
          padding=2,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.asymmetric3_2 = RegularBottleneck(
          128,
          kernel_size=5,
          padding=2,
          asymmetric=True,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.dilated3_3 = RegularBottleneck(
          128,
          dilation=4,
          padding=4,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.regular3_4 = RegularBottleneck(
          128, padding=1, dropout_prob=0.1, relu=encoder_relu
      )
      self.dilated3_5 = RegularBottleneck(
          128,
          dilation=8,
          padding=8,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.asymmetric3_6 = RegularBottleneck(
          128,
          kernel_size=5,
          asymmetric=True,
          padding=2,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
      self.dilated3_7 = RegularBottleneck(
          128,
          dilation=16,
          padding=16,
          dropout_prob=0.1,
          relu=encoder_relu,
      )
  
      self.upsample4_0 = UpsamplingBottleneck(
          128, 64, dropout_prob=0.1, relu=decoder_relu
      )
      self.regular4_1 = RegularBottleneck(
          64, padding=1, dropout_prob=0.1, relu=decoder_relu
      )
      self.regular4_2 = RegularBottleneck(
          64, padding=1, dropout_prob=0.1, relu=decoder_relu
      )
  
      self.upsample5_0 = UpsamplingBottleneck(
          64, 16, dropout_prob=0.1, relu=decoder_relu
      )
      self.regular5_1 = RegularBottleneck(
          16, padding=1, dropout_prob=0.1, relu=decoder_relu
      )
      self.transposed_conv = nn.Conv2DTranspose(
          16,
          num_classes,
          kernel_size=3,
          stride=2,
          padding=1,
          bias_attr=False,
      )
  
      self.pretrained = pretrained
      self.init_weight()
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg import utils
  from paddleseg.models import layers
  from paddleseg.cvlibs import manager, param_init
label_desc: Use image node_id 1 to create a new ENet object from inherited base classes: nn with example: obj = ENet(num_classes, in_channels, pretrained, encoder_relu, decoder_relu)