Я загрузил, расширил, обучил сеть VGG16 через Keras, затем сохранил ее на диск:
from keras.applications import VGG16
from keras import models
conv_base = VGG16(weights="imagenet", include_top=False)
model = models.Sequential()
model.add(conv_base)
...
model.compile(...)
model.fit(...)
model.save("saved_model.h5")
В другом сценарии я загружаю эту обученную модель снова:
from keras.models import load_model
model_vgg16 = load_model("saved_model.h5")
model_fails = model_vgg16.get_layer("vgg16")
model_fails.input
Эта последняя строка приводит к следующему исключению:
AttributeError: Layer vgg16 has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use `get_input_at(node_index)` instead.
Однако, когда я делаю то же самое для сети VGG16 напрямую, тогда она работает нормально:
from keras.applications import VGG16
from keras.models import load_model
model_works = VGG16(weights='imagenet', include_top=False)
model_works.input
Эта последняя строка непривести к ошибке.Итак, мой вопрос:
Как получить доступ к (входному) слою сохраненной, а затем повторно загруженной модели Keras?