code: def projection(self, embedding, hyper):
      output_shape = embedding.shape
      embedding = tf.reshape(embedding, [-1, self.ent_dim])
      hyper = tf.reshape(hyper, [-1, self.ent_dim])
      hyper = tf.nn.l2_normalize(hyper, 1)
      project = (
          tf.reduce_sum(embedding * hyper, 1, keep_dims=True) * hyper
      )
      embedding = embedding - project
      output_shape = [
          d if d is not None else -1 for d in output_shape.as_list()
      ]
      embedding = tf.reshape(embedding, output_shape)
      return embedding
  
file_path: euler/examples/TransX/transH.py
imports: from transX import TransX
  import tensorflow
  import tf_euler
label_desc: Use image node_id 2 for calling the TransH obj's underlying member method code with example usage: obj.projection(embedding, hyper) and returns: embedding