class_docstr: The CCNet implementation based on PaddlePaddle.
  
  The original article refers to
  Zilong Huang, et al. "CCNet: Criss-Cross Attention for Semantic Segmentation"
  (https://arxiv.org/abs/1811.11721)
  
  Args:
      num_classes (int): The unique number of target classes.
      backbone (paddle.nn.Layer): Backbone network, currently support Resnet18_vd/Resnet34_vd/Resnet50_vd/Resnet101_vd.
      backbone_indices (tuple, list, optional): Two values in the tuple indicate the indices of output of backbone. Default: (2, 3).
      enable_auxiliary_loss (bool, optional): A bool value indicates whether adding auxiliary loss. Default: True.
      dropout_prob (float, optional): The probability of dropout. Default: 0.0.
      recurrence (int, optional): The number of recurrent operations. Defautl: 1.
      align_corners (bool, optional): An argument of F.interpolate. It should be set to False when the feature size is even,
          e.g. 1024x512, otherwise it is True, e.g. 769x769. Default: False.
      pretrained (str, optional): The path or url of pretrained model. Default: None.
class_docstr_tok: ["The","CCNet","implementation","based","on","PaddlePaddle",".","The","original","article","refers","to","Zilong","Huang",",","et","al",".","``","CCNet",":","Criss-Cross","Attention","for","Semantic","Segmentation","''","(","https",":","\/\/arxiv.org\/abs\/1811.11721",")","Args",":","num_classes","(","int",")",":","The","unique","number","of","target","classes",".","backbone","(","paddle.nn.Layer",")",":","Backbone","network",",","currently","support","Resnet18_vd\/Resnet34_vd\/Resnet50_vd\/Resnet101_vd",".","backbone_indices","(","tuple",",","list",",","optional",")",":","Two","values","in","the","tuple","indicate","the","indices","of","output","of","backbone",".","Default",":","(","2",",","3",")",".","enable_auxiliary_loss","(","bool",",","optional",")",":","A","bool","value","indicates","whether","adding","auxiliary","loss",".","Default",":","True",".","dropout_prob","(","float",",","optional",")",":","The","probability","of","dropout",".","Default",":","0.0.","recurrence","(","int",",","optional",")",":","The","number","of","recurrent","operations",".","Defautl",":","1.","align_corners","(","bool",",","optional",")",":","An","argument","of","F.interpolate",".","It","should","be","set","to","False","when","the","feature","size","is","even",",","e.g",".","1024x512",",","otherwise","it","is","True",",","e.g",".","769x769",".","Default",":","False",".","pretrained","(","str",",","optional",")",":","The","path","or","url","of","pretrained","model",".","Default",":","None","."]
code: def forward(self, x):
      feat_list = self.backbone(x)
      logit_list = []
      output = self.head(feat_list[self.backbone_indices[-1]])
      logit_list.append(output)
      if self.training and self.enable_auxiliary_loss:
          aux_out = self.aux_head(feat_list[self.backbone_indices[-2]])
          logit_list.append(aux_out)
      return [
          F.interpolate(
              logit,
              paddle.shape(x)[2:],
              mode="bilinear",
              align_corners=self.align_corners,
          )
          for logit in logit_list
      ]
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
  from paddleseg.utils import utils
label_desc: Use image node_id 3 for calling the CCNet obj's underlying member method code with example usage: obj.forward(x) and returns: unknown