在Keras 中,時間序列資料通常被重塑為三維數組,其中維度[樣本、時間步長、特徵]。此格式對於 LSTM 層是必要的,LSTM 層會隨著時間的推移而依序處理資料。
例如,如果您有5 個訓練序列,每個訓練序列有10 個時間步和1 個時間步功能,您的資料將被重塑為(5, 10, 1)。
有狀態 LSTM 允許模型在批次之間維護其內部狀態。這意味著模型在處理一個批次後會記住隱藏狀態,並將它們用作下一個批次的輸入。這在處理順序資料時特別有用,其中當前輸出取決於先前的輸入。
在您提供的 Keras 程式碼中,stateful=True 設定為 True,表示 LSTM 是有狀態的。 batch_size 設定為 1,這表示模型將一次處理一個序列。該模型將保留訓練運行之間的細胞記憶體值,使其能夠學習資料中的長期依賴性。
如果您正在處理多元時間序列,其中每個時間步長都有多個輸入特徵(例如股票價格) ),特徵數量將大於 1。
您提供的 Keras LSTM 實作有一個 LSTM 層,有 4 個單元,回傳序列為 True。這意味著 LSTM 將為每個輸入時間步輸出長度為 4 的序列。
然後使用均方誤差損失函數和 Adam 最佳化器編譯模型。訓練循環迭代 100 個 epoch,批量大小為 1。
需要注意的是,此 LSTM 模型旨在根據先前的時間步預測下一個時間步。但是,可以透過更改輸出層和損失函數來修改模型以用於其他任務,例如序列分類或語言建模。
以上是如何重塑時間序列資料以與 Keras LSTM 一起使用,有狀態 LSTM 以及參數「時間步長」和「特徵」的意義是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!