多層LSTM結構的深入解讀

2021-08-20 18:27:46 字數 1490 閱讀 2248

讀這篇文章的時候,預設你已經對lstm神經網路有了乙個初步的認識,當你深入理解時,可能會對多層lstm內部的隱藏節點數,有關cell的定義或者每一層的輸入輸出是什麼樣子的特別好奇,雖然神經網路就像是乙個黑箱子一樣,但是我們仍然試圖去理解他們。

我們所說的lstm的cell就是這樣子的乙個結構:(圖中標識的a就是乙個cell,圖中一共是三個cell)

其中的x.t代表t時刻的輸入,h.t代表這一時刻cell的輸出,中間的cell中給我們展示了具體的數值傳遞計算的這麼乙個過程,不太清楚的同學可以下去自行查閱,就是三個門,首先是遺忘門,然後是更新門,最後是輸出門。依靠三個門之間的記憶關係就可以實現對遠距離資訊的記憶。

那麼重點來了,在多層的lstm網路中,我們會經常見到說比如 hidden layer 1的隱藏節點數為100,hidden layer 2的隱藏節點數為64 等等,那麼這些100、64分別代表了什麼呢,在圖裡面又能怎麼樣表示呢?

還是借鑑上乙個圖示,其中

h.t就是我們的隱藏節點(好神奇),你有可能會問

h.t就是乙個節點啊,怎麼回事100個節點數呢?(我這裡沒有合適的圖了)聯想一下cnn中的網路,如何實現從n個節點對映到m個節點的,靠的是矩陣之間的計算-權重w和偏置b,舉乙個簡單的例子:輸入x是一維的(比如時序訊號),我的輸出

h.t想要是100維的,大家知道我的每個cell裡面是上圖這樣的結構,但是有一點不要忽視了,裡面的計算都是要有引數的,便是w b的計算,所以我們可以設定w為1*100的矩陣,和輸入x相乘以後,經過cell的操作,變成維度為100的輸出。如果在上圖的上面再加一層lstm網路形成多層的呢?此時第二層的t時刻的輸入就為

h.t了,他現在是100維的輸入了,同樣的道理,我們也可以經過矩陣w b的運算讓其輸出為64維。這樣大家就明白了吧。

對於lstm神經網路,大家肯定關心輸入的格式是什麼樣子的,肯定的告訴大家格式為:

[batchs,time_steps,input_dim]

其中batch就是我們在cnn裡面常見到的batch定義一樣,就是多少個樣本數目;time_steps是lstm特有的,他表示你有多少個時刻的輸入,比如上圖中就是t-1,t,t+1,三個時刻,所以這個時候的

time_steps就是3;input_dim就是輸入的維度,這裡的維度指的是每個時刻的輸入向量的維度,比如上面說到的,一開始的輸入x的input_dim就是一維的,第二層的input_dim就是100維。

接下來會有兩個案例講解來幫助你更好的學習lstm神經網路:

1、minist手寫集影象利用lstm進行分類,分類問題,輸入為多維

2、利用lstm進行異常訊號的檢測,**問題,時序問題,輸入為一維

單層LSTM和多層LSTM的輸入與輸出

rnn結構 對應的 為 中沒寫偏置 上圖是單層lstm的輸入輸出結構圖。其實它是由乙個lstm單元的乙個展開,如下圖所示 所以從左到右的每個lstm block只是對應乙個時序中的不同的步。在第乙個圖中,輸入的時序特徵有s個,長度記作 seq len,每個特徵是乙個c維的向量,長度記作 input ...

TF多層 LSTM 以及 State 之間的融合

第一是實現多層的lstm的網路 第二是實現兩個lstm的state的concat操作,分析 state 的結構.對於第乙個問題,之前一直沒有注意過,看下面兩個例子 在這裡插入 片 import tensorflow as tf num units 20,20 unit1,ok x tf.random...

lstm結構的原理

一.lstm網路 long short term memory,即我們所稱呼的lstm,是為了解決長期以來問題而專門設計出來的,所有的rnn都具有一種重複神經網路模組的鏈式形式。在標準rnn中,這個重複的結構模組只有乙個非常簡單的結構,例如乙個tanh層。不必擔心這裡的細節。我們會一步一步地剖析 l...