2017-04-20 23 views
0

我有1000個樣本,每個樣本有9個特徵和1個輸出。我怎樣才能將我的數據形成在LSTM中使用的形狀?如何在keras中爲LSTM形成數據

輸出看起來像鋸齒。 output

現在我的日期被整形爲1000 * 1 * 9([samples,time_steps,features])。表現不是很好。我怎樣才能包含更多的時間步驟?我是否會回頭將其重塑爲998 * 3 * 9(假設look_back = 3)?什麼是我應該回顧多少的好指南?

回答

1

如果您使用1的時間步,您沒有得到LSTM的優勢:他們可以從過去「記住」的事實。您應該嘗試使用交叉驗證來查找能夠提供最佳性能的時間步或/並使用數據背後的「上下文」進行選擇。

是的,如果回頭看是3,則必須將其重塑爲998 * 3 * 9。

+0

如果您使用'stateful = True'構建它們(並且在完成一批序列後仔細調用'.reset_states()'),您仍然可以讓LSTM圖層以1的步長記住它們的狀態。 – jdehesa

+0

是的,但在這種情況下,各州將在批次之間被記住,所以你將在學習中獲得最終控制權,但最終你不會學習「長期」依賴性:即使你記得從一個如果時間步爲1,則不會及時發現依賴關係。如果你有'stateful = True',你不可以在每個時代之後調用'.reset_states()'而不是批處理? – BenDes

+0

是的,我同意以1的時間步長進行學習並不理想。至於時代和批次,我想它是一個術語問題。我指的是一批完整的序列,這些序列將進一步分爲具有時間步長(本例中爲1)的「塊」;所以我的意思是在你爲一批序列完成所有的「塊」之後重置狀態。然後,我會稱之爲「時代」一系列的序列。但我認爲無論如何我們都指的是同一件事。 – jdehesa