Keras 3 API 文件 / 層 API / 循環層 / ConvLSTM2D 層

ConvLSTM2D 層

[原始碼]

ConvLSTM2D 類別

keras.layers.ConvLSTM2D(
    filters,
    kernel_size,
    strides=1,
    padding="valid",
    data_format=None,
    dilation_rate=1,
    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,
    seed=None,
    return_sequences=False,
    return_state=False,
    go_backwards=False,
    stateful=False,
    **kwargs
)

2D 卷積 LSTM。

類似於 LSTM 層,但輸入轉換和循環轉換都是卷積。

參數

  • filters:整數,輸出空間的維度(卷積中的濾波器數量)。
  • kernel_size:整數或 2 個整數的元組/列表,指定卷積視窗的大小。
  • strides:整數或 2 個整數的元組/列表,指定卷積的步幅長度。strides > 1dilation_rate > 1 不相容。
  • padding:字串,"valid""same"(不區分大小寫)。"valid" 表示不填充。"same" 會均勻地填充輸入的左/右或上/下,使輸出的高度/寬度尺寸與輸入相同。
  • data_format:字串,"channels_last""channels_first"。輸入中維度的順序。"channels_last" 對應於形狀為 (batch, steps, features) 的輸入,而 "channels_first" 對應於形狀為 (batch, features, steps) 的輸入。預設為在您的 Keras 設定檔 ~/.keras/keras.json 中找到的 image_data_format 值。如果您從未設定它,則將為 "channels_last"
  • dilation_rate:整數或 2 個整數的元組/列表,指定用於擴張卷積的擴張率。
  • activation:要使用的激活函數。預設情況下,應用雙曲正切激活函數(tanh(x))。
  • recurrent_activation:用於循環步驟的激活函數。
  • use_bias:布林值,圖層是否使用偏差向量。
  • kernel_initializerkernel 權重矩陣的初始化器,用於輸入的線性轉換。
  • recurrent_initializerrecurrent_kernel 權重矩陣的初始化器,用於循環狀態的線性轉換。
  • bias_initializer:偏差向量的初始化器。
  • unit_forget_bias:布林值。如果為 True,則在初始化時將 1 新增至遺忘閘的偏差。與 bias_initializer="zeros" 結合使用。建議在 Jozefowicz et al., 2015 中使用
  • kernel_regularizer:應用於 kernel 權重矩陣的正規化函數。
  • recurrent_regularizer:應用於 recurrent_kernel 權重矩陣的正規化函數。
  • bias_regularizer:應用於偏差向量的正規化函數。
  • activity_regularizer:應用於的正規化函數。
  • kernel_constraint:應用於 kernel 權重矩陣的約束函數。
  • recurrent_constraint:應用於 recurrent_kernel 權重矩陣的約束函數。
  • bias_constraint:應用於偏差向量的約束函數。
  • dropout:介於 0 和 1 之間的浮點數。要為輸入的線性轉換而捨棄的單元比例。
  • recurrent_dropout:介於 0 和 1 之間的浮點數。要為循環狀態的線性轉換而捨棄的單元比例。
  • seed:用於 dropout 的隨機種子。
  • return_sequences:布林值。是否返回輸出序列中的最後一個輸出,或完整序列。預設值:False
  • return_state:布林值。除了輸出之外,是否返回最後一個狀態。預設值:False
  • go_backwards:布林值(預設值:False)。如果為 True,則反向處理輸入序列並返回反向序列。
  • stateful:布林值(預設值 False)。如果為 True,則批次中索引 i 處每個樣本的最後一個狀態將用作後續批次中索引 i 的樣本的初始狀態。
  • unroll:布林值(預設值:False)。如果為 True,則網路將會展開,否則將使用符號迴圈。展開可以加速 RNN,儘管它往往更耗費記憶體。展開僅適用於短序列。

呼叫參數

  • inputs:5D 張量。
  • mask:形狀為 (samples, timesteps) 的二元張量,指示是否應遮罩給定的時間步。
  • training:Python 布林值,指示圖層應在訓練模式還是推論模式下運作。僅當設定 dropoutrecurrent_dropout 時才相關。
  • initial_state:要傳遞到單元格第一次呼叫的初始狀態張量列表。

輸入形狀

  • 如果 data_format='channels_first':5D 張量,形狀為:(samples, time, channels, rows, cols)
  • 如果 data_format='channels_last':5D 張量,形狀為:(samples, time, rows, cols, channels)

輸出形狀

  • 如果 return_state:張量列表。第一個張量是輸出。其餘張量是最後的狀態,每個都是 4D 張量,如果 data_format='channels_first',則形狀為:(samples, filters, new_rows, new_cols);如果 data_format='channels_last',則形狀為:(samples, new_rows, new_cols, filters)rowscols 值可能會因填充而變更。
  • 如果 return_sequences:5D 張量,如果 data_format='channels_first',則形狀為:(samples, timesteps, filters, new_rows, new_cols);如果 data_format='channels_last',則形狀為:(samples, timesteps, new_rows, new_cols, filters)
  • 否則,4D 張量,如果 data_format='channels_first',則形狀為:(samples, filters, new_rows, new_cols);如果 data_format='channels_last',則形狀為:(samples, new_rows, new_cols, filters)

參考文獻

  • Shi et al., 2015(目前的實作不包含單元格輸出的回饋迴路)。