ValueError, Ошибка при проверке цели: ожидается, что плотность_1 будет иметь 4 измерения - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь настроить MobileNet, но получаю следующую ошибку:

ValueError, Error when checking target: expected dense_1 to have 4 dimensions, but got array with shape (10, 14)

Есть ли конфликт с настройкой итераторов в каталоге?

train_batches = ImageDataGenerator(preprocessing_function=keras.applications.mobilenet_v2.preprocess_input).flow_from_directory(
train_path, target_size=(224, 224), batch_size=10)
valid_batches = ImageDataGenerator(preprocessing_function=keras.applications.mobilenet_v2.preprocess_input).flow_from_directory(
valid_path, target_size=(224, 224), batch_size=10)

test_batches = ImageDataGenerator(preprocessing_function=keras.applications.mobilenet_v2.preprocess_input).flow_from_directory(
test_path, target_size=(224, 224), batch_size=10, shuffle=False)

и мой новый слой узких мест выглядит следующим образом:

x=mobile.layers[-6].output
predictions = Dense(14, activation='softmax')(x)

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

1 Ответ

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

Поскольку плотный слой наносится на последнюю ось его входа и с учетом того факта, что x является 4-мерным тензором, тензор predictions также будет 4-мерным тензором. Вот почему модель ожидает четырехмерный вывод (т. Е. expected dense_1 to have 4 dimensions), но ваши метки 2D (т. Е. but got array with shape (10, 14)). Чтобы решить эту проблему, вам нужно сделать x как 2D-тензор. Один из способов сделать это - использовать слой Flatten:

x = mobile.layers[-6].output
x = Flatten()(x)
predictions = Dense(14, activation='softmax')(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...