code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size,
      stride=1,
      groups=1,
      act=None,
      name=None,
  ):
      super(ConvBNLayer, self).__init__()
      self.conv = nn.Conv2D(
          in_channels=in_channels,
          out_channels=out_channels,
          kernel_size=kernel_size,
          stride=stride,
          padding=(kernel_size - 1) // 2,
          groups=groups,
          weight_attr=ParamAttr(name=name + "_weights"),
          bias_attr=False,
      )
      bn_name = "bn_" + name
      self.bn = nn.BatchNorm(
          out_channels,
          act=act,
          param_attr=ParamAttr(name=bn_name + "_scale"),
          bias_attr=ParamAttr(bn_name + "_offset"),
          moving_mean_name=bn_name + "_mean",
          moving_variance_name=bn_name + "_variance",
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import paddle
  from paddle import nn, ParamAttr
  from paddle.nn import functional
  import numpy
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, groups, act, name)