code: def scatter_values_on_batch_indices(values, batch_indices):
      shape = shape_list(batch_indices)
      # broadcast batch dim to shape
      broad_casted_batch_dims = tf.reshape(
          tf.broadcast_to(
              tf.expand_dims(tf.range(shape[0]), axis=-1), shape
          ),
          [1, -1],
      )
      # transform batch_indices to pair_indices
      pair_indices = tf.transpose(
          tf.concat(
              [
                  broad_casted_batch_dims,
                  tf.reshape(batch_indices, [1, -1]),
              ],
              0,
          )
      )
      # scatter values to pair indices
      return tf.scatter_nd(
          pair_indices, tf.reshape(values, [-1]), shape
      )
  
imports: import inspect
  import warnings
  from dataclasses import dataclass
  from typing import Any, Dict, List, Optional, Tuple, Union
  import numpy
  import tensorflow
  from tensorflow.compiler.tf2xla.python.xla import dynamic_update_slice
  from .generation_tf_logits_process import TFForcedBOSTokenLogitsProcessor, TFForcedEOSTokenLogitsProcessor, TFForceTokensLogitsProcessor, TFLogitsProcessorList, TFMinLengthLogitsProcessor, TFNoBadWordsLogitsProcessor, TFNoRepeatNGramLogitsProcessor, TFRepetitionPenaltyLogitsProcessor, TFSuppressTokensAtBeginLogitsProcessor, TFSuppressTokensLogitsProcessor, TFTemperatureLogitsWarper, TFTopKLogitsWarper, TFTopPLogitsWarper
  from .models.auto import TF_MODEL_FOR_CAUSAL_LM_MAPPING, TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING, TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING, TF_MODEL_FOR_VISION_2_SEQ_MAPPING
  from .tf_utils import shape_list, stable_softmax
  from .utils import ModelOutput, logging
label_desc: Use image node_id 5 for calling a global function with example usage: scatter_values_on_batch_indices(values, batch_indices) and returns: tf