門控循環單元 - Cho 等人。 2014 年。
用法
tf.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, return_sequences=False, return_state=False,
go_backwards=False, stateful=False, unroll=False, time_major=False,
reset_after=True, **kwargs
)參數
-
units正整數,輸出空間的維度。 -
activation要使用的激活函數。默認值:雙曲正切(tanh)。如果您通過None,則不會應用激活(即 "linear" 激活:a(x) = x)。 -
recurrent_activation用於循環步驟的激活函數。默認值:sigmoid (sigmoid)。如果您通過None,則不會應用激活(即 "linear" 激活:a(x) = x)。 -
use_bias布爾值,(默認True),圖層是否使用偏置向量。 -
kernel_initializerkernel權重矩陣的初始化器,用於輸入的線性變換。默認值:glorot_uniform。 -
recurrent_initializerrecurrent_kernel權重矩陣的初始化器,用於循環狀態的線性變換。默認值:orthogonal。 -
bias_initializer偏置向量的初始化器。默認值:zeros。 -
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 的樣本的初始狀態。 -
unroll布爾值(默認為 False)。如果為 True,則網絡將展開,否則將使用符號循環。展開可以speed-up一個RNN,雖然它往往更多memory-intensive。展開僅適用於短序列。 -
time_majorinputs和outputs張量的形狀格式。如果為 True,輸入和輸出的形狀將是[timesteps, batch, feature],而在 False 情況下,它將是[batch, timesteps, feature]。使用time_major = True效率更高一些,因為它避免了 RNN 計算開始和結束時的轉置。但是,大多數 TensorFlow 數據是 batch-major,因此默認情況下,此函數接受輸入並以 batch-major 形式發出輸出。 -
reset_afterGRU 約定(是否在矩陣乘法之後或之前應用重置門)。 False = "before",True = "after"(默認和 cuDNN 兼容)。
屬性
-
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 -
reset_after -
states -
units -
use_bias
有關 RNN API 使用的詳細信息,請參閱 Keras RNN API 指南。
根據可用的運行時硬件和約束,該層將選擇不同的實現(基於 cuDNN 或 pure-TensorFlow)以最大化性能。如果 GPU 可用並且該層的所有參數都滿足 cuDNN 內核的要求(詳見下文),則該層將使用快速 cuDNN 實現。
使用 cuDNN 實現的要求是:
activation==tanhrecurrent_activation==sigmoidrecurrent_dropout== 0unroll是Falseuse_bias是Truereset_after是True- 輸入,如果使用掩碼,嚴格來說是right-padded。
- 在最外層的上下文中啟用了即刻執行。
GRU 實現有兩種變體。默認的基於 v3,並在矩陣乘法之前將重置門應用於隱藏狀態。另一種是根據原件,順序顛倒。
第二個變體與 CuDNNGRU (GPU-only) 兼容,並允許在 CPU 上進行推理。因此,它對 kernel 和 recurrent_kernel 有不同的偏見。要使用此變體,請設置 reset_after=True 和 recurrent_activation='sigmoid' 。
例如:
inputs = tf.random.normal([32, 10, 8])
gru = tf.keras.layers.GRU(4)
output = gru(inputs)
print(output.shape)
(32, 4)
gru = tf.keras.layers.GRU(4, return_sequences=True, return_state=True)
whole_sequence_output, final_state = gru(inputs)
print(whole_sequence_output.shape)
(32, 10, 4)
print(final_state.shape)
(32, 4)
調用參數:
inputs:一個 3D 張量,有形狀[batch, timesteps, feature].mask: 形狀的二進製張量[samples, timesteps]指示是否應屏蔽給定時間步(可選,默認為None)。個人True條目指示應使用相應的時間步長,而Falseentry 表示應該忽略相應的時間步長。training:Python 布爾值,指示層應該在訓練模式還是推理模式下運行。此參數在調用時傳遞給單元格。這僅在以下情況下才相關dropout或者recurrent_dropout使用(可選,默認為None)。initial_state:要傳遞給單元格第一次調用的初始狀態張量列表(可選,默認為None這會導致創建zero-filled 初始狀態張量)。
相關用法
- Python tf.keras.layers.GRUCell用法及代碼示例
- Python tf.keras.layers.GlobalAveragePooling1D用法及代碼示例
- Python tf.keras.layers.GlobalMaxPool1D用法及代碼示例
- Python tf.keras.layers.GlobalAveragePooling2D用法及代碼示例
- Python tf.keras.layers.GlobalMaxPool2D用法及代碼示例
- Python tf.keras.layers.InputLayer用法及代碼示例
- Python tf.keras.layers.serialize用法及代碼示例
- Python tf.keras.layers.Dropout用法及代碼示例
- Python tf.keras.layers.maximum用法及代碼示例
- Python tf.keras.layers.LayerNormalization用法及代碼示例
- Python tf.keras.layers.Conv2D用法及代碼示例
- Python tf.keras.layers.RepeatVector用法及代碼示例
- Python tf.keras.layers.Multiply用法及代碼示例
- Python tf.keras.layers.Activation用法及代碼示例
- Python tf.keras.layers.Conv1D用法及代碼示例
- Python tf.keras.layers.experimental.preprocessing.PreprocessingLayer.adapt用法及代碼示例
- Python tf.keras.layers.CategoryEncoding用法及代碼示例
- Python tf.keras.layers.subtract用法及代碼示例
- Python tf.keras.layers.experimental.preprocessing.HashedCrossing用法及代碼示例
- Python tf.keras.layers.Subtract用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.layers.GRU。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
