TensorFlow 1 version View source on GitHub

Preprocesses a tensor or Numpy array encoding a batch of images.

    x, data_format=None, mode='caffe'

Usage example with applications.MobileNet:

i = tf.keras.layers.Input([None, None, 3], dtype = tf.uint8)
x = tf.cast(i, tf.float32)
x = tf.keras.applications.mobilenet.preprocess_input(x)
core = tf.keras.applications.MobileNet()
x = core(x)
model = tf.keras.Model(inputs=[i], outputs=[x])

image = tf.image.decode_png('file.png'))
result = model(image)


  • x: A floating point numpy.array or a tf.Tensor, 3D or 4D with 3 color channels, with values in the range [0, 255]. The preprocessed data are written over the input data if the data types are compatible. To avoid this behaviour, numpy.copy(x) can be used.
  • data_format: Optional data format of the image tensor/array. Defaults to None, in which case the global setting tf.keras.backend.image_data_format() is used (unless you changed it, it defaults to "channels_last").
  • 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.


Preprocessed numpy.array or a tf.Tensor with type float32.


  • ValueError: In case of unknown data_format argument.