當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.keras.layers.LSTM用法及代碼示例


長短期 memory 層 - Hochreiter 1997。

繼承自:LSTMRNNLayerModule

用法

tf.keras.layers.LSTM(
    units, activation='tanh', recurrent_activation='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,
    return_sequences=False, return_state=False, go_backwards=False, stateful=False,
    time_major=False, unroll=False, **kwargs
)

參數

  • units 正整數,輸出空間的維度。
  • activation 要使用的激活函數。默認值:雙曲正切(tanh)。如果您通過 None ,則不會應用激活(即 "linear" 激活:a(x) = x )。
  • recurrent_activation 用於循環步驟的激活函數。默認值:sigmoid (sigmoid)。如果您通過 None ,則不會應用激活(即 "linear" 激活:a(x) = x )。
  • use_bias 布爾值(默認 True ),圖層是否使用偏置向量。
  • kernel_initializer kernel 權重矩陣的初始化器,用於輸入的線性變換。默認值:glorot_uniform
  • recurrent_initializer recurrent_kernel 權重矩陣的初始化器,用於循環狀態的線性變換。默認值:orthogonal
  • bias_initializer 偏置向量的初始化器。默認值:zeros
  • unit_forget_bias 布爾值(默認True)。如果為真,則在初始化時將遺忘門的偏差加 1。將其設置為 true 也會強製bias_initializer="zeros".建議在Jozefowicz 等人。.
  • kernel_regularizer 應用於kernel 權重矩陣的正則化函數。默認值:None
  • recurrent_regularizer 應用於recurrent_kernel 權重矩陣的正則化函數。默認值:None
  • bias_regularizer 應用於偏置向量的正則化函數。默認值:None
  • activity_regularizer 應用於層輸出的正則化函數("activation")。默認值:None
  • kernel_constraint 應用於kernel 權重矩陣的約束函數。默認值:None
  • recurrent_constraint 應用於recurrent_kernel 權重矩陣的約束函數。默認值:None
  • bias_constraint 應用於偏置向量的約束函數。默認值:None
  • dropout 在 0 和 1 之間浮點數。為輸入的線性變換而下降的單位分數。默認值:0。
  • recurrent_dropout 在 0 和 1 之間浮點數。用於循環狀態的線性變換的單位的分數。默認值:0。
  • return_sequences 布爾值。是否返回最後的輸出。在輸出序列或完整序列中。默認值:False
  • return_state 布爾值。是否返回除了輸出之外的最後一個狀態。默認值:False
  • go_backwards 布爾值(默認 False )。如果為 True,則反向處理輸入序列並返回反向序列。
  • stateful 布爾值(默認 False )。如果為 True,則批次中索引 i 處每個樣本的最後狀態將用作下一批中索引 i 的樣本的初始狀態。
  • time_major inputsoutputs 張量的形狀格式。如果為 True,輸入和輸出的形狀將是 [timesteps, batch, feature] ,而在 False 情況下,它將是 [batch, timesteps, feature] 。使用time_major = True 效率更高一些,因為它避免了 RNN 計算開始和結束時的轉置。但是,大多數 TensorFlow 數據是 batch-major,因此默認情況下,此函數接受輸入並以 batch-major 形式發出輸出。
  • unroll 布爾值(默認 False )。如果為 True,則網絡將展開,否則將使用符號循環。展開可以speed-up一個RNN,雖然它往往更多memory-intensive。展開僅適用於短序列。

屬性

  • activation
  • bias_constraint
  • bias_initializer
  • bias_regularizer
  • dropout
  • implementation
  • kernel_constraint
  • kernel_initializer
  • kernel_regularizer
  • recurrent_activation
  • recurrent_constraint
  • recurrent_dropout
  • recurrent_initializer
  • recurrent_regularizer
  • states
  • unit_forget_bias
  • units
  • use_bias

有關 RNN API 使用的詳細信息,請參閱 Keras RNN API 指南。

根據可用的運行時硬件和約束,該層將選擇不同的實現(基於 cuDNN 或 pure-TensorFlow)以最大化性能。如果 GPU 可用並且該層的所有參數都滿足 cuDNN 內核的要求(詳見下文),則該層將使用快速 cuDNN 實現。

使用 cuDNN 實現的要求是:

  1. activation == tanh
  2. recurrent_activation == sigmoid
  3. recurrent_dropout == 0
  4. unrollFalse
  5. use_biasTrue
  6. 輸入,如果使用掩碼,嚴格來說是right-padded。
  7. 在最外層的上下文中啟用了即刻執行。

例如:

inputs = tf.random.normal([32, 10, 8])
lstm = tf.keras.layers.LSTM(4)
output = lstm(inputs)
print(output.shape)
(32, 4)
lstm = tf.keras.layers.LSTM(4, return_sequences=True, return_state=True)
whole_seq_output, final_memory_state, final_carry_state = lstm(inputs)
print(whole_seq_output.shape)
(32, 10, 4)
print(final_memory_state.shape)
(32, 4)
print(final_carry_state.shape)
(32, 4)

調用參數:

  • inputs:帶形狀的 3D 張量[batch, timesteps, feature].
  • mask: 形狀的二進製張量[batch, timesteps]指示是否應屏蔽給定時間步(可選,默認為None)。個人True條目指示應使用相應的時間步長,而Falseentry 表示應該忽略相應的時間步長。
  • training:Python 布爾值,指示層應該在訓練模式還是推理模式下運行。此參數在調用時傳遞給單元格。這僅在以下情況下才相關dropout或者recurrent_dropout使用(可選,默認為None)。
  • initial_state:要傳遞給單元格第一次調用的初始狀態張量列表(可選,默認為None這會導致創建zero-filled 初始狀態張量)。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.layers.LSTM。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。