Resizing an input image in a Keras Lambda layer Resizing an input image in a Keras Lambda layer python python

Resizing an input image in a Keras Lambda layer


If you are using tensorflow backend then you can use tf.image.resize_images() function to resize the images in Lambda layer.

Here is a small example to demonstrate the same:

import numpy as npimport scipy.ndimageimport matplotlib.pyplot as pltfrom keras.layers import Lambda, Inputfrom keras.models import Modelfrom keras.backend import tf as ktf# 3 channel images of arbitrary shapeinp = Input(shape=(None, None, 3))try:    out = Lambda(lambda image: ktf.image.resize_images(image, (128, 128)))(inp)except :    # if you have older version of tensorflow    out = Lambda(lambda image: ktf.image.resize_images(image, 128, 128))(inp)model = Model(input=inp, output=out)model.summary()X = scipy.ndimage.imread('test.jpg')out = model.predict(X[np.newaxis, ...])fig, Axes = plt.subplots(nrows=1, ncols=2)Axes[0].imshow(X)Axes[1].imshow(np.int8(out[0,...]))plt.show()