class_docstr: See :class:`RGCNConv`.
class_docstr_tok: ["See",":","class",":","`","RGCNConv","`","."]
code: def aggregate(
      self,
      inputs: Tensor,
      edge_type: Tensor,
      index: Tensor,
      dim_size: Optional[int] = None,
  ) -> Tensor:
      # Compute normalization in separation for each `edge_type`.
      if self.aggr == "mean":
          norm = one_hot(
              edge_type, self.num_relations, dtype=inputs.dtype
          )
          norm = scatter(norm, index, dim=0, dim_size=dim_size)[index]
          norm = torch.gather(norm, 1, edge_type.view(-1, 1))
          norm = 1.0 / norm.clamp_(1.0)
          inputs = norm * inputs
  
      return scatter(
          inputs, index, dim=self.node_dim, dim_size=dim_size
      )
  
imports: from typing import Optional, Tuple, Union
  import torch
  from torch import Tensor
  from torch.nn import Parameter
  from torch.nn import Parameter
  import torch_geometric.backend
  import torch_geometric.typing
  from torch_geometric import is_compiling
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.nn.inits import glorot, zeros
  from torch_geometric.typing import Adj, OptTensor, SparseTensor, pyg_lib, torch_sparse
  from torch_geometric.utils import index_sort, one_hot, scatter, spmm
  from torch_geometric.utils.sparse import index2ptr
label_desc: Use image node_id 3 for calling the FastRGCNConv obj's underlying member method code with example usage: obj.aggregate(inputs, edge_type, index, dim_size) and returns: scatter