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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。