2017-04-10 145 views
1

在Keras中,如果要添加10個單位的LSTM圖層,請使用model.add(LSTM(10))。我聽說號碼10被稱爲隱藏單元的數量here和輸出單元的數量(Keras碼here的863行)。Keras LSTM:第一個參數

我的問題是,這兩件事情是一樣的嗎?輸出的維度與隱藏單位的數量相同嗎?我已閱讀了一些教程(如this onethis one),但他們都沒有明確說明。

回答

0

爲了得到一個很好的直覺,爲什麼這是有道理的。請記住,LSTM的工作是將一個序列編碼成一個向量(可能是總體過度簡化,但它是我們需要的)。由hidden_units指定矢量的大小,output是:

seq vector   RNN weights 
(1 X input_dim) * (input_dim X hidden_units), 

其具有1×hidden_​​units(代表你的輸入序列進行編碼的行向量)。因此,這種情況下的名稱被同義使用。

當然,RNN需要多於一個乘法,並且keras實現RNN作爲上述矩陣 - 矩陣乘法的序列,而不是向量矩陣。

+1

這似乎暗示隱藏單元的數量是輸出單元的數量,但我認爲這些是兩個獨立的東西--LSTM可以按照您的說法將序列編碼爲另一個序列,但它也可以從一個序列到一個實數,不是嗎?所以隱藏的表示不一定與輸出相同。 – StatsSorceress

1

隱藏單元的數量是不一樣作爲輸出單元的數量。

數字10控制輸出隱藏狀態的尺寸(LSTM構造方法的源代碼可以找到here.10指定units參數)。在教程的一個已連接於(colah's blog),所述單元的參數將控制載體ħ噸-1ħ,和ħ噸+ 1的尺寸:RNN image

如果要控制網絡中LSTM塊的數量,則需要將其指定爲LSTM層的輸入。輸入圖層的形狀是(nb_samples,timesteps,input_dim)Keras documentationtimesteps控制您的網絡包含多少個LSTM塊。再次參考colah博客上的教程RNN image,時間步將控制網絡包含的綠色塊的數量。