目錄
了解Keras 長短期記憶(LSTM)
重塑和狀態性
時間步長和特徵
有狀態 LSTM 行為
實作不同的LSTM 配置
首頁 後端開發 Python教學 Keras 中的有狀態 LSTM 與傳統 LSTM 有何不同?

Keras 中的有狀態 LSTM 與傳統 LSTM 有何不同?

Nov 05, 2024 am 04:17 AM

How do Stateful LSTMs in Keras differ from traditional LSTMs, and when should I use each type?

了解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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? 如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? Apr 02, 2025 am 07:15 AM

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

在Linux終端中使用python --version命令時如何解決權限問題? 在Linux終端中使用python --version命令時如何解決權限問題? Apr 02, 2025 am 06:36 AM

Linux終端中使用python...

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? 如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? Apr 02, 2025 am 07:18 AM

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

如何繞過Investing.com的反爬蟲機制獲取新聞數據? 如何繞過Investing.com的反爬蟲機制獲取新聞數據? Apr 02, 2025 am 07:03 AM

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

Python 3.6加載pickle文件報錯ModuleNotFoundError: No module named '__builtin__'怎麼辦? Python 3.6加載pickle文件報錯ModuleNotFoundError: No module named '__builtin__'怎麼辦? Apr 02, 2025 am 06:27 AM

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

使用Scapy爬蟲時,管道文件無法寫入的原因是什麼? 使用Scapy爬蟲時,管道文件無法寫入的原因是什麼? Apr 02, 2025 am 06:45 AM

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

See all articles