RNN 的雙向包裝器。
用法
tf.keras.layers.Bidirectional(
layer, merge_mode='concat', weights=None, backward_layer=None,
**kwargs
)
參數
-
layer
tf.keras.layers.RNN例如,例如tf.keras.layers.LSTM或者tf.keras.layers.GRU.它也可能是一個tf.keras.layers.Layer滿足以下條件的實例:- 成為sequence-processing 層(接受 3D+ 輸入)。
- 具有
go_backwards
,return_sequences
和return_state
屬性(與RNN
類具有相同的語義)。 - 具有
input_spec
屬性。 - 通過
get_config()
和from_config()
實現序列化。請注意,創建新 RNN 層的推薦方法是編寫自定義 RNN 單元並將其與keras.layers.RNN
一起使用,而不是直接繼承keras.layers.Layer
。 - 當
returns_sequences
為真時,無論圖層的原始zero_output_for_mask
值如何,屏蔽時間步的輸出都將為零。
-
merge_mode
組合前向和後向 RNN 的輸出的模式。 {'sum'、'mul'、'concat'、'ave'、無}之一。如果為 None,則不會合並輸出,它們將作為列表返回。默認值為'concat'。 -
backward_layer
可選的keras.layers.RNN
或keras.layers.Layer
實例用於處理反向輸入處理。如果未提供backward_layer
,則作為layer
參數傳遞的層實例將用於自動生成後向層。請注意,提供的backward_layer
層應具有與layer
參數匹配的屬性,特別是對於stateful
,return_states
,return_sequences
等應具有相同的值。此外,backward_layer
和layer
應具有不同的go_backwards
參數值。如果不滿足這些要求,將引發ValueError
。
拋出
-
ValueError
- 如果
layer
或backward_layer
不是Layer
實例。 - 如果
merge_mode
參數無效。 - 如果
backward_layer
與layer
相比具有不匹配的屬性。
- 如果
屬性
-
constraints
調用參數:
該層的調用參數與包裝的 RNN 層的調用參數相同。注意,在調用這一層的過程中傳遞initial_state
參數時,initial_state
列表中元素列表的前半部分將被傳遞給前向RNN調用,元素列表中的後半部分將被傳遞到反向 RNN 調用。
例子:
model = Sequential()
model.add(Bidirectional(LSTM(10, return_sequences=True), input_shape=(5, 10)))
model.add(Bidirectional(LSTM(10)))
model.add(Dense(5))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
# With custom backward layer
model = Sequential()
forward_layer = LSTM(10, return_sequences=True)
backward_layer = LSTM(10, activation='relu', return_sequences=True,
go_backwards=True)
model.add(Bidirectional(forward_layer, backward_layer=backward_layer,
input_shape=(5, 10)))
model.add(Dense(5))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
相關用法
- 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用法及代碼示例
- Python tf.keras.layers.ZeroPadding3D用法及代碼示例
- Python tf.keras.layers.MaxPool3D用法及代碼示例
- Python tf.keras.layers.Dot用法及代碼示例
- Python tf.keras.layers.UpSampling1D用法及代碼示例
- Python tf.keras.layers.MultiHeadAttention用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.layers.Bidirectional。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。