keras的LSTM函數詳解


keras.layers.recurrent.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0)

轉載:https://blog.csdn.net/jiangpeng59/article/details/77646186

 

核心參數
units:

輸出維度
input_dim:

輸入維度,當使用該層為模型首層時,應指定該值(或等價的指定input_shape)
return_sequences:

布爾值,默認False,控制返回類型。若為True則返回整個序列,否則僅返回輸出序列的最后一個輸出
input_length:

當輸入序列的長度固定時,該參數為輸入序列的長度。當需要在該層后連接Flatten層,然后又要連接Dense層時,需要指定該參數,否則全連接的輸出無法計算出來

輸入shape
形如(samples,timesteps,input_dim)的3D張量

輸出shape

如果return_sequences=True:返回形如(samples,timesteps,output_dim)的3D張量否則,返回形如(samples,output_dim)的2D張量

備注:

1.輸入和輸出的類型
  相對之前的tensor,這里多了個參數timesteps.舉個栗子,假如輸入100個句子,每個句子由5個單詞組成,每個單詞用64維詞向量表示。那么samples=100,timesteps=5,input_dim=64,可以簡單地理解timesteps就是輸入序列的長度input_length(視情而定).

2.units
假如units=128,就一個單詞而言,可以把LSTM內部簡化看成Y=X1×64W64×128 ,X為上面提及的詞向量比如64維,W中的128就是units,也就是說通過LSTM把詞的維度由64轉變成了128.

3.return_sequences
我們可以把很多LSTM層串在一起,但是最后一個LSTM層return_sequences通常為False,具體看下面的栗子:

 

Sentence: you are really a genius

model = Sequential()
model.add(LSTM(128, input_dim=64, input_length=5, return_sequences=True))
model.add(LSTM(256, return_sequences=False))

(1)我們把輸入的單詞,轉換為維度64的詞向量,小矩形的數目即單詞的個數input_length 

(2)通過第一個LSTM中的Y=XW,這里輸入為維度64,輸出為維度128,而return_sequences=True,我們可以獲得5個128維的詞向量V1’..V5’ 

(3)通過第二個LSTM,此時輸入為V1’..V5’都為128維,經轉換后得到V1”..V5”為256維,最后因為return_sequences=False,所以只輸出了最后一個紅色的詞向量

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM