2017-09-01 70 views
1

所以我很確定我正確地輸入了尺寸。我認爲錯誤在於重塑投入,但並不確定。凱拉斯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,...)'後的錯誤是什麼? –

回答

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))