code: def test_make_list_mle_loss_fn(self):
      scores = [[0.0, ln(3), ln(2)], [0.0, ln(2), ln(3)]]
      labels = [[0.0, 2.0, 1.0], [1.0, 0.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.LIST_MLE_LOSS
      )
      self.assertAlmostEqual(
          loss_fn_simple(labels, scores, features).numpy(),
          -(
              (ln(3.0 / (3 + 2 + 1)) + ln(2.0 / (2 + 1)) + ln(1.0 / 1))
              + (
                  ln(3.0 / (3 + 2 + 1))
                  + ln(1.0 / (1 + 2))
                  + ln(2.0 / 2)
              )
          )
          / 2,
          places=5,
      )
      loss_fn_weighted = ranking_losses.make_loss_fn(
          ranking_losses.RankingLossKey.LIST_MLE_LOSS,
          weights_feature_name=weights_feature_name,
      )
      self.assertAlmostEqual(
          loss_fn_weighted(labels, scores, features).numpy(),
          -(
              2
              * (
                  ln(3.0 / (3 + 2 + 1))
                  + ln(2.0 / (2 + 1))
                  + ln(1.0 / 1)
              )
              + 1
              * (
                  ln(3.0 / (3 + 2 + 1))
                  + ln(1.0 / (1 + 2))
                  + ln(2.0 / 2)
              )
          )
          / 2,
          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.LIST_MLE_LOSS,
          reduction=tf.compat.v1.losses.Reduction.SUM,
      )
      loss_fn_2 = ranking_losses.make_loss_fn(
          ranking_losses.RankingLossKey.LIST_MLE_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 14 for calling the LossesTest obj's underlying member method code with example usage: obj.test_make_list_mle_loss_fn() without return types