code: def generate_embedding(self, src, dst, neg, rel):
      src_emb = self.entity_encoder(src)
      dst_emb = self.entity_encoder(dst)
      neg_emb = self.entity_encoder(neg)
      rel_emb = self.relation_encoder(rel)
      hyper_emb = self.hyper_vector(rel)
      hyper_emb_expand = tf.tile(hyper_emb, [1, self.num_negs, 1])
      src_emb = self.projection(src_emb, hyper_emb)
      dst_emb = self.projection(dst_emb, hyper_emb)
      neg_emb = self.projection(neg_emb, hyper_emb_expand)
      rel_emb = self.norm_emb(rel_emb)
      return src_emb, dst_emb, neg_emb, rel_emb
  
file_path: euler/examples/TransX/transH.py
imports: from transX import TransX
  import tensorflow
  import tf_euler
label_desc: Use image node_id 3 for calling the TransH obj's underlying member method code with example usage: obj.generate_embedding(src, dst, neg, rel) and returns: src_emb,  dst_emb,  neg_emb,  rel_emb