Вход 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))