class_docstr: An accelerated relational graph convolution layer from `Modeling
  Relational Data with Graph Convolutional Networks
  <https://arxiv.org/abs/1703.06103>`__, with the sparse aggregation
  accelerated by cugraph-ops.
  
  Parameters
  ----------
  in_feats : int
      Input feature size.
  out_feats : int
      Output feature size.
  num_rels : int
      Number of relations.
  regularizer : str, optional
      Which weight regularizer to use ("basis" or ``None``):
       - "basis" is for basis-decomposition.
       - ``None`` applies no regularization.
      Default: ``None``.
  num_bases : int, optional
      Number of bases. It comes into effect when a regularizer is applied.
      Default: ``None``.
  bias : bool, optional
      True if bias is added. Default: ``True``.
  self_loop : bool, optional
      True to include self loop message. Default: ``True``.
  dropout : float, optional
      Dropout rate. Default: ``0.0``.
  apply_norm : bool, optional
      True to normalize aggregation output by the in-degree of the destination
      node per edge type, i.e. :math:`|\mathcal{N}^r_i|`. Default: ``True``.
  
  Examples
  --------
  >>> import dgl
  >>> import torch
  >>> from cugraph_dgl.nn import RelGraphConv
  ...
  >>> device = 'cuda'
  >>> g = dgl.graph(([0,1,2,3,2,5], [1,2,3,4,0,3])).to(device)
  >>> feat = torch.ones(6, 10).to(device)
  >>> conv = RelGraphConv(
  ...     10, 2, 3, regularizer='basis', num_bases=2).to(device)
  >>> etypes = torch.tensor([0,1,2,0,1,2]).to(device)
  >>> res = conv(g, feat, etypes)
  >>> res
  tensor([[-1.7774, -2.0184],
          [-1.4335, -2.3758],
          [-1.7774, -2.0184],
          [-0.4698, -3.0876],
          [-1.4335, -2.3758],
          [-1.4331, -2.3295]], device='cuda:0', grad_fn=<AddBackward0>)
docstr: Reinitialize learnable parameters.
docstr_tok: ["Reinitialize","learnable","parameters","."]
code: def reset_parameters(self):
      r"""Reinitialize learnable parameters."""
      bound = 1 / math.sqrt(self.in_feats)
      end = -1 if self.self_loop else None
      nn.init.uniform_(self.W[:end], -bound, bound)
      if self.regularizer == "basis":
          nn.init.xavier_uniform_(
              self.coeff, gain=nn.init.calculate_gain("relu")
          )
      if self.self_loop:
          nn.init.xavier_uniform_(
              self.W[-1], nn.init.calculate_gain("relu")
          )
      if self.bias is not None:
          nn.init.zeros_(self.bias)
  
file_path: cugraph/python/cugraph-dgl/cugraph_dgl/nn/conv/relgraphconv.py
imports: import math
  from typing import Optional, Union
  from cugraph_dgl.nn.conv.base import BaseConv, SparseGraph
  from cugraph.utilities.utils import import_optional
label_desc: Use image node_id 2 for calling the RelGraphConv obj's underlying member method code with example usage: obj.reset_parameters() without return types