我有一个任务,需要在Keras模型中添加一个图像预处理层。因此,在加载了一个Keras模型后,我想为这个模型添加一个新的输入层。
我发现可以使用Lambda
层来预处理图像数据。该层的代码是:
def vgg16preprocessing(x): mean_tensor = K.backend.variable([125.307, 122.95, 113.865], name="mean") std_tensor = K.backend.constant([62.9932, 62.0887, 66.7048], name="std_tensor") result = (x - mean_tensor) / (std_tensor) return K.backend.reshape(result, (-1, 32, 32, 3))preproc_layer = K.layers.Lambda(vgg16preprocessing, output_shape=(32, 32, 3), input_shape=(32, 32, 3))
但我不知道如何将这个层添加到我的模型前面。我找到了这个回答,但我无法在keras.layers.Input()
中添加该层。
有没有办法将Lambda
层设置为新的输入层?
回答:
你可以使用VGG16模型,并将其应用于Lambda
层的输出上:
vgg = VGG16(...)input_img = Input(shape=...)preproc_img = Lambda(vgg16preprocessing)(input_img)output = vgg(preproc_img)model = Model(input_img, output)