code: def __init__(self, in_channels, out_channels):
      super(FPN, self).__init__()
  
      # Top layer
      self.toplayer_ = Conv_BN_ReLU(
          in_channels[3],
          out_channels,
          kernel_size=1,
          stride=1,
          padding=0,
      )
      # Lateral layers
      self.latlayer1_ = Conv_BN_ReLU(
          in_channels[2],
          out_channels,
          kernel_size=1,
          stride=1,
          padding=0,
      )
  
      self.latlayer2_ = Conv_BN_ReLU(
          in_channels[1],
          out_channels,
          kernel_size=1,
          stride=1,
          padding=0,
      )
  
      self.latlayer3_ = Conv_BN_ReLU(
          in_channels[0],
          out_channels,
          kernel_size=1,
          stride=1,
          padding=0,
      )
  
      # Smooth layers
      self.smooth1_ = Conv_BN_ReLU(
          out_channels, out_channels, kernel_size=3, stride=1, padding=1
      )
  
      self.smooth2_ = Conv_BN_ReLU(
          out_channels, out_channels, kernel_size=3, stride=1, padding=1
      )
  
      self.smooth3_ = Conv_BN_ReLU(
          out_channels, out_channels, kernel_size=3, stride=1, padding=1
      )
  
      self.out_channels = out_channels * 4
      for m in self.sublayers():
          if isinstance(m, nn.Conv2D):
              n = (
                  m._kernel_size[0]
                  * m._kernel_size[1]
                  * m._out_channels
              )
              m.weight = paddle.create_parameter(
                  shape=m.weight.shape,
                  dtype="float32",
                  default_initializer=paddle.nn.initializer.Normal(
                      0, math.sqrt(2.0 / n)
                  ),
              )
          elif isinstance(m, nn.BatchNorm2D):
              m.weight = paddle.create_parameter(
                  shape=m.weight.shape,
                  dtype="float32",
                  default_initializer=paddle.nn.initializer.Constant(
                      1.0
                  ),
              )
              m.bias = paddle.create_parameter(
                  shape=m.bias.shape,
                  dtype="float32",
                  default_initializer=paddle.nn.initializer.Constant(
                      0.0
                  ),
              )
  
file_path: PaddleOCR/ppocr/modeling/necks/fpn.py
imports: import paddle.nn
  import paddle
  import math
  import paddle.nn.functional
label_desc: Use image node_id 1 to create a new FPN object from inherited base classes: nn with example: obj = FPN(in_channels, out_channels)