code: def __init__(
      self,
      channels=256,
      num_levels=5,
      eps=1e-5,
      use_weighted_fusion=True,
      kernel_size=3,
      norm_type="bn",
      norm_groups=32,
      act="swish",
  ):
      super(BiFPNCell, self).__init__()
      self.channels = channels
      self.num_levels = num_levels
      self.eps = eps
      self.use_weighted_fusion = use_weighted_fusion
  
      # up
      self.conv_up = nn.LayerList(
          [
              SeparableConvLayer(
                  self.channels,
                  kernel_size=kernel_size,
                  norm_type=norm_type,
                  norm_groups=norm_groups,
                  act=act,
              )
              for _ in range(self.num_levels - 1)
          ]
      )
      # down
      self.conv_down = nn.LayerList(
          [
              SeparableConvLayer(
                  self.channels,
                  kernel_size=kernel_size,
                  norm_type=norm_type,
                  norm_groups=norm_groups,
                  act=act,
              )
              for _ in range(self.num_levels - 1)
          ]
      )
  
      if self.use_weighted_fusion:
          self.up_weights = self.create_parameter(
              shape=[self.num_levels - 1, 2],
              attr=ParamAttr(initializer=Constant(1.0)),
          )
          self.down_weights = self.create_parameter(
              shape=[self.num_levels - 1, 3],
              attr=ParamAttr(initializer=Constant(1.0)),
          )
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from paddle.nn.initializer import Constant
  from ppdet.core.workspace import register, serializable
  from ppdet.modeling.layers import ConvNormLayer
  from ..shape_spec import ShapeSpec
label_desc: Use image node_id 1 to create a new BiFPNCell object from inherited base classes: nn with example: obj = BiFPNCell(channels, num_levels, eps, use_weighted_fusion, kernel_size, norm_type, norm_groups, act)