code: def __init__(
      self, in_channels, out_channels, num_node_types, num_edge_types
  ):
      super(RGCNConv, self).__init__(aggr="mean")
  
      self.in_channels = in_channels
      self.out_channels = out_channels
      self.num_node_types = num_node_types
      self.num_edge_types = num_edge_types
  
      self.rel_lins = ModuleList(
          [
              Linear(in_channels, out_channels, bias=False)
              for _ in range(num_edge_types)
          ]
      )
  
      self.root_lins = ModuleList(
          [
              Linear(in_channels, out_channels, bias=True)
              for _ in range(num_node_types)
          ]
      )
  
      self.reset_parameters()
  
imports: from copy import copy
  import argparse
  from tqdm.auto import tqdm
  import torch
  import torch.nn.functional
  from torch.nn import ModuleList, Linear, ParameterDict, Parameter
  from torch_sparse import SparseTensor
  from torch_geometric.utils import to_undirected
  from torch_geometric.data import NeighborSampler
  from torch_geometric.utils.hetero import group_hetero_graph
  from torch_geometric.nn import MessagePassing
  from ogb.nodeproppred import PygNodePropPredDataset, Evaluator
  from logger import Logger
label_desc: Use image node_id 1 to create a new RGCNConv object from inherited base classes: MessagePassing with example: obj = RGCNConv(in_channels, out_channels, num_node_types, num_edge_types)