Я пытаюсь классифицировать свои входные данные временных рядов по 10 классам ответов. Таким образом, у меня есть 10 классов в моей функции ответа.
Мои входные данные имеют 40 функций, а ответ (y_train) имеет 1 функцию с 10 классами.
train input shape (4320, 43), train_y shape (4320,)
Моя сеть LSTM выглядит следующим образом
model = Sequential()
model.add(LSTM(25, dropout=0.2, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(train_X, train_y, epochs=10, batch_size=36, validation_split =0.05)
И яполучить ошибку
Error when checking target: expected dense_21 to have shape (10,) but got array with shape (1,)
Я думаю, что это происходит, потому что у меня есть 1 функция в моем train_y , где плотный выходной слой ожидает 10 объектов. Как запустить мою мультиклассовую классификацию по временным рядам с функцией потерь категорийной энтропии?
Кроме того, как только я изменяю функцию потерь на sparse_categorical_entropy , она работает гладко.
model = Sequential()
model.add(LSTM(25, dropout=0.2, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(10, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(train_X, train_y, epochs=10, batch_size=36, validation_split =0.05)
Пожалуйста, помогите мне понять причину этого. Кроме того, какую функцию потерь я должен использовать для временных рядов классификации мультикласса?