LSTM層的return_sequences和return_state的理解



return_sequences:默認 False。在輸出序列中,返回單個 hidden state值還是返回全部time step 的 hidden state值。 False 返回單個, true 返回全部。
return_state:默認 False。是否返回除輸出之外的最后一個狀態。

 

區別 cell state 和 hidden state

LSTM 的網絡結構中,直接根據當前 input 數據,得到的輸出稱為 hidden state。
還有一種數據是不僅僅依賴於當前輸入數據,而是一種伴隨整個網絡過程中用來記憶,遺忘,選擇並最終影響 hidden state 結果的東西,稱為 cell state。

cell state 就是實現 long short memory 的關鍵

cell state 是不輸出的,它僅對輸出 hidden state 產生影響。

通常情況,我們不需要訪問 cell state,除非想設計復雜的網絡結構時。例如在設計 encoder-decoder 模型時,我們可能需要對 cell state 的初始值進行設定。

 

第一層必須加上“return_sequences=True”

 

1.return_sequences=False && return_state=False

h = LSTM(6)
此時返回的對輸入數據進行計算得到的a,如果X有多個timestep,則返回最后一個timestep的a

 

2.return_sequences=True && return_state=False 

LSTM(6, return_sequences=True)
此時返回的是全部timestep的a

 

3.return_sequences=False && return_state=True

lstm1, state_h, state_c = LSTM(6, return_state=True)
lstm1, state_h是最后一個timestep的a,state_c是最后一個timestep的c 

 

4.return_sequences=True && return_state=True

lstm1, state_h, state_c = LSTM(6, return_sequences=True, return_state=True)
lstm1是全部timestep的a,

state_h是最后一個timestep的a,

state_c是最后一個timestep的c 

 

對於GRU基本也是這樣的思路

 

 

總結:

  • 第一層必須加上“return_sequences=True”
  • 默認 False
  • cell state 是不輸出的,它僅對輸出 hidden state 產生影響。
  • hidden state直接根據當前 input 數據得到的輸出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM