tf.keras.layers.Bidirectional
Stay organized with collections
Save and categorize content based on your preferences.
Bidirectional wrapper for RNNs.
Inherits From: Wrapper
tf.keras.layers.Bidirectional(
layer, merge_mode='concat', weights=None, backward_layer=None, **kwargs
)
Arguments |
layer
|
keras.layers.RNN instance, such as keras.layers.LSTM or
keras.layers.GRU . It could also be a keras.layers.Layer instance
that meets the following criteria:
- Be a sequence-processing layer (accepts 3D+ inputs).
- Have a
go_backwards , return_sequences and return_state
attribute (with the same semantics as for the RNN class).
- Have an
input_spec attribute.
- Implement serialization via
get_config() and from_config() .
Note that the recommended way to create new RNN layers is to write a
custom RNN cell and use it with keras.layers.RNN , instead of
subclassing keras.layers.Layer directly.
|
merge_mode
|
Mode by which outputs of the forward and backward RNNs will be
combined. One of {'sum', 'mul', 'concat', 'ave', None}. If None, the
outputs will not be combined, they will be returned as a list. Default
value is 'concat'.
|
backward_layer
|
Optional keras.layers.RNN , or keras.layers.Layerinstance
to be used to handle backwards input processing. If backward_layeris
not provided, the layer instance passed as the layerargument will be
used to generate the backward layer automatically.
Note that the provided backward_layerlayer should have properties
matching those of the layerargument, in particular it should have the
same values for stateful, return_states, return_sequence, etc.
In addition, backward_layerand layershould have different go_backwardsargument values.
A ValueError` will be raised if these requirements are not met.
|
Call arguments:
The call arguments for this layer are the same as those of the wrapped RNN
layer.
Raises |
ValueError
|
- If
layer or backward_layer is not a Layer instance.
- In case of invalid
merge_mode argument.
- If
backward_layer has mismatched properties compared to layer .
|
Examples:
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')
Methods
reset_states
View source
reset_states()
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-10-01 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2020-10-01 UTC."],[],[]]