【pytorch】LSTM神经网络
在處理時序數據,已經有RNN循環神經網絡和GRU神經網絡兩個比較經典的網絡。當然還有一種LSTM神經網絡,長短期記憶神經網絡。
從發展歷史來看,是現有LSTM再有GRU的,但是從復雜度來看,LSTM比GRU更加復雜。
先來回憶一下GRU,其有兩個門(更新門和重置門),有一個記錄歷史信息的向量HtH_tHt?。
而LSTM就更加復雜了,無論是在門的數量上還是記錄歷史信息的向量上。
LSTM神經網絡
其一共有3個門,2個狀態。
控制門
遺忘門
這個與GRU中的重置門非常類似,含義也是大致相同。
Ft=Θ(Xt?Wxf+Ht?1?Whf+bf)F_t = \Theta\left(X_t\cdot W_{xf} + H_{t - 1}\cdot W_{hf} + b_f\right) Ft?=Θ(Xt??Wxf?+Ht?1??Whf?+bf?)
而后,FtF_tFt?作用于記憶Ct?1C_{t-1}Ct?1?,遺忘部分歷史信息。
輸入門
它與GRU中的更新門有點類似,但是卻不完全一樣。
因為LSTM有兩個狀態,它可以理解為CtC_tCt?的更新門。
It=Θ(Xt?Wxi+Ht?1?Whi+bi)I_t = \Theta\left(X_t\cdot W_{xi} + H_{t - 1}\cdot W_{hi} + b_i\right) It?=Θ(Xt??Wxi?+Ht?1??Whi?+bi?)
其后會作用于候選記憶Ct′C'_tCt′?,更新得出新的CtC_tCt?。
輸出門
它與GRU中的更新門有點類似,但是卻不完全一樣。
因為LSTM有兩個狀態,它可以理解為HtH_tHt?的更新門。
Ot=Θ(Xt?Wxo+Ht?1?Who+bo)O_t = \Theta\left(X_t\cdot W_{xo} + H_{t - 1}\cdot W_{ho} + b_o\right) Ot?=Θ(Xt??Wxo?+Ht?1??Who?+bo?)
其后會作用于候選記憶CtC_tCt?,更新得出新的HtH_tHt?。
狀態
記憶狀態
從整個更新過程可以看到,Ct?1C_{t-1}Ct?1?先遺忘部分信息,再與候選記憶(根據XtX_tXt?)生成出的部分信息合并,得到CtC_tCt?。
其的變化是較為緩慢的,也被成為長期記憶。
隱狀態
HtH_tHt?根據目前的輸出(XtX_tXt?與Ht?1H_{t-1}Ht?1?的結果)與當前記憶CtC_tCt?作用的結果。相比于CtC_tCt?,HtH_tHt?與Ht?1H_{t-1}Ht?1?關系更弱,因此HtH_tHt?變化更加的快。因此也被稱為短期記憶。
結合上述兩個狀態:長期記憶與短期記憶,其就被稱為長短期記憶神經網絡。
代碼實現
pytorch也提供了對于的LSTM層,可以十分方便的調用。
但是需要自己定義創始狀態值(一個二元組)。
總結
以上是生活随笔為你收集整理的【pytorch】LSTM神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天天生鲜社区团购运营平台
- 下一篇: 深入理解jvm虚拟机(面试复习)