class_docstr: Modification of PyTorch Geometirc's nn.RGCNConv, which reduces the computational and memory
  cost of RGCN encoder layer for `GripNet <https://github.com/NYXFLOWER/GripNet>`_ model.
  The relational graph convolutional operator from the `"Modeling
  Relational Data with Graph Convolutional Networks" <https://arxiv.org/abs/1703.06103>`_ paper.
  
  .. math::
      \mathbf{x}^{\prime}_i = \mathbf{\Theta}_{\textrm{root}} \cdot
      \mathbf{x}_i + \sum_{r \in \mathcal{R}} \sum_{j \in \mathcal{N}_r(i)}
      \frac{1}{|\mathcal{N}_r(i)|} \mathbf{\Theta}_r \cdot \mathbf{x}_j,
  
  where :math:`\mathcal{R}` denotes the set of relations, *i.e.* edge types.
  Edge type needs to be a one-dimensional :obj:`torch.long` tensor which
  stores a relation identifier
  :math:`\in \{ 0, \ldots, |\mathcal{R}| - 1\}` for each edge.
  
  Note: For more information please see Pytorch Geomertic’s `nn.RGCNConv
  <https://pytorch-geometric.readthedocs.io/en/latest/modules/nn.html#module-torch_geometric.nn.conv.message_passing>`_ docs.
  
  Args:
      in_channels (int): Size of each input sample.
      out_channels (int): Size of each output sample.
      num_relations (int): Number of edge relations.
      num_bases (int): Use bases-decoposition regulatization scheme and num_bases denotes the number of bases.
      after_relu (bool): Whether input embedding is activated by relu function or not.
      bias (bool): If set to :obj:`False`, the layer will not learn
          an additive bias. (default: :obj:`False`)
      **kwargs (optional): Additional arguments of
          :class:`torch_geometric.nn.conv.MessagePassing`.
code: def update(self, aggr_out, x):
      out = aggr_out + torch.matmul(x, self.root)
  
      if self.bias is not None:
          out = out + self.bias
      return out
  
imports: import numpy
  import torch
  from torch.nn import Parameter
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.utils import add_remaining_self_loops
  from torch_scatter import scatter_add
label_desc: Use image node_id 5 for calling the RGCNEncoderLayer obj's underlying member method code with example usage: obj.update(aggr_out, x) and returns: out