code: def __init__(self, in_channels, out_channels, node_types, edge_types):
      super(RGCNConv, self).__init__()
  
      self.in_channels = in_channels
      self.out_channels = out_channels
  
      # `ModuleDict` does not allow tuples :(
      self.rel_lins = ModuleDict(
          {
              f"{key[0]}_{key[1]}_{key[2]}": Linear(
                  in_channels, out_channels, bias=False
              )
              for key in edge_types
          }
      )
  
      self.root_lins = ModuleDict(
          {
              key: Linear(in_channels, out_channels, bias=True)
              for key in node_types
          }
      )
  
      self.reset_parameters()
  
imports: import copy
  import argparse
  import torch
  import torch.nn.functional
  from torch.nn import Parameter, ModuleDict, ModuleList, Linear, ParameterDict
  from torch_sparse import SparseTensor
  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: torch.nn with example: obj = RGCNConv(in_channels, out_channels, node_types, edge_types)