Внедрение LSTM в Керасе - PullRequest
0 голосов
/ 10 февраля 2019

Буду признателен за помощь в создании модели LSTM в Керасе.Мой ввод представляет собой двумерный массив с строками, которые представляют собой числовые временные ряды одинаковой длины.Я написал следующие строки для создания модели LSTM, которая работает с необработанными данными без слоя внедрения:

lstm_clf = Sequential()
lstm_clf.add(LSTM(100, input_shape=(X_train[0], X_train[1]))
lstm_clf.add(Dense(7, activation='softmax'))
lstm_clf.compile(loss='sparse_categorical_crossentropy', optimizer='Adam', metrics=['accuracy'])

Когда я достигаю фазы подгонки, я получаю следующую ошибку: «ValueError: Ошибка припроверка ввода: ожидалось, что lstm_11_input будет иметь 3 измерения, но получил массив с формой (100, 289) ".

Может кто-нибудь объяснить мне, что я делаю неправильно и как исправить код.Это должно быть связано с формой ввода, но я не знаю, что это такое.

Большое спасибо за вашу помощь,

Александр.

1 Ответ

0 голосов
/ 10 февраля 2019

Мне удалось найти ответ.Вот правильный код:

lstm_clf = Sequential()

lstm_clf.add (LSTM (100, input_shape = (1, max_seq_len))) lstm_clf.add (плотный (7, активация = 'softmax')) lstm_clf.compile (loss = 'sparse_categorical_crossentropy', оптимизатор = 'Adam', метрики = ['precision'])

Мои данные также необходимо было изменить, как показано ниже:

X_seqs_train = reshape(X_seqs_train, (X_seqs_train.shape[0], 1, X_seqs_train.shape[1]))

X_seqs_test = reshape (X_seqs_test, (X_seqs_test.shape [0], 1, X_seqs_test.shape 1 ))

Эти изменения решили проблему.Подсказка, которая привела к ответу, была найдена здесь .

...