Невозможно преобразовать слои VGG16 в последовательные - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь провести классификацию изображений с использованием предварительно обученной модели VGG16. Для того же я сделал следующее:

vgg16_model = keras.applications.vgg16.VGG16()

Тип модели следующий:

type(vgg16_model)

И результат:

tensorflow.python.keras.engine.training.Model

Затем я определил последовательную модель как:

model = Sequential()

Затем я попытался преобразовать vgg16_model в последовательное:

for layer in vgg16_model.layers:
    model.add(layer)

Это показывает мне ошибку следующим образом:

TypeError: The added layer must be an instance of class Layer. Found: < tensorflow.python.keras.engine.input_layer.InputLayer object at 0x1ddbce5e80>**

Было бы здорово, если бы кто-нибудь мог помочь мне в этом.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Один более простой способ сделать это - передать слои непосредственно в экземпляр последовательной модели, вместо использования цикла for:

from keras.applications.vgg16 import VGG16

vgg = VGG16(weights='imagenet', ...)
model = Sequential(vgg.layers)
0 голосов
/ 15 ноября 2018

Решение:

Моя ошибка заключалась в том, что мой оператор импорта был:

from keras.applications.vgg16 import VGG16

Затем, снова, когда я инициализировал модель, я снова вызвал ее как:

vgg16_model = keras.applications.vgg16.VGG16()

Итак, глупая ошибка с моей стороны.Исправление заключается в следующем:

vgg16_model = VGG16()

Я понимаю, что проблема очень специфична и может быть не столь полезной для сообщества.Тем не менее, я публикую решение на случай, если кто-то еще столкнется с ним снова.

...