code: def forward(self, graph, sub, rel):
      # get sub_emb and rel_emb via compGCN
      n_feats, r_feats = self.compGCN_Model(graph)
      sub_emb = n_feats[sub, :]
      rel_emb = r_feats[rel, :]
  
      # combine the sub_emb and rel_emb
      stk_inp = self.concat(sub_emb, rel_emb)
      # use convE to score the combined emb
      x = self.bn0(stk_inp)
      x = self.m_conv1(x)
      x = self.bn1(x)
      x = F.relu(x)
      x = self.feature_drop(x)
      x = x.view(-1, self.flat_sz)
      x = self.fc(x)
      x = self.hidden_drop(x)
      x = self.bn2(x)
      x = F.relu(x)
      # compute score
      x = th.mm(x, n_feats.transpose(1, 0))
      # add in bias
      x += self.bias.expand_as(x)
      score = th.sigmoid(x)
      return score
  
file_path: dgl/examples/pytorch/compGCN/models.py
imports: import dgl
  import dgl.function
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.optim
  from utils import ccorr
label_desc: Use image node_id 3 for calling the CompGCN_ConvE obj's underlying member method code with example usage: obj.forward(graph, sub, rel) and returns: score