LSTM cell結構的理解和計算

2021-08-08 18:15:07 字數 1577 閱讀 1304

lstm是傳統rnn網路的擴充套件,其核心結構是其cell單元,網上lstm的相關資料繁多,質量參差不齊,下面主要結合lstm神經網路的詳細推導和 christopher olah的blog兩篇文章中的內容進行說明。主要介紹網路如何計算,為何這麼算先不展開:)。前者一副圖加上29個公式,簡潔明瞭;後者娓娓道來,適合初學者。

首先是lstm cell最常見的結構圖:

這是變形的版本(找不到更清晰的版本了),其中輸入門控制輸入(新記憶)的輸入幅度;遺忘門控制之前記憶狀態的輸入幅度;輸出門控制最終記憶的輸出幅度。圖中的三角形其實就是乘法符號。

t時刻cell的input:

1.由當前輸入xt

2.前一時刻cell的輸出ht-1

3.前一時刻cell的狀態ct-1(可以理解為計算ht-1過程中的中間值)

t時刻cell的3個控制門gate,值域[0,1](改進的gru的cell將輸入門和遺忘門合併為update門):

1.輸入門it

2.遺忘門ft

3.輸出門ot

計算過程如下(請對照上面第二個結構圖):

step 1.1 輸入門it

step 1.2 及其控制的新記憶ct波浪線:)(如下圖)

w是其對應的權重矩陣,b為偏置。黃色的框內是不同的啟用函式。其實這兩個運算可以等效為兩層並行的神經網路。

step 1.3 遺忘門ft (控制對於之前輸入記憶ct-1的遺忘程度)(如下圖)

其中,step1.1、1.2和1.3是可以平行計算的,輸入都是當前輸入xt 和 前一時刻cell的輸出ht-1

step  2 當前t時刻cell的狀態ct(由step 1計算的三個結果得到)

step 3  輸出門ot及其控制的t時刻cell的輸出ht

step 4  訊號xt通過ht的輸出:

以上其實是lstm的前向傳播過程,反向傳播求解梯度及引數更新具體參考lstm神經網路的詳細推導

原文:

c語言中順序結構 條件結構和迴圈結構的理解

1 所謂的順序結構,就是從上至下,從前至後的執行,也就是說,如果執行到下面的 了,那麼上面的 肯定就已經執行結束了。例如 int tep int height 100 tep height int width 200 tep width 執行到這的時候,上述對tep的操作就結束了,可以繼續對tep賦...

理解專案結構和執行專案

專案建立完成以後,生成以下內容 manage.py是每個django專案中自動生成的乙個用於管理專案的指令碼檔案,需要通過python執行命令。manage.py接受的是django提供的內建命令。2 與專案同名的資料夾 專案容器,目錄名不建議修改,正所謂牽一髮而動全身,說的就是這裡,該目錄下有以下...

IP TCP UDP ICMP校驗和的區別和計算

ip資料報的校驗和只檢驗ip資料報的首部。當傳送ip包時,需要計算ip報頭的校驗和 把校驗和字段置為0 對ip頭部中的每16bit進行二進位制求和 如果和的高16bit不為0,則將和的高16bit和低16bit反覆相加,直到和的高16bit為0,從而獲得乙個16bit的值 將該16bit的值取反,存...