code: def siamese_cosine_loss(left, right, y, scope="cosine_loss"):
      r"""Loss for Siamese networks (cosine version).
      Same as :func:`contrastive_loss` but with different similarity measurement.
  
      .. math::
          [\frac{l \cdot r}{\lVert l\rVert \lVert r\rVert} - (2y-1)]^2
  
      Args:
          left (tf.Tensor): left feature vectors of shape [Batch, N].
          right (tf.Tensor): right feature vectors of shape [Batch, N].
          y (tf.Tensor): binary labels of shape [Batch]. 1: similar, 0: not similar.
  
      Returns:
          tf.Tensor: cosine-loss as a scalar tensor.
      """
  
      def l2_norm(t, eps=1e-12):
          """
          Returns:
              tf.Tensor: norm of 2D input tensor on axis 1
          """
          with tf.name_scope("l2_norm"):
              return tf.sqrt(tf.reduce_sum(tf.square(t), 1) + eps)
  
      with tf.name_scope(scope):
          y = 2 * tf.cast(y, tf.float32) - 1
          pred = tf.reduce_sum(left * right, 1) / (
              l2_norm(left) * l2_norm(right) + 1e-10
          )
  
          return tf.nn.l2_loss(y - pred) / tf.cast(
              tf.shape(left)[0], tf.float32
          )
  
imports: import argparse
  import numpy
  import tensorflow
  import tensorflow.contrib.slim
  from tensorpack import *
  from tensorpack.tfutils.summary import add_moving_summary
  from tensorpack.utils.gpu import change_gpu
  from embedding_data import MnistPairs, MnistTriplets, get_test_data
label_desc: Use image node_id 2 for calling a global function with example usage: siamese_cosine_loss(left, right, y, scope) and returns: unknown, tf