GRU
類別keras.layers.GRU(
units,
activation="tanh",
recurrent_activation="sigmoid",
use_bias=True,
kernel_initializer="glorot_uniform",
recurrent_initializer="orthogonal",
bias_initializer="zeros",
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,
unroll=False,
reset_after=True,
use_cudnn="auto",
**kwargs
)
門控循環單元 - Cho 等人 2014 年。
根據可用的執行時硬體和限制,此層將選擇不同的實作方式(基於 cuDNN 或後端原生)以最大化效能。如果 GPU 可用,並且該層的所有參數都符合 cuDNN 核心的要求(詳情請見下文),則在使用 TensorFlow 後端時,該層將使用快速的 cuDNN 實作。
使用 cuDNN 實作的要求如下:
activation
== tanh
recurrent_activation
== sigmoid
dropout
== 0 且 recurrent_dropout
== 0unroll
為 False
use_bias
為 True
reset_after
為 True
GRU 實作有兩種變體。預設的實作基於 v3,並在矩陣乘法之前將重置閘應用於隱藏狀態。另一種基於 原始版本,其順序相反。
第二種變體與 CuDNNGRU(僅限 GPU)相容,並允許在 CPU 上進行推理。因此,它為 kernel
和 recurrent_kernel
提供單獨的偏差。要使用此變體,請設定 reset_after=True
和 recurrent_activation='sigmoid'
。
例如:
>>> inputs = np.random.random((32, 10, 8))
>>> gru = keras.layers.GRU(4)
>>> output = gru(inputs)
>>> output.shape
(32, 4)
>>> gru = keras.layers.GRU(4, return_sequences=True, return_state=True)
>>> whole_sequence_output, final_state = gru(inputs)
>>> whole_sequence_output.shape
(32, 10, 4)
>>> final_state.shape
(32, 4)
參數
tanh
)。如果您傳遞 None
,則不應用任何激活函數(即「線性」激活函數:a(x) = x
)。sigmoid
)。如果您傳遞 None
,則不應用任何激活函數(即「線性」激活函數:a(x) = x
)。True
),表示該層是否應使用偏差向量。kernel
權重矩陣的初始化器,用於輸入的線性轉換。預設值:"glorot_uniform"
。recurrent_kernel
權重矩陣的初始化器,用於循環狀態的線性轉換。預設值:"orthogonal"
。"zeros"
。kernel
權重矩陣的正規化函數。預設值:None
。recurrent_kernel
權重矩陣的正規化函數。預設值:None
。None
。None
。kernel
權重矩陣的約束函數。預設值:None
。recurrent_kernel
權重矩陣的約束函數。預設值:None
。None
。False
。False
。False
)。如果為 True
,則反向處理輸入序列並傳回反向序列。False
)。如果為 True
,則在批次中索引 i 處每個樣本的最後狀態將用作以下批次中索引 i 處樣本的初始狀態。False
)。如果為 True
,則網路將被展開,否則將使用符號迴圈。展開可以加速 RNN,但往往會更加耗費記憶體。展開僅適用於短序列。False
為 "before"
,True
為 "after"
(預設值,與 cuDNN 相容)。"auto"
將嘗試在可行時使用 cuDNN,如果不可行,則會回退到預設實作。呼叫參數
(batch, timesteps, feature)
。(samples, timesteps)
的二元張量,指示是否應遮罩給定的時間步長(可選)。True
個別條目表示應使用相應的時間步長,而 False
個別條目表示應忽略相應的時間步長。預設值為 None
。dropout
或 recurrent_dropout
時才相關(可選)。預設值為 None
。None
會導致建立以零填充的初始狀態張量)。預設值為 None
。