Как добавить лямбда-слой в качестве входного слоя в существующую модель в Keras? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть задача добавить слой предварительной обработки изображений в модель Keras, поэтому после загрузки модели Keras я хочу добавить новый входной слой для этой модели.

Я обнаружил, что могу использовать *Слой 1003 * для предварительной обработки данных изображения.Код слоя:

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 в качестве нового входного слоя?

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете использовать модель VGG16 и применить ее на выходе слоя Lambda:

vgg = VGG16(...)

input_img = Input(shape=...)
preproc_img = Lambda(vgg16preprocessing)(input_img)
output = vgg(preproc_img)

model = Model(input_img, output)
...