code: def __init__(
      self,
      ch_in,
      ch_out,
      filter_size,
      stride=1,
      norm_type="bn",
      norm_groups=32,
      use_dcn=False,
      norm_momentum=0.9,
      norm_decay=0.0,
      freeze_norm=False,
      act=None,
      name=None,
  ):
      super(ConvNormLayer, self).__init__()
      assert norm_type in ["bn", "sync_bn", "gn"]
  
      self.act = act
      self.conv = nn.Conv2D(
          in_channels=ch_in,
          out_channels=ch_out,
          kernel_size=filter_size,
          stride=stride,
          padding=(filter_size - 1) // 2,
          groups=1,
          weight_attr=ParamAttr(initializer=Normal(mean=0.0, std=0.01)),
          bias_attr=False,
      )
  
      norm_lr = 0.0 if freeze_norm else 1.0
  
      param_attr = ParamAttr(
          learning_rate=norm_lr, regularizer=L2Decay(norm_decay)
      )
      bias_attr = ParamAttr(
          learning_rate=norm_lr, regularizer=L2Decay(norm_decay)
      )
      global_stats = True if freeze_norm else None
      if norm_type in ["bn", "sync_bn"]:
          self.norm = nn.BatchNorm2D(
              ch_out,
              momentum=norm_momentum,
              weight_attr=param_attr,
              bias_attr=bias_attr,
              use_global_stats=global_stats,
          )
      elif norm_type == "gn":
          self.norm = nn.GroupNorm(
              num_groups=norm_groups,
              num_channels=ch_out,
              weight_attr=param_attr,
              bias_attr=bias_attr,
          )
      norm_params = self.norm.parameters()
      if freeze_norm:
          for param in norm_params:
              param.stop_gradient = True
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle.nn import AdaptiveAvgPool2D, Linear
  from paddle.regularizer import L2Decay
  from paddle import ParamAttr
  from paddle.nn.initializer import Normal, Uniform
  from numbers import Integral
  import math
  from ppdet.core.workspace import register
  from ..shape_spec import ShapeSpec
label_desc: Use image node_id 1 to create a new ConvNormLayer object from inherited base classes: nn with example: obj = ConvNormLayer(ch_in, ch_out, filter_size, stride, norm_type, norm_groups, use_dcn, norm_momentum, norm_decay, freeze_norm, act, name)