Вход 0 несовместим со слоем flatten_5: ожидается min_ndim=3, найдено ndim=2

Я пытаюсь настроить нейронную сеть VGG16, вот код:

vgg16_model = VGG16(weights="imagenet", include_top="false", input_shape=(224,224,3))
model = Sequential()
model.add(vgg16_model)
#add fully connected layer:
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax')) 

Я получаю эту ошибку:

ValueError Traceback (последний вызов был последним) в

2 model.add (vgg16_model)

3 # и полностью подключенный слой:

----> 4 model.add (Flatten ())

5 model.add (Dense (256, активация = 'relu'))

6 model.add (выпадение (0.5))

/usr/local/anaconda/lib/python3.6/site-packages/keras/engine/sequential.py в add (self, layer) 179 self.inputs = network.get_source_inputs (self.outputs [0])

180 elif self.outputs:

-> 181 output_tensor = layer (self.outputs [0])

182 if isinstance (output_tensor, list):

183 повышение TypeError("Все слои в последовательной модели"

/usr/local/anaconda/lib/python3.6/site-packages/keras/engine/base_layer.py в вызове(self, input, ** kwargs)

412 # Вызывать исключения в случае несовместимости ввода

413 # с параметром input_spec, указанным в конструкторе слоя.

-> 414 self.assert_input_compatibility(входные данные)

415

416 # Соберите входные фигуры, чтобы построить слой.

/usr/local/anaconda/lib/python3.6/site-packages/keras/engine/base_layer.py в assert_input_compatibility (self, input)

325 self.name + ': ожидаемый min_ndim=' +

326 стр. (Spec.min_ndim) + ', найдено ndim=' +

-> 327 стр. (K.ndim (x)))

328 # Проверьте dtype.

329, если spec.dtype не является None:

ValueError: вход 0 несовместим со слоем flatten_5: ожидается min_ndim=3, найдено ndim=2

Я попробовал много предложенных решений, но ни одно из них не могло решить мою проблему. Как я могу решить это?

1 ответ

Решение

На официальном сайте keras, на

Тонкая настройка InceptionV3 на новый набор классов

from keras.models import Model
vgg16_model = VGG16(weights="imagenet", include_top="false", input_shape=(224,224,3))
x = vgg16_model.output
x=Flatten()(x)
x=Dense(256, activation='relu')(x)
x=Dropout(0.5)(x)
predictions=Dense(3, activation='softmax')(x)

model = Model(inputs=base_model.input, outputs=predictions)

У вас ошибка в include_top="false", это вызывает у вас сообщение об ошибке. Пытаться:

vgg16_model = VGG16(weights="imagenet", include_top=False, input_shape=(224,224,3))
Другие вопросы по тегам