class_docstr: Description
  -----------
  The HGP-SL pooling layer from
  `Hierarchical Graph Pooling with Structure Learning <https://arxiv.org/pdf/1911.05954.pdf>`
  
  Parameters
  ----------
  in_feat : int
      The number of input node feature's channels
  ratio : float, optional
      Pooling ratio. Default: 0.8
  sample : bool, optional
      Whether use k-hop union graph to increase efficiency.
      Currently we only support full graph. Default: :obj:`False`
  sym_score_norm : bool, optional
      Use symmetric norm for adjacency or not. Default: :obj:`True`
  sparse : bool, optional
      Use edge sparsemax instead of edge softmax. Default: :obj:`True`
  sl : bool, optional
      Use structure learining module or not. Default: :obj:`True`
  lamb : float, optional
      The lambda parameter as weight of raw adjacency as described in the
      HGP-SL paper. Default: 1.0
  negative_slop : float, optional
      Negative slop for leaky_relu. Default: 0.2
  
  Returns
  -------
  DGLGraph
      The pooled graph.
  torch.Tensor
      Node features
  torch.Tensor
      Edge features
  torch.Tensor
      Permutation index
code: def reset_parameters(self):
      nn.init.xavier_normal_(self.att.data)
  
imports: import dgl
  import dgl.function
  import scipy.sparse
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl import DGLGraph
  from dgl.nn import AvgPooling, GraphConv, MaxPooling
  from dgl.ops import edge_softmax
  from functions import edge_sparsemax
  from torch import Tensor
  from torch.nn import Parameter
  from utils import get_batch_id, topk
label_desc: Use image node_id 2 for calling the HGPSLPool obj's underlying member method code with example usage: obj.reset_parameters() without return types