class_docstr: Pooling Pyramid Module used in PSPNet.
  
  Args:
      pool_scales (tuple | list): Pooling scales used in PPM.
      in_channels (int): Input channels.
      channels (int): Output Channels after modules, before conv_seg.
      act_cfg (dict): Config of activation layers.
      align_corners (bool): align_corners argument of F.interpolate.
class_docstr_tok: ["Pooling","Pyramid","Module","used","in","PSPNet",".","Args",":","pool_scales","(","tuple","|","list",")",":","Pooling","scales","used","in","PPM",".","in_channels","(","int",")",":","Input","channels",".","channels","(","int",")",":","Output","Channels","after","modules",",","before","conv_seg",".","act_cfg","(","dict",")",":","Config","of","activation","layers",".","align_corners","(","bool",")",":","align_corners","argument","of","F.interpolate","."]
code: def forward(self, x):
      ppm_outs = []
      for ppm in self.stages:
          ppm_out = ppm(x)
          upsampled_ppm_out = F.interpolate(
              ppm_out,
              paddle.shape(x)[2:],
              mode="bilinear",
              align_corners=self.align_corners,
          )
          ppm_outs.append(upsampled_ppm_out)
      return ppm_outs
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg import utils
  from paddleseg.cvlibs import manager
  from paddleseg.models import layers
label_desc: Use image node_id 2 for calling the PPM obj's underlying member method code with example usage: obj.forward(x) and returns: ppm_outs