Keras 中的有狀態 LSTM 與傳統 LSTM 有何不同?
了解Keras 長短期記憶(LSTM)
重塑和狀態性
數據重塑:
重塑操作對於符合Keras 的LSTM 預期輸入格式是必要的,即[樣本、時間步長、特徵]。在這種情況下,樣本表示資料集中的序列數,時間步長表示每個序列的長度,特徵指每個時間步長的輸入變數的數量。透過重塑數據,您可以確保 LSTM 能夠正確處理序列資訊。
有狀態 LSTM:
有狀態 LSTM 在訓練期間跨多個批次保留其內部狀態。這使得它們能夠「記住」迄今為止所看到的序列資訊。在提供的範例中,batch_size 設定為 1,並且在訓練運行之間重置記憶體。這意味著 LSTM 沒有充分利用其有狀態功能。為了利用有狀態性,您通常會使用大於 1 的批次大小,並避免在批次之間重置狀態。這使得 LSTM 能夠學習跨多個序列的長期依賴關係。
時間步長和特徵
時間步長:
時間步數指示資料集中每個序列的長度。在您共享的圖像中,您正在考慮多對一的情況,其中可變長度序列被壓縮為單一輸出。粉紅色框的數量對應於輸入序列中的時間步數。
特徵:
特徵的數量是指每個特徵的輸入變數的數量時間步。在多變量序列中,例如同時對多個金融股票進行建模,每個時間步長都會有多個特徵,代表所預測的不同變數。
有狀態 LSTM 行為
在圖中,紅色框代表隱藏狀態,綠色框代表細胞狀態。雖然它們在視覺上是相同的,但它們在 LSTM 中是不同的元素。 LSTM 的有狀態行為意味著這些狀態會延續到後續的時間步和批次。然而,值得注意的是,範例中訓練運行之間的狀態重置會阻止真正的狀態性。
實作不同的LSTM 配置
單層多對多:
要使用單一LSTM 層實作多對多處理,請使用return_sequences= True。這可確保輸出形狀包含時間維度,從而允許每個序列有多個輸出。
單層多對一:
對於多對一處理,設定 return_sequences=False。這指示 LSTM 層僅輸出最後一個時間步,從而有效地丟棄先前的序列資訊。
具有重複向量的一對多:
建立在一對多配置中,您可以使用 RepeatVector 層將輸入複製到多個時間步長中。這允許您將單一觀察資料輸入 LSTM 層並獲得多個輸出。
使用狀態 LSTM 的一對多:
一種更複雜的實作方法一對一地使用 stateful=True。透過手動迭代序列並將每個時間步驟的輸出作為下一個時間步驟的輸入,您可以透過僅輸入一個步驟來產生一系列輸出。這通常用於序列生成任務。
複雜配置:
LSTM 可以堆疊在各種配置中以創建複雜的架構。例如,自動編碼器可以將多對一編碼器與一對多解碼器結合起來,使模型能夠學習序列的編碼和解碼。
以上是Keras 中的有狀態 LSTM 與傳統 LSTM 有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

攻克Investing.com的反爬蟲策略許多人嘗試爬取Investing.com(https://cn.investing.com/news/latest-news)的新聞數據時,常常�...

Python3.6環境下加載pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

使用Scapy爬蟲時管道文件無法寫入的原因探討在學習和使用Scapy爬蟲進行數據持久化存儲時,可能會遇到管道文�...
