凯拉斯LSTM的输入维度

问题描述:

所以我很确定我正确地输入了尺寸。我认为错误在于重塑投入,但并不确定。凯拉斯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)。两者都失败了,所以我不确定输入空间中的问题是什么?既然二维和三维输入都给了我同样的错误。

+0

您是否有588K长度为26的序列,具有1个特征或1个序列,具有588K个时间步长和26个特征? –

+0

我有1个序列,588k时间步长,每个时间步长有26个特征 – a1letterword

+0

重塑成'(1,...)'后的错误是什么? –

你的问题的答案已经在你的问题:

Which is popping out this error: ValueError: Input 0 is incompatible with layer lstm_17: expected ndim=3, found ndim=2

那么,你该怎么办?

你必须具有形状像这样的输入列表:

(N,N) 

但是,对于LSTMs你需要的形状:

(N,N,N) 

的simples的解决办法是让这样的事情:

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

此外,不要忘记更改NN中的数字:

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