LSTM的神經元個數


目錄:


1.LSTM簡單介紹

LSTM在時間上展開
LSTM在時間上展開

紅框從左到右,依次是:
忘記門層: 決定從細胞狀態中丟棄什么信息,通過當前時刻輸入和前一個時刻輸出決定
細胞狀態: 確定並更新新信息到當前時刻的細胞狀態中
輸出門層: 基於目前的細胞狀態決定該時刻的輸出

2.簡單假設樣例

假設現有一個樣本,Shape=(13,5),時間步是13,每個時間步的特征長度是5.形象點,我把一個樣本畫了出來:

一個樣本

使用Keras框架添加LSTM層時,我的設置是這樣的keras.layers.LSTM(10),也就是我現在設定,每個時間步經過LSTM后,得到的中間隱向量是10維(意思是5->10維),13個時間步的數據進去得到的是(13*10)的數據.

每個時間步對應神經元個數(參數個數)一樣.也就是算一個LSTM中神經元個數,算一個時間步中參與的神經元個數即可.下面將對LSTM每個計算部分進行神經元分析.

3.神經元分析

3.1忘記門層

忘記門層
忘記門層

圖中公式的是上一個狀態的隱向量(已設定隱向量長度為10),為當前狀態的輸入(長度為5),那么的長度就是10+5=15了.為該層的參數.

該層輸出是中間隱向量的長度(10),經過激活前后的長度不變.只需要考慮里面的操作得到10維特征即可.

是(1,15)的向量,與相乘得到(1,10)的向量,根據矩陣相乘規律,得到是(15,10)的矩陣,得到(1,10)矩陣后,與該門層偏置相加,偏置也應該有相同的形狀,即是(1,10)的矩陣.

即:該層神經元為:

3.2細胞狀態

(1)確定更新信息過程

確定該時刻細胞要更新的內容
確定該時刻細胞要更新的內容

可以看到,這里公式和前面的一樣的,都是激活函數,不影響參數個數.

同理這過程的神經元個數是:

(2)更新過程

細胞狀態更新
細胞狀態更新

公式中的四個值,均是前面計算得到的結果,因此該過程沒有參數需要學習.

3.3輸出層

輸出門層
輸出門層

一樣的公式,神經元個數一樣.即個數為:

3.4總結

把公式(1),(2),(3)的神經元加起來,就是該LSTM的神經元個數了.

其實,我們可以把這個問題一般化,不看這個例子,假設你一個時間步的特征長度是n,經過該LSTM得到的長度是m,這樣就可以算出該LSTM層的神經元個數為:

4.測試

  1. from keras.layers import LSTM 
  2. from keras.models import Sequential 
  3.  
  4. time_step=13 
  5. featrue=5 
  6. hidenfeatrue=10 
  7.  
  8. model=Sequential() 
  9. model.add( LSTM(hidenfeatrue,input_shape=(time_step,featrue))) 
  10. model.summary() 

輸出是:

  1. _________________________________________________________________________________ 
  2. Layer (type) Output Shape Param #  
  3. ================================================================================= 
  4. lstm_8 (LSTM) (None, 10) 640  
  5. ================================================================================= 
  6. Total params: 640 
  7. Trainable params: 640 
  8. Non-trainable params: 0 
  9. _________________________________________________________________________________ 
  10.  

參考:
理解 LSTM 網絡
推薦給初學LSTM或者懂個大概卻不完全懂的人


免責聲明!

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



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