我是Keras的新手,我想构建一个深层的RNN,我的x_train形状为(1115,106),我的y_train有(1115,11)个样本,我无法解决从以下代码中得到的错误:
model_3=Sequential()
model_3.add(LSTM(64,return_sequences=True,activation='relu'))
model_3.add(Dropout(0.2))
model_3.add(LSTM(64,activation='relu'))
model_3.add(Dropout(0.2))
model_3.add(Dense(64,activation='relu'))
model_3.add(Dropout(0.2))
model_3.add(Dense(11,activation='softmax'))
model_3.compile(optimizer='adam',
loss='mean_squared_error',
metrics=['accuracy'])
DNN_3= model_3.fit(x_train, y_train,batch_size=64, epochs=100)
在()中 24个指标= ['准确性']) 25 ---> 26 DNN_3 = model_3.fit(x_train,y_train,batch_size = 64,epochs = 100) 27 28
ValueError:输入0与lstm_24层不兼容:预期的ndim = 3,找到的ndim = 2
答案 0 :(得分:0)
您必须做两件事:
LSTM采用形状为(n_samples, n_timesteps, n_features)
的输入,因此它“期望ndim = 3”。因此,如果一段时间内有1000个数据点(为简单起见,取整为1115),则可以将数据重塑为(40, 25, 106)
的形状作为输入,(40, 25, 11)
的形状作为输出。 n_samples和n_timesteps的选择取决于问题,应由您决定。这样可以解决您现在遇到的错误,但是随后您将遇到另一个错误。
将return_sequences=True
添加到第二个LSTM中,似乎您需要一个多对多的体系结构。