Keras中LSTM的输入维数

时间:2017-09-01 13:08:38

标签: input keras reshape lstm

所以我很确定我正在正确输入尺寸。我认为错误在于输入的重塑,但不是很确定。

以下是我正在使用的内容:

df_matrix = df_model.as_matrix()
df_matrix = np.reshape(df_matrix,(-1,588425,26))
df_matrix.shape
y_matrix = y.as_matrix()
y_matrix = np.reshape(y_matrix,(-1,588425,1))
df_matrix2 = df_model.as_matrix()

model.add(LSTM(32, input_shape=(588425, 26), return_sequences = True))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(df_matrix2, y, epochs=2, batch_size=1, verbose=2)

出现此错误:ValueError:输入0与图层lstm_17不兼容:预期ndim = 3,找到ndim = 2

df_matrix2.shape的输出是(588425,26)。我还尝试了df_matrix,我将其重新整形为3D数组,df_matrix的输出为(1,588425,26)。两者都失败了,所以我不确定输入空间中的问题是什么?由于2-d和3-d输入都给出了相同的误差。

1 个答案:

答案 0 :(得分:1)

您的问题的答案已经在您的问题中:

  

出现此错误:ValueError:输入0与图层lstm_17不兼容:预期ndim = 3,找到ndim = 2

那么,你应该怎么做?

您有一个输入列表,其形状如下:

(N,N)

但是,对于LSTM,你需要塑造:

(N,N,N)

简单的解决方案是制作这样的东西:

y_matrix = np.reshape(y_matrix,(588425,1,1))

另外,不要忘记更改NN中的号码:

model.add(LSTM(32, input_shape=(None, 1), return_sequences = True))