非常感谢您在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)。”
任何人都可以向我解释我做错了什么以及如何修复代码。它必须与输入形状有关,但我不知道它是什么。
非常感谢您的帮助,
亚历山大。
答案 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找到了导致答案的线索。