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 forward(self, x):
      input_size = x.shape
      x = self.initial_block(x)
  
      stage1_input_size = x.shape
      x, max_indices1_0 = self.downsample1_0(x)
      x = self.regular1_1(x)
      x = self.regular1_2(x)
      x = self.regular1_3(x)
      x = self.regular1_4(x)
  
      stage2_input_size = x.shape
      x, max_indices2_0 = self.downsample2_0(x)
      x = self.regular2_1(x)
      x = self.dilated2_2(x)
      x = self.asymmetric2_3(x)
      x = self.dilated2_4(x)
      x = self.regular2_5(x)
      x = self.dilated2_6(x)
      x = self.asymmetric2_7(x)
      x = self.dilated2_8(x)
  
      x = self.regular3_0(x)
      x = self.dilated3_1(x)
      x = self.asymmetric3_2(x)
      x = self.dilated3_3(x)
      x = self.regular3_4(x)
      x = self.dilated3_5(x)
      x = self.asymmetric3_6(x)
      x = self.dilated3_7(x)
  
      x = self.upsample4_0(
          x, max_indices2_0, output_size=stage2_input_size
      )
      x = self.regular4_1(x)
      x = self.regular4_2(x)
  
      x = self.upsample5_0(
          x, max_indices1_0, output_size=stage1_input_size
      )
      x = self.regular5_1(x)
      x = self.transposed_conv(x, output_size=input_size[2:])
      return [x]
  
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 2 for calling the ENet obj's underlying member method code with example usage: obj.forward(x) and returns: list