對LSTM層的引數units 的理解

2021-09-29 06:25:06 字數 776 閱讀 9942

model = sequential()

model.add(lstm(32, batch_input_shape=(none, 10, 64)))

以上lstm的第乙個引數units=32,指的並不是一層lstm有32個lstm單元。

在很多lstm的框圖中,我們都會將lstm單元按照時間順序排列開來,句子的長度是多少我們就會畫出多少個lstm單元。這也是給我們帶來誤解的地方。實際上一層lstm的每個『單元』是共享引數的,所以並沒有所謂的那麼多個lstm單元,我們可以理解為它們其實是同乙個lstm單元,只有乙個單元的參數量。

這裡我們設定的units=32的大小,其實代表得是lstm單元內的隱藏層的尺寸。

對於lstm而言,每個單元有3個門,對應了4個啟用函式(3個sigmoid,乙個tanh)。也就是說有4個神經元數量為32的前饋網路層。

對於lstm的計算過程,我們這裡舉乙個簡單的例子:

假如我們樣本的每一句話包含5個單詞,每個單詞用16維的詞向量表示。對於lstm(units=32),我們可以把lstm內部的計算過程計算過程簡化為:

y=x1×16w16×32,這裡x為(1,16)的向量,w為(16,32)的矩陣,所以運用矩陣乘法,將16維的x轉化為32維的向量。

如下圖所示:

我們可以簡單的將lstm內部的各種計算想象成全連線的之間的矩陣計算。

所以units代表的不是一層單元的個數,而是單元內部隱藏層的大小。

關於LSTM的units引數

lstm units,input shape 3,1 這裡的units指的是cell的個數麼?如果是,按照lstm原理這些cell之間應該是無連線的,那units的多少其意義是什麼呢,是不是相當於mlp裡面對應隱層的神經元個數,只是為了擴充套件系統的輸出能力 這個問題也困擾了我很久,後來終於明白了,...

Keras中LSTM引數的含義

units 是輸出的維度。在下圖中,中間的綠色cell 裡面有四個黃色小框,每乙個小黃框代表乙個前饋網路層,對,就是經典的神經網路的結構,num units就是這個層的隱藏神經元個數,就這麼簡單。其中1 2 4的啟用函式是 sigmoid,第三個的啟用函式是 tanh。參考 units還可以理解為 ...

LSTM模型的輸入引數問題

公開課 lstm長短期記憶神經網路的學習與實現 lstm模型的輸入引數問題 keras 基於時間序列的lstm的資料格式是怎麼樣?我現在在做乙個lstm做乙個 值,不知道該傳什麼格式的資料給x,把資料集弄成什麼樣子能傳。如何準備用於lstm模型的資料並進行序列 long short term mem...