class_docstr: Pyramid pooling module originally in PSPNet.
  
  Args:
      in_channels (int): The number of intput channels to pyramid pooling module.
      out_channels (int): The number of output channels after pyramid pooling module.
      bin_sizes (tuple, optional): The out size of pooled feature maps. Default: (1, 2, 3, 6).
      dim_reduction (bool, optional): A bool value represents if reducing dimension after pooling. Default: True.
      align_corners (bool): An argument of F.interpolate. It should be set to False when the output size of feature
          is even, e.g. 1024x512, otherwise it is True, e.g. 769x769.
class_docstr_tok: ["Pyramid","pooling","module","originally","in","PSPNet",".","Args",":","in_channels","(","int",")",":","The","number","of","intput","channels","to","pyramid","pooling","module",".","out_channels","(","int",")",":","The","number","of","output","channels","after","pyramid","pooling","module",".","bin_sizes","(","tuple",",","optional",")",":","The","out","size","of","pooled","feature","maps",".","Default",":","(","1",",","2",",","3",",","6",")",".","dim_reduction","(","bool",",","optional",")",":","A","bool","value","represents","if","reducing","dimension","after","pooling",".","Default",":","True",".","align_corners","(","bool",")",":","An","argument","of","F.interpolate",".","It","should","be","set","to","False","when","the","output","size","of","feature","is","even",",","e.g",".","1024x512",",","otherwise","it","is","True",",","e.g",".","769x769","."]
code: def __init__(
      self,
      in_channels,
      out_channels,
      bin_sizes,
      dim_reduction,
      align_corners,
  ):
      super().__init__()
  
      self.bin_sizes = bin_sizes
  
      inter_channels = in_channels
      if dim_reduction:
          inter_channels = in_channels // len(bin_sizes)
  
      # we use dimension reduction after pooling mentioned in original implementation.
      self.stages = nn.LayerList(
          [
              self._make_stage(in_channels, inter_channels, size)
              for size in bin_sizes
          ]
      )
  
      self.conv_bn_relu2 = layers.ConvBNReLU(
          in_channels=in_channels + inter_channels * len(bin_sizes),
          out_channels=out_channels,
          kernel_size=3,
          padding=1,
      )
  
      self.align_corners = align_corners
  
file_path: PaddleSeg/paddleseg/models/layers/pyramid_pool.py
imports: import paddle
  import paddle.nn.functional
  from paddle import nn
  from paddleseg.models import layers
label_desc: Use image node_id 1 to create a new PPModule object from inherited base classes: nn with example: obj = PPModule(in_channels, out_channels, bin_sizes, dim_reduction, align_corners)