【发布时间】:2018-05-27 04:43:49
【问题描述】:
在通过网络传播图像之前,我正在尝试应用从 Keras 中的 resnet50 模块导入的预处理。由于在尝试将其应用于生成器对象时出现错误,因此我将其作为 lambda 层添加到网络中。
但由于该模型比我之前在分别对每张图像应用预处理时训练的模型差,因此我比较了两种方法的结果,它们看起来非常不同,尽管我看不出所应用的操作有什么不同.
import keras
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input
model = keras.models.Sequential()
model.add(keras.layers.Lambda(preprocess_input, name='preprocessing', input_shape=(224, 224, 3)))
file = '/path/to/an/image.jpeg'
x = np.array(image.img_to_array(image.load_img(file, target_size=(224, 224))))
preprocessed_x = preprocess_input(x)
predicted_x = model.predict(x.reshape(1,224,224,3)).reshape(224,224,3)
结果(左:直接使用的预处理函数;右:作为 lambda 层的预处理。
【问题讨论】: