#include <array_ops.h>
Reverses variable length slices.
This op first slices input
along the dimension batch_dim
, and for each slice i
, reverses the first seq_lengths[i]
elements along the dimension seq_dim
.
The elements of seq_lengths
must obey seq_lengths[i] <= input.dims[seq_dim]
, and seq_lengths
must be a vector of length input.dims[batch_dim]
.
The output slice i
along dimension batch_dim
is then given by input slice i
, with the first seq_lengths[i]
slices along dimension seq_dim
reversed.
For example:
``` Given this:
batch_dim = 0 seq_dim = 1 input.dims = (4, 8, ...) seq_lengths = [7, 2, 3, 5]
then slices of input are reversed on seq_dim, but only up to seq_lengths:
output[0, 0:7, :, ...] = input[0, 7:0:-1, :, ...] output[1, 0:2, :, ...] = input[1, 2:0:-1, :, ...] output[2, 0:3, :, ...] = input[2, 3:0:-1, :, ...] output[3, 0:5, :, ...] = input[3, 5:0:-1, :, ...]
while entries past seq_lens are copied through:
output[0, 7:, :, ...] = input[0, 7:, :, ...] output[1, 2:, :, ...] = input[1, 2:, :, ...] output[2, 3:, :, ...] = input[2, 3:, :, ...] output[3, 2:, :, ...] = input[3, 2:, :, ...] ```
In contrast, if:
``` Given this:
batch_dim = 2 seq_dim = 0 input.dims = (8, ?, 4, ...) seq_lengths = [7, 2, 3, 5]
then slices of input are reversed on seq_dim, but only up to seq_lengths:
output[0:7, :, 0, :, ...] = input[7:0:-1, :, 0, :, ...] output[0:2, :, 1, :, ...] = input[2:0:-1, :, 1, :, ...] output[0:3, :, 2, :, ...] = input[3:0:-1, :, 2, :, ...] output[0:5, :, 3, :, ...] = input[5:0:-1, :, 3, :, ...]
while entries past seq_lens are copied through:
output[7:, :, 0, :, ...] = input[7:, :, 0, :, ...] output[2:, :, 1, :, ...] = input[2:, :, 1, :, ...] output[3:, :, 2, :, ...] = input[3:, :, 2, :, ...] output[2:, :, 3, :, ...] = input[2:, :, 3, :, ...] ```
Arguments:
input.dims(batch_dim)
and max(seq_lengths) <= input.dims(seq_dim)
Optional attributes (see Attrs
):
Returns:
Output
: The partially reversed input. It has the same shape as input
. Constructors and Destructors | |
---|---|
ReverseSequence(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input seq_lengths, int64 seq_dim) | |
ReverseSequence(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input seq_lengths, int64 seq_dim, const ReverseSequence::Attrs & attrs) |
Public attributes | |
---|---|
output |
Public functions | |
---|---|
node() const | ::tensorflow::Node * |
operator::tensorflow::Input() const | |
operator::tensorflow::Output() const |
Public static functions | |
---|---|
BatchDim(int64 x) |
Structs | |
---|---|
tensorflow::ops::ReverseSequence::Attrs | Optional attribute setters for ReverseSequence. |
::tensorflow::Output output
ReverseSequence( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input seq_lengths, int64 seq_dim )
ReverseSequence( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input seq_lengths, int64 seq_dim, const ReverseSequence::Attrs & attrs )
::tensorflow::Node * node() const
operator::tensorflow::Input() const
operator::tensorflow::Output() const
Attrs BatchDim( int64 x )
© 2017 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/reverse-sequence.html