class_docstr: HeteroRelational graph convolution layer.
  
  Parameters
  ----------
  in_size : int
      Input feature size.
  out_size : int
      Output feature size.
  relation_names : list[str]
      Relation names.
class_docstr_tok: ["HeteroRelational","graph","convolution","layer",".","Parameters","--","--","--","--","--","in_size",":","int","Input","feature","size",".","out_size",":","int","Output","feature","size",".","relation_names",":","list","[","str","]","Relation","names","."]
code: def __init__(
      self,
      in_size,
      out_size,
      relation_names,
      activation=None,
  ):
      super(HeteroRelationalGraphConv, self).__init__()
      self.in_size = in_size
      self.out_size = out_size
      self.relation_names = relation_names
      self.activation = activation
  
      ########################################################################
      # (HIGHLIGHT) HeteroGraphConv is a graph convolution operator over
      # heterogeneous graphs. A dictionary is passed where the key is the
      # relation name and the value is the insatnce of conv layer.
      ########################################################################
      self.W = nn.ModuleDict(
          {
              str(rel): nn.Linear(in_size, out_size)
              for rel in relation_names
          }
      )
  
      self.dropout = nn.Dropout(0.0)
  
imports: import argparse
  import time
  import dgl
  import dgl.sparse
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl.data.rdf import AIFBDataset, AMDataset, BGSDataset, MUTAGDataset
label_desc: Use image node_id 1 to create a new HeteroRelationalGraphConv object from inherited base classes: nn with example: obj = HeteroRelationalGraphConv(in_size, out_size, relation_names, activation)