code: def siamese_cosine_loss(left, right, y, scope="cosine_loss"):
      r
  
      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)
docs: 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.