在Keras中实施LSTM

时间:2019-02-09 22:23:38

标签: python keras neural-network deep-learning lstm

非常感谢您在Keras中创建LSTM模型的帮助。我的输入是一个二维numpy数组,其中的行是长度相等的数字时间序列。 我编写了以下几行代码来创建一个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 :(得分:0)

我能找到答案。这是正确的代码:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency> 

lstm_clf.add(LSTM(100,input_shape =(1,max_seq_len))) lstm_clf.add(密集(7,激活='softmax')) lstm_clf.compile(loss ='sparse_categorical_crossentropy',optimizer ='Adam',metrics = ['accuracy'])

我的数据还必须重塑,如下所示:

lstm_clf = Sequential()

X_seqs_test =重塑(X_seqs_test,(X_seqs_test.shape [0],1,X_seqs_test.shape 1))

这些更改解决了问题。 here找到了导致答案的线索。