目錄:html
紅框從左到右,依次是:
忘記門層: 決定從細胞狀態中丟棄什麼信息,經過當前時刻輸入和前一個時刻輸出決定
細胞狀態: 肯定並更新新信息
到當前時刻的細胞狀態中
輸出門層: 基於目前的細胞狀態決定該時刻的輸出python
假設現有一個樣本,Shape=(13,5),時間步是13,每一個時間步的特徵長度是5.形象點,我把一個樣本畫了出來:markdown
使用Keras框架添加LSTM層時,個人設置是這樣的keras.layers.LSTM(10)
,也就是我如今設定,每一個時間步通過LSTM後,獲得的中間隱向量是10維(意思是5->10維),13個時間步的數據進去獲得的是(13*10)的數據.網絡
每一個時間步對應神經元個數(參數個數)同樣.也就是算一個LSTM中神經元個數,算一個時間步中參與的神經元個數便可.下面將對LSTM每一個計算部分進行神經元分析.框架
圖中公式的是上一個狀態的隱向量(已設定隱向量長度爲10),
爲當前狀態的輸入(長度爲5),那麼
的長度就是10+5=15了.
和
爲該層的參數.ide
該層輸出是中間隱向量的長度(10),通過激活先後的長度不變.只須要考慮
裏面的操做獲得10維特徵便可.svg
是(1,15)的向量,與
相乘獲得(1,10)的向量,根據矩陣相乘規律,獲得
是(15,10)的矩陣,獲得(1,10)矩陣後,與該門層偏置相加,偏置也應該有相同的形狀,即
是(1,10)的矩陣.函數
即:該層神經元爲:學習
(1)肯定更新信息過程測試
能夠看到,這裏公式和前面的同樣的,和
都是激活函數,不影響參數個數.
同理這過程的神經元個數是:
(2)更新過程
公式中的四個值,均是前面計算獲得的結果,所以該過程沒有參數須要學習.
同樣的公式,神經元個數同樣.即個數爲:
把公式(1),(2),(3)的神經元加起來,就是該LSTM的神經元個數了.
其實,咱們能夠把這個問題通常化,不看這個例子,假設你一個時間步的特徵長度是n,通過該LSTM獲得的長度是m,這樣就能夠算出該LSTM層的神經元個數爲:
輸出是: