输入0与lstm_24层不兼容:预期ndim = 3,找到的ndim = 2

时间:2019-08-26 09:09:17

标签: python keras lstm

我是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

1 个答案:

答案 0 :(得分:0)

您必须做两件事:

  1. LSTM采用形状为(n_samples, n_timesteps, n_features)的输入,因此它“期望ndim = 3”。因此,如果一段时间内有1000个数据点(为简单起见,取整为1115),则可以将数据重塑为(40, 25, 106)的形状作为输入,(40, 25, 11)的形状作为输出。 n_samples和n_timesteps的选择取决于问题,应由您决定。这样可以解决您现在遇到的错误,但是随后您将遇到另一个错误。

  2. return_sequences=True添加到第二个LSTM中,似乎您需要一个多对多的体系结构。