code: def forward(self, e1, rel, kg_graph=None):
      e1_embedded = self.emb_e(e1)
      rel_embedded = self.emb_rel(rel)
      e1_embedded = e1_embedded.squeeze(1)
      rel_embedded = rel_embedded.squeeze(1)
  
      e1_embedded = self.inp_drop(e1_embedded)
      rel_embedded = self.inp_drop(rel_embedded)
  
      pred = torch.mm(
          e1_embedded * rel_embedded, self.emb_e.weight.transpose(1, 0)
      )
      pred = torch.sigmoid(pred)
  
      return pred
  
imports: import torch
  from torch.nn import Parameter
  from torch.nn import functional
  from torch.nn.init import xavier_normal_
  from graph4nlp.pytorch.modules.graph_embedding_learning.gcn import GCN
  from graph4nlp.pytorch.modules.graph_embedding_learning.ggnn import GGNN
  from graph4nlp.pytorch.modules.prediction.classification.kg_completion import ComplEx, DistMult
label_desc: Use image node_id 3 for calling the Distmult obj's underlying member method code with example usage: obj.forward(e1, rel, kg_graph) and returns: pred