code: def gather_per_row(inputs, indices):
      """Gathers the values from input tensor based on per-row indices.
  
      Example Usage:
      ```python
      scores = [[1., 3., 2.], [1., 2., 3.]]
      indices = [[1, 2], [2, 1]]
      tfr.utils.gather_per_row(scores, indices)
      ```
      Returns [[3., 2.], [3., 2.]]
  
      Args:
        inputs: (tf.Tensor) A tensor of shape [batch_size, list_size] or
          [batch_size, list_size, feature_dims].
        indices: (tf.Tensor) A tensor of shape [batch_size, size] of positions to
          gather inputs from. Each index corresponds to a row entry in input_tensor.
  
      Returns:
        A tensor of values gathered from inputs, of shape [batch_size, size] or
          [batch_size, size, feature_dims], depending on whether the input was 2D or
          3D.
      """
      indices = tf.cast(indices, dtype=tf.int32)
      return tf.gather(inputs, indices, batch_dims=1, axis=1)
  
file_path: ranking/tensorflow_ranking/python/utils.py
imports: from typing import Callable, Dict, Tuple
  import tensorflow
label_desc: Use image node_id 2 for calling a global function with example usage: gather_per_row(inputs, indices) and returns: tf