code: def call(self, inputs):
      src, dst, neg, rel = self.generate_triplets(inputs)
      src_emb, dst_emb, neg_emb, rel_emb = self.generate_embedding(
          src, dst, neg, rel
      )
      loss, metric = self.calculate_energy(
          src_emb, dst_emb, neg_emb, rel_emb
      )
      src_emb = tf.reshape(src_emb, [-1, self.ent_dim])
      dst_emb = tf.reshape(dst_emb, [-1, self.ent_dim])
      rel_emb = tf.reshape(rel_emb, [-1, self.rel_dim])
      return (
          [src_emb, rel_emb, dst_emb],
          loss,
          self.metric_name,
          metric,
      )
  
file_path: euler/examples/distmult/distmult.py
imports: import tensorflow
  import tf_euler
  import collections
label_desc: Use image node_id 9 for calling the DistMult obj's underlying member method code with example usage: obj.call(inputs) and returns: list,  loss,  self,  metric