code: def test_make_circle_loss(self):
      scores = [[0.1, 0.3, 0.2], [0.1, 0.2, 0.3]]
      labels = [[0.0, 0.0, 1.0], [0.0, 1.0, 2.0]]
      weights = [[2.0], [1.0]]
      weights_feature_name = "weights"
      features = {weights_feature_name: weights}
      loss_fn_simple = ranking_losses.make_loss_fn(
          ranking_losses.RankingLossKey.CIRCLE_LOSS
      )
      loss_0, _, _ = _circle_loss(labels[0], scores[0])
      loss_1, _, _ = _circle_loss(labels[1], scores[1])
      expected = (math.log1p(loss_0) + math.log1p(loss_1)) / 2.0
      self.assertAlmostEqual(
          loss_fn_simple(labels, scores, features).numpy(),
          expected,
          places=5,
      )
  
      loss_fn_weighted = ranking_losses.make_loss_fn(
          ranking_losses.RankingLossKey.CIRCLE_LOSS,
          weights_feature_name=weights_feature_name,
      )
      loss_0, _, _ = _circle_loss(labels[0], scores[0])
      loss_1, _, _ = _circle_loss(labels[1], scores[1])
      expected = (
          math.log1p(loss_0) * 2.0 + math.log1p(loss_1) * 1.0
      ) / 2.0
      self.assertAlmostEqual(
          loss_fn_weighted(labels, scores, features).numpy(),
          expected,
          places=5,
      )
  
      # Test loss reduction method.
      # Two reduction methods should return different loss values.
      loss_fn_1 = ranking_losses.make_loss_fn(
          ranking_losses.RankingLossKey.CIRCLE_LOSS,
          reduction=tf.compat.v1.losses.Reduction.SUM,
      )
      loss_fn_2 = ranking_losses.make_loss_fn(
          ranking_losses.RankingLossKey.CIRCLE_LOSS,
          reduction=tf.compat.v1.losses.Reduction.MEAN,
      )
      self.assertNotAlmostEqual(
          loss_fn_1(labels, scores, features).numpy(),
          loss_fn_2(labels, scores, features).numpy(),
      )
  
imports: import math
  import tensorflow
  from tensorflow_ranking.python import losses
  from tensorflow_ranking.python import losses_impl
label_desc: Use image node_id 8 for calling the LossesTest obj's underlying member method code with example usage: obj.test_make_circle_loss() without return types