docstr: :param x: (batch, N, d)
  :param adj: (batch, E, N, N)
  :return:
docstr_tok: [":","param","x",":","(","batch",",","N",",","d",")",":","param","adj",":","(","batch",",","E",",","N",",","N",")",":","return",":"]
code: def forward(self, x, adj):
      """
      :param x: (batch, N, d)
      :param adj: (batch, E, N, N)
      :return:
      """
      # embedding layer
      x = self.emb(x)
  
      # first GCN layer
      x = self.gc1(x, adj)
  
      # hidden GCN layer(s)
      for i in range(self.num_layers - 2):
          x = self.gc2[i](x, adj)  # (#node, #class)
  
      # last GCN layer
      x = self.gc3(x, adj)  # (batch, N, d)
  
      # return node embedding
      return x
  
file_path: DIG/dig/ggraph/method/GraphAF/model/rgcn.py
imports: import numpy
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 2 for calling the RGCN obj's underlying member method code with example usage: obj.forward(x, adj) and returns: x