Creates a bidirectional recurrent neural network.
tf.contrib.rnn.stack_bidirectional_rnn(
cells_fw, cells_bw, inputs, initial_states_fw=None, initial_states_bw=None,
dtype=None, sequence_length=None, scope=None
)
Stacks several bidirectional rnn layers. The combined forward and backward layer outputs are used as input of the next layer. tf.bidirectional_rnn does not allow to share forward and backward information between layers. The input_size of the first forward and backward cells must match. The initial state for both directions is zero and no intermediate states are returned.
As described in https://arxiv.org/abs/1303.5778
Args | |
---|---|
cells_fw
|
List of instances of RNNCell, one per layer, to be used for forward direction. |
cells_bw
|
List of instances of RNNCell, one per layer, to be used for backward direction. |
inputs
|
A length T list of inputs, each a tensor of shape [batch_size, input_size], or a nested tuple of such elements. |
initial_states_fw
|
(optional) A list of the initial states (one per layer)
for the forward RNN.
Each tensor must has an appropriate type and shape
[batch_size, cell_fw.state_size] .
|
initial_states_bw
|
(optional) Same as for initial_states_fw , but using
the corresponding properties of cells_bw .
|
dtype
|
(optional) The data type for the initial state. Required if either of the initial states are not provided. |
sequence_length
|
(optional) An int32/int64 vector, size [batch_size] ,
containing the actual lengths for each of the sequences.
|
scope
|
VariableScope for the created subgraph; defaults to None. |
Returns | |
---|---|
A tuple (outputs, output_state_fw, output_state_bw) where:
outputs is a length T list of outputs (one for each input), which
are depth-concatenated forward and backward outputs.
output_states_fw is the final states, one tensor per layer,
of the forward rnn.
output_states_bw is the final states, one tensor per layer,
of the backward rnn.
|
Raises | |
---|---|
TypeError
|
If cell_fw or cell_bw is not an instance of RNNCell .
|
ValueError
|
If inputs is None, not a list or an empty list. |