code: def forward(self, conv_out, segSize=None):
      conv5 = conv_out[-1]
  
      input_size = conv5.size()
      ppm_out = [conv5]
      for pool_scale in self.ppm:
          ppm_out.append(
              nn.functional.upsample(
                  pool_scale(conv5),
                  (input_size[2], input_size[3]),
                  mode="bilinear",
              )
          )
      ppm_out = torch.cat(ppm_out, 1)
  
      x = self.conv_last(ppm_out)
  
      if self.use_softmax:  # is True during inference
          x = nn.functional.upsample(x, size=segSize, mode="bilinear")
          x = nn.functional.softmax(x, dim=1)
      else:
          x = nn.functional.log_softmax(x, dim=1)
      return x
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from .None import seg_resnet
  from .None import seg_resnext
label_desc: Use image node_id 2 for calling the PPMBilinear obj's underlying member method code with example usage: obj.forward(conv_out, segSize) and returns: x