Несоответствие выходного размера в кератах - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь обучить мою модель cnn на наборе данных изображений с размером изображения 200 x 200 x 3. Размеры моего x_train (25290, 200, 200, 3), а x_test имеет размер (7026, 200, 200, 3).

Я уже пытался использовать fit_generator, но ошибка все еще сохраняется

Вот модель, которую я построил

model = Sequential()
model.add(Conv2D(64, kernel_size=3, activation='relu', input_shape=(200,200,3)))
model.add(Conv2D(50, kernel_size=3, activation='relu'))
model.add(MaxPooling2D(pool_size=(1,2)))
model.add(Conv2D(25, kernel_size=6, activation='relu'))
model.add(MaxPooling2D(pool_size=(1,2)))
model.add(Conv2D(5, kernel_size=16, activation='relu'))
model.add(Flatten())
model.add(Dense(550))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(250))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(100))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
#model.add(Flatten())
model.add(Dense(25))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(x_train, y_train,
           steps_per_epoch = int(ceil(float(len(x_train)//50))),
           epochs=1,
           verbose=1,
           validation_data=(x_val, y_val),callbacks=[monitor])

При запуске модели я получаю следующую ошибку

Error when checking target: expected activation_31 to have 2 dimensions, 
but got array with shape (25290, 2, 2)

Здесь активация_31 - последний уровень активации model.add(Activation('softmax'))

1 Ответ

0 голосов
/ 08 мая 2019

Как упоминалось в комментарии, это из-за несоответствия между числом выходов из сети и формой y_train. Вам нужно в одно касание закодировать ваш набор меток обучения. Поскольку вы уже используете keras:

from keras.utils import to_categorical

y_train = to_categorical(y_train)

Затем можно запустить метод fit_generator.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...