Я пытаюсь обучить нейронную сеть со следующей структурой:
model = Sequential()
model.add(Conv1D(filters = 300, kernel_size = 5, activation='relu', input_shape=(4000, 1)))
model.add(Conv1D(filters = 300, kernel_size = 5, activation='relu'))
model.add(MaxPooling1D(3))
model.add(Conv1D(filters = 320, kernel_size = 5, activation='relu'))
model.add(MaxPooling1D(3))
model.add(Dropout(0.5))
model.add(Dense(num_labels, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
return model
И я получаю эту ошибку:
expected dense_1 to have shape (442, 3) but got array with shape (3, 1)
Мой ввод - это набор фраз(Всего 12501), которые были размечены для 4000 наиболее релевантных слов, и есть 3 возможных классификации.Поэтому мой вход - train_x.shape = (12501, 4000).Я изменил это в (12501, 4000, 1) для слоя Conv1D.Теперь мой train_y.shape = (12501,3), и я изменил это в (12501,3, 1).
Я использую функцию подгонки следующим образом:
model.fit(train_x, train_y, batch_size=32, epochs=10, verbose=1, validation_split=0.2, shuffle=True)
Что я делаю не так?