我在一个名为ddf如下的数据框中有数据:
labels X
L1 [1,2,3,7,8,9...]
L1 [4,2,6,9,8,7...]
...
L2 [5,6,8,9,6,3...]
L2 [7,8,5,6,9,0...]
...
X 下的每个列表中有 250 行、7 个标签和 2000 个元素。这 2000 个元素是大约 60 秒周期内的信号值。
我正在尝试为上述数据建立一个循环神经网络。以下是我的代码:
Xall = ddf['X'].values
Xall = np.array(Xall)
ydf = pd.get_dummies(ddf.drop('X', axis=1))
Yall = np.array(ydf.values)
# Split the data
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(Xall, Yall, test_size=0.1, random_state=0)
from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense
model_lstm = Sequential()
model_lstm.add(Embedding(2000, 128))
model_lstm.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model_lstm.add(LSTM(200, dropout=0.2, recurrent_dropout=0.2))
model_lstm.add(Dense(Yall.shape[1], activation='softmax'))
model_lstm.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model_lstm.fit(X_train, Y_train, epochs=50, verbose=True, validation_data=(X_test, Y_test))
但是,我在第二个 LSTM 层遇到错误:
ValueError: Input 0 is incompatible with layer lstm_2: expected ndim=3, found ndim=2
我认为这与 LSTM 论点有关。嵌入层的参数也可以吗?这两个是如何调整的?错误来自哪里,如何解决?谢谢你的帮助。