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的值取反,存...