code: def __init__(
      self,
      num_channels,
      filter_size,
      num_filters,
      stride,
      padding,
      num_groups=1,
  ):
      super(ConvBNLayer, self).__init__()
  
      self.conv = nn.Conv2D(
          in_channels=num_channels,
          out_channels=num_filters,
          kernel_size=filter_size,
          stride=stride,
          padding=padding,
          groups=num_groups,
          weight_attr=ParamAttr(initializer=KaimingNormal()),
          bias_attr=False,
      )
  
      self.bn = nn.BatchNorm2D(
          num_filters,
          weight_attr=ParamAttr(initializer=Uniform(0, 1)),
          bias_attr=ParamAttr(initializer=Constant(0)),
      )
      self.relu = nn.ReLU()
  
file_path: PaddleOCR/ppocr/modeling/backbones/rec_shallow_cnn.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import numpy
  import paddle
  from paddle import ParamAttr
  import paddle.nn
  import paddle.nn.functional
  from paddle.nn import MaxPool2D
  from paddle.nn.initializer import KaimingNormal, Uniform, Constant
label_desc: Use image node_id 1 to create a new ConvBNLayer object from inherited base classes: nn with example: obj = ConvBNLayer(num_channels, filter_size, num_filters, stride, padding, num_groups)