code: def forward(self, G, out_key):
      input_dict = {
          ntype: G.nodes[ntype].data["inp"] for ntype in G.ntypes
      }
      h_dict = self.layer1(G, input_dict)
      h_dict = {k: F.leaky_relu(h) for k, h in h_dict.items()}
      h_dict = self.layer2(G, h_dict)
      # get appropriate logits
      return h_dict[out_key]
  
imports: import dgl
  import math
  import torch
  import torch.nn
  import torch.nn.functional
  import dgl.function
  from dgl.nn.functional import edge_softmax
label_desc: Use image node_id 2 for calling the HeteroRGCN obj's underlying member method code with example usage: obj.forward(G, out_key) and returns: h_dict