code: def test_make_poly_one_softmax_loss_fn(self):
      with tf.Graph().as_default():
          scores = [[1.0, 3.0, 2.0], [1.0, 2.0, 3.0]]
          labels = [[0.0, 0.0, 1.0], [0.0, 0.0, 2.0]]
          weights = [[2.0], [1.0]]
          weights_feature_name = "weights"
          features = {weights_feature_name: weights}
          with self.cached_session():
              loss_fn_simple = ranking_losses.make_loss_fn(
                  ranking_losses.RankingLossKey.POLY_ONE_SOFTMAX_LOSS
              )
              self.assertAlmostEqual(
                  loss_fn_simple(labels, scores, features).eval(),
                  -(
                      math.log(_softmax(scores[0])[2])
                      - 1
                      + _softmax(scores[0])[2]
                      + (
                          math.log(_softmax(scores[1])[2])
                          - 1
                          + _softmax(scores[1])[2]
                      )
                      * 2.0
                  )
                  / 2.0,
                  places=5,
              )
  
              loss_fn_weighted = ranking_losses.make_loss_fn(
                  ranking_losses.RankingLossKey.POLY_ONE_SOFTMAX_LOSS,
                  weights_feature_name=weights_feature_name,
              )
              self.assertAlmostEqual(
                  loss_fn_weighted(labels, scores, features).eval(),
                  -(
                      (
                          math.log(_softmax(scores[0])[2])
                          - 1
                          + _softmax(scores[0])[2]
                      )
                      * 2.0
                      + (
                          math.log(_softmax(scores[1])[2])
                          - 1
                          + _softmax(scores[1])[2]
                      )
                      * 2.0
                      * 1.0
                  )
                  / 2.0,
                  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.POLY_ONE_SOFTMAX_LOSS,
                  reduction=tf.compat.v1.losses.Reduction.SUM,
              )
              loss_fn_2 = ranking_losses.make_loss_fn(
                  ranking_losses.RankingLossKey.POLY_ONE_SOFTMAX_LOSS,
                  reduction=tf.compat.v1.losses.Reduction.MEAN,
              )
              self.assertNotAlmostEqual(
                  loss_fn_1(labels, scores, features).eval(),
                  loss_fn_2(labels, scores, features).eval(),
              )
  
imports: import math
  import tensorflow
  from tensorflow_ranking.python import losses
  from tensorflow_ranking.python import losses_impl
label_desc: Use image node_id 10 for calling the LossesTest obj's underlying member method code with example usage: obj.test_make_poly_one_softmax_loss_fn() without return types