Cambiar el tamaño de una imagen de entrada en una capa Keras Lambda

Me gustaría que mi modelo de Keras redimensionara la imagen de entrada usando cv2 o similar.

He visto el uso de ImageGenerator , pero preferiría escribir mi propio generador y simplemente cambiar el tamaño de la imagen en la primera capa con keras.layers.core.Lambda .

¿Cómo haría esto?

Si está utilizando el backend tensorflow, puede usar la función tf.image.resize_images() para cambiar el tamaño de las imágenes en la capa Lambda .

Aquí hay un pequeño ejemplo para demostrar lo mismo:

 import numpy as np import scipy.ndimage import matplotlib.pyplot as plt from keras.layers import Lambda, Input from keras.models import Model from keras.backend import tf as ktf # 3 channel images of arbitrary shape inp = 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()