class_docstr: The basic bottleneck block used in Darknet.
  Each Block consists of two ConvModules and the input is added to the
  final output. Each ConvModule is composed of Conv, BN, and act.
  The first convLayer has filter size of 1x1 and the second one has the
  filter size of 3x3.
  Args:
      in_channels (int): The input channels of this Module.
      out_channels (int): The output channels of this Module.
      expansion (int): The kernel size of the convolution. Default: 0.5
      add_identity (bool): Whether to add identity to the out.
          Default: True
      use_depthwise (bool): Whether to use depthwise separable convolution.
          Default: False
code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size=3,
      expansion=0.5,
      add_identity=True,
      use_depthwise=False,
      act="leaky_relu",
  ):
      super(DarknetBottleneck, self).__init__()
      hidden_channels = int(out_channels * expansion)
      conv_func = DPModule if use_depthwise else ConvBNLayer
      self.conv1 = ConvBNLayer(
          in_channel=in_channels,
          out_channel=hidden_channels,
          kernel_size=1,
          act=act,
      )
      self.conv2 = conv_func(
          in_channel=hidden_channels,
          out_channel=out_channels,
          kernel_size=kernel_size,
          stride=1,
          act=act,
      )
      self.add_identity = add_identity and in_channels == out_channels
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
label_desc: Use image node_id 1 to create a new DarknetBottleneck object from inherited base classes: nn with example: obj = DarknetBottleneck(in_channels, out_channels, kernel_size, expansion, add_identity, use_depthwise, act)