class_docstr: Implementation of GMPool_k Block 
  
  The GMPool_k Block in paper: Accurate Learning of Graph Representations
  with Graph Multiset Pooling
  
  Args:
      dim: The size of inputs.
      num_seeds: The number of nodes after pooling operation.
      num_heads: The number of attention heads.
      Conv: The Graph Convolution Block for GMH. Default: None
      layer_norm: Whether to use LayerNorm.
code: def __init__(
      self, dim, num_heads, num_seeds, conv=None, layer_norm=False
  ):
      super(PMA, self).__init__()
      self.Q_S = self.create_parameter(
          shape=[1, num_seeds, dim],
          dtype="float32",
          default_initializer=paddle.nn.initializer.KaimingUniform(),
      )
      self.dim = dim
      self.num_seeds = num_seeds
      self.mab = MAB(
          dim, dim, dim, num_heads, conv=conv, layer_norm=layer_norm
      )
  
imports: import paddle
  import paddle.nn
  import math
  import paddle.nn.functional
  import pgl
  from pgl.utils.transform import to_dense_batch
label_desc: Use image node_id 1 to create a new PMA object from inherited base classes: nn with example: obj = PMA(dim, num_heads, num_seeds, conv, layer_norm)