class_docstr: Path Aggregation Network with CSP module.
  Args:
      in_channels (List[int]): Number of input channels per scale.
      out_channels (int): Number of output channels (used at each scale)
      kernel_size (int): The conv2d kernel size of this Module.
      num_csp_blocks (int): Number of bottlenecks in CSPLayer. Default: 1
      use_depthwise (bool): Whether to depthwise separable convolution in
          blocks. Default: True
docstr: Args:
      inputs (tuple[Tensor]): input features.
  Returns:
      tuple[Tensor]: CSPPAN features.
docstr_tok: ["Args",":","inputs","(","tuple","[","Tensor","]",")",":","input","features",".","Returns",":","tuple","[","Tensor","]",":","CSPPAN","features","."]
code: def forward(self, inputs):
      """
      Args:
          inputs (tuple[Tensor]): input features.
      Returns:
          tuple[Tensor]: CSPPAN features.
      """
      assert len(inputs) == len(self.in_channels)
      inputs = self.conv_t(inputs)
  
      # top-down path
      inner_outs = [inputs[-1]]
      for idx in range(len(self.in_channels) - 1, 0, -1):
          feat_heigh = inner_outs[0]
          feat_low = inputs[idx - 1]
          upsample_feat = F.upsample(
              feat_heigh,
              size=paddle.shape(feat_low)[2:4],
              mode="nearest",
          )
  
          inner_out = self.top_down_blocks[
              len(self.in_channels) - 1 - idx
          ](paddle.concat([upsample_feat, feat_low], 1))
          inner_outs.insert(0, inner_out)
  
      # bottom-up path
      outs = [inner_outs[0]]
      for idx in range(len(self.in_channels) - 1):
          feat_low = outs[-1]
          feat_height = inner_outs[idx + 1]
          downsample_feat = self.downsamples[idx](feat_low)
          out = self.bottom_up_blocks[idx](
              paddle.concat([downsample_feat, feat_height], 1)
          )
          outs.append(out)
  
      return tuple(outs)
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
label_desc: Use image node_id 2 for calling the CSPPAN obj's underlying member method code with example usage: obj.forward(inputs) and returns: tuple