參考Keras關(guān)于LSTM的units參數(shù),還是不理解?
參考文章中說的很明白了,這里我只是再單純的寫一下筆記。
一、普通的神經(jīng)網(wǎng)絡(luò)
假設(shè),對于一個一層神經(jīng)網(wǎng)絡(luò),此網(wǎng)絡(luò)層有64個units,即隱藏神經(jīng)元個數(shù)是64個,激活函數(shù)為sigmoid。輸入X是一個128維的向量X,分類的話,有10個類別。問這個神經(jīng)網(wǎng)絡(luò)共有多少個參數(shù)?
X.shape() = (128,1),隱藏神經(jīng)元個數(shù)是64,為了能夠讓W(xué)1X相乘,那么第一層就要有一個W跟一個b1。其中W1.shape() = (64,128),,b1.shape() = (64,1)
于是再第一層sigmoid激活函數(shù)以后以后,得到一個(64,1)的向量,輸出有10個類別,也可以認(rèn)為輸出層有10個隱藏單元個數(shù),所以W1.shape()=(10,64),,b2.shape() = (10,1).
也就是說,第一層運(yùn)算是sigmoid(W1X+b1)=A,
第二層運(yùn)算是softmax(W2A+b2)。所以共有,(64x128+64)+()10x64+10)個參數(shù)。
二、一個LSTM_cell中,共有多少參數(shù)
2.1,首先弄明白,keras中的units參數(shù)是什么意思

對,就是這么簡單,就是這層的隱藏神經(jīng)單元個數(shù)。
2.2,一個cell共有多少個參數(shù)呢

假設(shè)units = 64
根據(jù)上圖,我們可以計算,假設(shè)a向量是128維向量,x向量是28維向量,那么二者concat以后就是156維向量,為了能相乘,那么Wf就應(yīng)該是(64,156),同理其余三個框,也應(yīng)該是同樣的shape。于是,在第一層就有參數(shù)64x156x4 + 64x4個。
若是把cell外面的參數(shù)也算進(jìn)去,那么假設(shè)有10個類,那么對于最終的shape為(64,1)的輸出at,還要有一個shape為(10,64)的W跟一個shape為(10,1)的b。