Ошибка при проверке цели: ожидается, что Activation_2 будет иметь форму (512,), но получил массив с формой (1,) - PullRequest
0 голосов
/ 28 ноября 2018

Возникли проблемы с ошибкой в ​​заголовке.Я действительно знаю, почему я получаю эту ошибку, но после исследования я изо всех сил пытаюсь понять концепцию, поскольку я новичок в ML.Ошибка связана с отсутствием X_TRAIN и Y_TRAIN, но я не могу понять, из чего они состоят.Все изображения были изменены до одинаковых размеров.Я использую набор данных CUB 2011 с разделением 90:10 обучения / проверки, вот мой код ниже, который относится к ошибке.Я использую Keras.

classifier.add(Conv2D(256, (3, 3), input_shape = (467,386,3)))
classifier.add(Activation('relu'))

#Smaller for precise pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Flatten())

#Add 512 unit layer
classifier.add(Dense(units = 512, activation = 'relu'))

1 Ответ

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

Проблема заключается в несоответствии между вашим последним слоем Dense(512, ...) и тем фактом, что ваши цели данных - это всего лишь одно измерение.Это можно исправить, преобразовав модель для вывода ожидаемых измерений, или скорректировав данные в соответствии с ожидаемыми выходными данными модели.Это зависит от того, чего вы пытаетесь достичь.Чтобы исправить модель, вы можете добавить еще один Dense слой:

classifier.add(Dense(units = 512, activation = 'relu'))
classifier.add(Dropout(0.2)) #prevent overfitting
classifier.add(Dense(units=1, activation='sigmoid')) # HERE ---

или посмотреть, какой генератор выводит print(next(train_generator)), чтобы понять, почему целевой массив является 1-мерным.

...