code: def __call__(self, inputs):
      src, pos, negs = self.to_sample(inputs)
      embedding = self.embed(src)
      embedding_pos = self.embed_context(pos)
      embedding_negs = self.embed_context(negs)
  
      logits = tf.matmul(embedding, embedding_pos, transpose_b=True)
      neg_logits = tf.matmul(
          embedding, embedding_negs, transpose_b=True
      )
      metric = self.metric_class(logits, neg_logits)
      true_xent = tf.nn.sigmoid_cross_entropy_with_logits(
          labels=tf.ones_like(logits), logits=logits
      )
      negative_xent = tf.nn.sigmoid_cross_entropy_with_logits(
          labels=tf.zeros_like(neg_logits), logits=neg_logits
      )
      loss = tf.reduce_mean(
          tf.concat(
              [
                  tf.reshape(true_xent, [-1, 1]),
                  tf.reshape(negative_xent, [-1, 1]),
              ],
              0,
          )
      )
      embedding = self.embed(inputs)
      return (embedding, loss, self.metric_name, metric)
  
file_path: euler/tf_euler/python/mp_utils/base.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import tensorflow
  import tf_euler
label_desc: Use image node_id 5 for calling the UnsuperviseModel obj's underlying member method code with example usage: obj.__call__(inputs) and returns: embedding,  loss,  self,  metric