code: def __init__(
      self,
      name,
      in_channels,
      out_channels,
      kernel_size,
      stride=1,
      padding=0,
      dilation=1,
      groups=1,
      use_bias=False,
      norm_layer=None,
      act=None,
      act_attr=None,
  ):
      super(CBN, self).__init__()
      if use_bias:
          bias_attr = paddle.ParamAttr(name=name + "_bias")
      else:
          bias_attr = None
      self._conv = paddle.nn.Conv2D(
          in_channels=in_channels,
          out_channels=out_channels,
          kernel_size=kernel_size,
          stride=stride,
          padding=padding,
          dilation=dilation,
          groups=groups,
          weight_attr=paddle.ParamAttr(name=name + "_weights"),
          bias_attr=bias_attr,
      )
      if norm_layer:
          self._norm_layer = getattr(paddle.nn, norm_layer)(
              num_features=out_channels, name=name + "_bn"
          )
      else:
          self._norm_layer = None
      if act:
          if act_attr:
              self._act = getattr(paddle.nn, act)(
                  **act_attr, name=name + "_" + act
              )
          else:
              self._act = getattr(paddle.nn, act)(name=name + "_" + act)
      else:
          self._act = None
  
imports: import paddle
  import paddle.nn
  from arch.spectral_norm import spectral_norm
label_desc: Use image node_id 1 to create a new CBN object from inherited base classes: nn with example: obj = CBN(name, in_channels, out_channels, kernel_size, stride, padding, dilation, groups, use_bias, norm_layer, act, act_attr)