code: def forward(self, x):
      c2, c3, c4, c5 = x
  
      in5 = self.in5_conv(c5)
      in4 = self.in4_conv(c4)
      in3 = self.in3_conv(c3)
      in2 = self.in2_conv(c2)
  
      out4 = in4 + F.upsample(
          in5, size=in4.shape[2:4], mode="nearest", align_mode=1
      )  # 1/16
      out3 = in3 + F.upsample(
          out4, size=in3.shape[2:4], mode="nearest", align_mode=1
      )  # 1/8
      out2 = in2 + F.upsample(
          out3, size=in2.shape[2:4], mode="nearest", align_mode=1
      )  # 1/4
  
      p4 = F.upsample(
          out4, size=in5.shape[2:4], mode="nearest", align_mode=1
      )
      p3 = F.upsample(
          out3, size=in5.shape[2:4], mode="nearest", align_mode=1
      )
      p2 = F.upsample(
          out2, size=in5.shape[2:4], mode="nearest", align_mode=1
      )
      fuse = paddle.concat([in5, p4, p3, p2], axis=1)
      fuse_conv = self.fuse_conv(fuse) * 0.005
      return [c5 + fuse_conv]
  
file_path: PaddleOCR/ppocr/modeling/necks/table_fpn.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  from paddle import nn
  import paddle.nn.functional
  from paddle import ParamAttr
label_desc: Use image node_id 2 for calling the TableFPN obj's underlying member method code with example usage: obj.forward(x) and returns: list