class_docstr: Graph attention layer from `Graph Attention Networks
  <https://arxiv.org/pdf/1710.10903.pdf>`__, with the sparse aggregation
  accelerated by cugraph-ops.
  
  See :class:`dgl.nn.pytorch.conv.GATConv` for mathematical model.
  
  This module depends on :code:`pylibcugraphops` package, which can be
  installed via :code:`conda install -c nvidia pylibcugraphops=23.04`.
  :code:`pylibcugraphops` 23.04 requires python 3.8.x or 3.10.x.
  
  .. note::
      This is an **experimental** feature.
  
  Parameters
  ----------
  in_feats : int
      Input feature size.
  out_feats : int
      Output feature size.
  num_heads : int
      Number of heads in Multi-Head Attention.
  feat_drop : float, optional
      Dropout rate on feature. Defaults: ``0``.
  negative_slope : float, optional
      LeakyReLU angle of negative slope. Defaults: ``0.2``.
  residual : bool, optional
      If True, use residual connection. Defaults: ``False``.
  activation : callable activation function/layer or None, optional.
      If not None, applies an activation function to the updated node features.
      Default: ``None``.
  bias : bool, optional
      If True, learns a bias term. Defaults: ``True``.
  
  Examples
  --------
  >>> import dgl
  >>> import torch
  >>> from dgl.nn import CuGraphGATConv
  >>> device = 'cuda'
  >>> g = dgl.graph(([0,1,2,3,2,5], [1,2,3,4,0,3])).to(device)
  >>> g = dgl.add_self_loop(g)
  >>> feat = torch.ones(6, 10).to(device)
  >>> conv = CuGraphGATConv(10, 2, num_heads=3).to(device)
  >>> res = conv(g, feat)
  >>> res
  tensor([[[ 0.2340,  1.9226],
          [ 1.6477, -1.9986],
          [ 1.1138, -1.9302]],
          [[ 0.2340,  1.9226],
          [ 1.6477, -1.9986],
          [ 1.1138, -1.9302]],
          [[ 0.2340,  1.9226],
          [ 1.6477, -1.9986],
          [ 1.1138, -1.9302]],
          [[ 0.2340,  1.9226],
          [ 1.6477, -1.9986],
          [ 1.1138, -1.9302]],
          [[ 0.2340,  1.9226],
          [ 1.6477, -1.9986],
          [ 1.1138, -1.9302]],
          [[ 0.2340,  1.9226],
          [ 1.6477, -1.9986],
          [ 1.1138, -1.9302]]], device='cuda:0', grad_fn=<ViewBackward0>)
docstr: Reinitialize learnable parameters.
docstr_tok: ["Reinitialize","learnable","parameters","."]
code: def reset_parameters(self):
      r"""Reinitialize learnable parameters."""
  
      gain = nn.init.calculate_gain("relu")
      nn.init.xavier_normal_(self.fc.weight, gain=gain)
      nn.init.xavier_normal_(
          self.attn_weights.view(2, self.num_heads, self.out_feats),
          gain=gain,
      )
      if self.bias is not None:
          nn.init.zeros_(self.bias)
  
      if isinstance(self.res_fc, nn.Linear):
          self.res_fc.reset_parameters()
  
file_path: dgl/python/dgl/nn/pytorch/conv/cugraph_gatconv.py
imports: import torch
  from torch import nn
  from .cugraph_base import CuGraphBaseConv
label_desc: Use image node_id 2 for calling the CuGraphGATConv obj's underlying member method code with example usage: obj.reset_parameters() without return types