code: def __init__(
      self, input_channels, output_channels, groups, name=None
  ):
      super(ConvBlock, self).__init__()
  
      self.groups = groups
      self._conv_1 = Conv2D(
          in_channels=input_channels,
          out_channels=output_channels,
          kernel_size=3,
          stride=1,
          padding=1,
          weight_attr=ParamAttr(name=name + "1_weights"),
          bias_attr=False,
      )
      if groups == 2 or groups == 3 or groups == 4:
          self._conv_2 = Conv2D(
              in_channels=output_channels,
              out_channels=output_channels,
              kernel_size=3,
              stride=1,
              padding=1,
              weight_attr=ParamAttr(name=name + "2_weights"),
              bias_attr=False,
          )
      if groups == 3 or groups == 4:
          self._conv_3 = Conv2D(
              in_channels=output_channels,
              out_channels=output_channels,
              kernel_size=3,
              stride=1,
              padding=1,
              weight_attr=ParamAttr(name=name + "3_weights"),
              bias_attr=False,
          )
      if groups == 4:
          self._conv_4 = Conv2D(
              in_channels=output_channels,
              out_channels=output_channels,
              kernel_size=3,
              stride=1,
              padding=1,
              weight_attr=ParamAttr(name=name + "4_weights"),
              bias_attr=False,
          )
  
      self._pool = MaxPool2D(
          kernel_size=2, stride=2, padding=0, return_mask=True
      )
  
imports: import paddle
  from paddle import ParamAttr
  import paddle.nn
  import paddle.nn.functional
  from paddle.nn import Conv2D, BatchNorm, Linear, Dropout
  from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
  from paddleseg.cvlibs import manager
  import ppmatting
label_desc: Use image node_id 1 to create a new ConvBlock object from inherited base classes: nn with example: obj = ConvBlock(input_channels, output_channels, groups, name)