code: def __init__(
      self,
      in_channels,
      out_channels,
      groups,
      pool_size=2,
      pool_stride=2,
      pool_padding=0,
      name=None,
  ):
      super(ConvBlock, self).__init__()
  
      self.groups = groups
      self.conv0 = nn.Conv2D(
          in_channels=in_channels,
          out_channels=out_channels,
          kernel_size=3,
          stride=1,
          padding=1,
      )
      self.conv_out_list = []
      for i in range(1, groups):
          conv_out = self.add_sublayer(
              "conv{}".format(i),
              Conv2D(
                  in_channels=out_channels,
                  out_channels=out_channels,
                  kernel_size=3,
                  stride=1,
                  padding=1,
              ),
          )
          self.conv_out_list.append(conv_out)
  
      self.pool = MaxPool2D(
          kernel_size=pool_size,
          stride=pool_stride,
          padding=pool_padding,
          ceil_mode=True,
      )
  
imports: from __future__ import division
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle import ParamAttr
  from paddle.nn import Conv2D, MaxPool2D
  from ppdet.core.workspace import register, serializable
  from ..shape_spec import ShapeSpec
label_desc: Use image node_id 1 to create a new ConvBlock object from inherited base classes: nn with example: obj = ConvBlock(in_channels, out_channels, groups, pool_size, pool_stride, pool_padding, name)