RNN LSTM GRU學習補充

2021-08-28 20:24:13 字數 1401 閱讀 4631

隱藏層神經元個數的解釋

每乙個小黃框代表乙個前饋網路層,對,就是經典的神經網路的結構,num_units就是這個層的隱藏神經元個數(例如128,256)

雙向 lstm

我今天不舒服,我打算__一天。

只根據『不舒服『,可能推出我打算『去醫院『,『睡覺『,『請假『等等,但如果加上後面的『一天『,能選擇的範圍就變小了,『去醫院『這種就不能選了,而『請假『『休息『之類的被選擇概率就會更大。

雙向迴圈神經網路的隱藏層要儲存兩個值, a 參與正向計算, a』參與反向計算。最終的輸出值 y 取決於 a 和 a』

單層lstm,兩層lstm,四層lstm

將x輸入第一層rnn的後得到隱層狀態h,這個隱層狀態就相當於第二層rnn的輸入,第二層rnn的隱層狀態又相當於第三層rnn的輸入,以此類推。在tensorflow中,可以使用tf.nn.rnn_cell.multirnncell函式對rnncell進行堆疊

char rnn

recurrentnns的拓撲發生了乙個很大的改動,即乙個mlp會在time_step這個維度上進行延伸,每個時序都會有input。

假設乙個rnn的time_step 確定為 l ,則padded sentence length(step5中矩陣列數)固定為 l。

一次rnns的run只處理一條sentence。每個sentence的每個token(中文分詞)的embedding對應了每個時序 t 的輸入。

相比普通的rnn,lstm能夠在更長的序列中有更好的表現。

相比rnn只有乙個傳遞狀態  h^t  ,lstm有兩個傳輸狀態,乙個  c^t (cell state),和乙個  h^t (hidden state)。(tips:rnn中的 h^t 對應於lstm中的 c^t )

首先使用lstm的當前輸入 x^t 和上乙個狀態傳遞下來的 h^ 拼接訓練得到四個狀態。

lstm內部主要有三個階段:

1. 忘記階段(遺忘門)。通過計算得到的 z^f (f表示forget)來作為忘記門控,來控制上乙個狀態的 c^ 哪些需要留哪些需要忘。

2. 選擇記憶階段(輸入門)。當前的輸入內容由前面計算得到的  z  表示。而選擇的門控訊號則是由 z^i (i代表information)來進行控制。

將上面兩步得到的結果相加,即可得到傳輸給下乙個狀態的 c^t 。也就是上圖中的第乙個公式。

3. 輸出階段(輸出門)。主要是通過  z^o 來進行控制的。並且還對上一階段得到的 c^t 進行了放縮(通過乙個tanh啟用函式進行變化)。輸出 y^t 往往最終也是通過 h^t 變化得到。

因為引入了很多內容,導致引數變多,也使得訓練難度加大了很多。因此很多時候我們往往會使用效果和lstm相當但引數更少的gru來構建大訓練量的模型。

gru模型只有兩個門了,分別為更新門和重置門

rnn梯度消失和**的原因

lstm如何解決梯度消失問題

RNN LSTM GRU的簡單介紹

rnn,中文 迴圈神經網路 解決的是時間序列問題。什麼是時間序列問題呢,就是我們的樣本資料之間在時間維度上存在關聯的,跟一般的神經網路不一樣,也就是說我們前乙個輸入和後乙個輸入有某種說不清道不明的關係,需要rnn這種特定結構的神經網路去尋找內部聯絡。下面是rnn的乙個基本結構和乙個官網結構,第乙個圖...

RNN,LSTM,GRU網路的架構對比

前言 接下來要用到時間序列網路做實驗,lstm應該是個不錯的選擇,今年6月份時候快速的過了一遍lstm網路各個門控結構的定義,並跟著網路教程做了小demo實驗。轉眼又過去半年了,在這半年裡接觸 學習了很多的東西,深感自己之前學習東西都是一知半解,等於在一直快速搭框架,具體內容和細節把握的極差。有句俗...

redis學習 補充學習

redis是乙個開源的記憶體中的資料結構儲存系統,它可以用作 資料庫 快取和訊息中介軟體。是乙個完全開源免費的key value記憶體資料庫通常被認為是乙個資料結構伺服器,主要是因為其有著豐富的資料結構strings map list sets sorted sets1 完全基於記憶體,絕大部分請求...