code: def _preprocess_numpy_input(x, data_format, mode):
      """Preprocesses a NumPy array encoding a batch of images.
  
      Args:
        x: Input array, 3D or 4D.
        data_format: Data format of the image array.
        mode: One of "caffe", "tf" or "torch".
          - caffe: will convert the images from RGB to BGR,
              then will zero-center each color channel with
              respect to the ImageNet dataset,
              without scaling.
          - tf: will scale pixels between -1 and 1,
              sample-wise.
          - torch: will scale pixels between 0 and 1 and then
              will normalize each channel with respect to the
              ImageNet dataset.
  
      Returns:
          Preprocessed Numpy array.
      """
      if not issubclass(x.dtype.type, np.floating):
          x = x.astype(backend.floatx(), copy=False)
  
      if mode == "tf":
          x /= 127.5
          x -= 1.0
          return x
      elif mode == "torch":
          x /= 255.0
          mean = [0.485, 0.456, 0.406]
          std = [0.229, 0.224, 0.225]
      else:
          if data_format == "channels_first":
              # 'RGB'->'BGR'
              if len(x.shape) == 3:
                  x = x[::-1, ...]
              else:
                  x = x[:, ::-1, ...]
          else:
              # 'RGB'->'BGR'
              x = x[..., ::-1]
          mean = [103.939, 116.779, 123.68]
          std = None
  
      # Zero-center by mean pixel
      if data_format == "channels_first":
          if len(x.shape) == 3:
              x[0, :, :] -= mean[0]
              x[1, :, :] -= mean[1]
              x[2, :, :] -= mean[2]
              if std is not None:
                  x[0, :, :] /= std[0]
                  x[1, :, :] /= std[1]
                  x[2, :, :] /= std[2]
          else:
              x[:, 0, :, :] -= mean[0]
              x[:, 1, :, :] -= mean[1]
              x[:, 2, :, :] -= mean[2]
              if std is not None:
                  x[:, 0, :, :] /= std[0]
                  x[:, 1, :, :] /= std[1]
                  x[:, 2, :, :] /= std[2]
      else:
          x[..., 0] -= mean[0]
          x[..., 1] -= mean[1]
          x[..., 2] -= mean[2]
          if std is not None:
              x[..., 0] /= std[0]
              x[..., 1] /= std[1]
              x[..., 2] /= std[2]
      return x
  
file_path: keras/keras/applications/imagenet_utils.py
imports: import json
  import warnings
  import numpy
  from keras import activations
  from keras import backend
  from keras import ops
  from keras.api_export import keras_export
  from keras.utils import file_utils
label_desc: Use image node_id 3 for calling a global function with example usage: _preprocess_numpy_input(x, data_format, mode) and returns: x, x