Как создать Keras Model () из слоев VGG - PullRequest
0 голосов
/ 16 мая 2019

Я создал собственную модель Keras, используя базу VGG16, которую я тренирую и сохраняю:

from keras.applications import VGG16
from keras import models
from keras import layers

conv_base = VGG16(weights="imagenet", include_top=False)

model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation="relu"))
model.add(layers.Dense(1, activation="sigmoid"))
...
model.save("models/custom_vgg16.h5")

В другом сценарии я хочу загрузить эту сохраненную сеть и создать новый объект Keras ModelИсходя из этого, используя пользовательский вход сети и слои VGG16 в качестве выходных данных:

from keras.models import load_model
from keras import Model

model_vgg16 = load_model("models/custom_vgg16.h5")

layer_outputs = [layer.output for layer in model_vgg16.get_layer("vgg16").layers[1:]]
activation_model = Model(inputs=model_vgg16.get_layer("vgg16").get_input_at(1), outputs=layer_outputs)

Но последняя строка приводит к следующей ошибке:

ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_1:0", shape=(?, 150, 150, 3), dtype=float32) at layer "input_1". The following previous layers were accessed without issue: []

Любые идеи, которые я мог бы упуститьздесь

1 Ответ

1 голос
/ 16 мая 2019

Вы хотите получить ввод по индексу 0 узла в последней строке:

model_vgg16.get_layer('vgg16').get_input_at(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...