Я пытаюсь сделать классификацию Кераса. У меня есть 1043 слова, представленные в виде матриц с горячим кодированием (длиной 20 букв по 26 возможностей для каждой буквы). Каждый из них принадлежит к одной из 19 различных категорий.
X.shape >>>>>> (1043, 20, 26)
Y.shape >>>>>> (1043, 19)
Вот моя попытка построить модель.
model = Sequential()
model.add(SimpleRNN(50, input_shape=(20, 26), return_sequences=True))
model.add(Dense(40, activation='relu'))
model.add(Dense(num_categories, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
model.fit(X, Y, epochs=20, batch_size=5, verbose=1)
Это вылетает со словами: ValueError: Error when checking target: expected dense_91 to have 3 dimensions, but got array with shape (1043, 19)
Я чувствую, что упускаю что-то очевидное с полем input_shape
, или есть какой-то другой трюк с конфигурацией? Я также не смог найти четких примеров такого типа проблем в Интернете.
Обновление: я подозреваю, что мне нужно свернуть временные отрезки в один окончательный ответ, но я не уверен, как это сделать. Есть TimeDistributed
, кажется, что он на правильном пути, но я не могу заставить его работать.