class_docstr: CSP (Cross Stage Partial) layer with 3 convs, named C3 in YOLOv5
code: def __init__(
      self,
      in_channels,
      out_channels,
      num_blocks=1,
      shortcut=True,
      expansion=0.5,
      depthwise=False,
      bias=False,
      act="silu",
  ):
      super(CSPLayer, self).__init__()
      hidden_channels = int(out_channels * expansion)
      self.conv1 = BaseConv(
          in_channels,
          hidden_channels,
          ksize=1,
          stride=1,
          bias=bias,
          act=act,
      )
      self.conv2 = BaseConv(
          in_channels,
          hidden_channels,
          ksize=1,
          stride=1,
          bias=bias,
          act=act,
      )
      self.bottlenecks = nn.Sequential(
          *[
              BottleNeck(
                  hidden_channels,
                  hidden_channels,
                  shortcut=shortcut,
                  expansion=1.0,
                  depthwise=depthwise,
                  bias=bias,
                  act=act,
              )
              for _ in range(num_blocks)
          ]
      )
      self.conv3 = BaseConv(
          hidden_channels * 2,
          out_channels,
          ksize=1,
          stride=1,
          bias=bias,
          act=act,
      )
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from paddle.regularizer import L2Decay
  from ppdet.core.workspace import register, serializable
  from ppdet.modeling.initializer import conv_init_
  from ..shape_spec import ShapeSpec
label_desc: Use image node_id 1 to create a new CSPLayer object from inherited base classes: nn with example: obj = CSPLayer(in_channels, out_channels, num_blocks, shortcut, expansion, depthwise, bias, act)