code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size,
      stride,
      padding,
      num_groups=1,
      act="relu",
      conv_lr=0.1,
      conv_decay=0.0,
      norm_decay=0.0,
      norm_type="bn",
      name=None,
  ):
      super(ConvBNLayer, self).__init__()
      self.act = act
      self._conv = nn.Conv2D(
          in_channels,
          out_channels,
          kernel_size=kernel_size,
          stride=stride,
          padding=padding,
          groups=num_groups,
          weight_attr=ParamAttr(
              learning_rate=conv_lr, initializer=KaimingNormal()
          ),
          bias_attr=False,
      )
  
      if norm_type in ["bn", "sync_bn"]:
          self._batch_norm = nn.BatchNorm2D(out_channels)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from paddle.nn.initializer import KaimingNormal
  from ppdet.core.workspace import register, serializable
  from ..shape_spec import ShapeSpec
label_desc: Use image node_id 1 to create a new ConvBNLayer object from inherited base classes: nn with example: obj = ConvBNLayer(in_channels, out_channels, kernel_size, stride, padding, num_groups, act, conv_lr, conv_decay, norm_decay, norm_type, name)