ReverseSequence

Versioned name : ReverseSequence-1

Category : Data movement

Short description : ReverseSequence reverses variable length slices of data.

Detailed description

ReverseSequence slices a given input tensor data along the dimension specified in the batch_axis attribute. For each slice i, it reverses the first seq_lengths[i] elements along the dimension specified in the seq_axis attribute.

Attributes

  • batch_axis

    • Description : batch_axis is the index of the batch dimension along which data input tensor is sliced.

    • Range of values : an integer within the range [-rank(data), rank(data) - 1]

    • Type : int

    • Default value : 0

    • Required : no

  • seq_axis

    • Description : seq_axis is the index of the sequence dimension along which elements of data input tensor are reversed.

    • Range of values : an integer within the range [-rank(data), rank(data) - 1]

    • Type : int

    • Default value : 1

    • Required : no

Inputs

  • 1 : data - Input data to reverse. A tensor of type T1 and rank greater or equal to 2. Required.

  • 2 : seq_lengths - Sequence lengths to reverse in the input tensor data. A 1D tensor comprising data_shape[batch_axis] elements of type T2. All element values must be integer values within the range [1, data_shape[seq_axis]]. Value 1 means, no elements are reversed. Required.

Outputs

  • 1 : The result of slice and reverse data input tensor. A tensor of type T1 and the same shape as data input tensor.

Types

  • T1 : any supported type.

  • T2 : any supported numerical type.

Example

<layer ... type="ReverseSequence">
    <data batch_axis="0" seq_axis="1"/>
    <input>
        <port id="0">       <!-- data -->
            <dim>4</dim>    <!-- batch_axis -->
            <dim>10</dim>   <!-- seq_axis -->
            <dim>100</dim>
            <dim>200</dim>
        </port>
        <port id="1">
            <dim>4</dim>    <!-- seq_lengths value: [2, 4, 8, 10] -->
        </port>
     </input>
    <output>
        <port id="2">
            <dim>4</dim>
            <dim>10</dim>
            <dim>100</dim>
            <dim>200</dim>
        </port>
    </output>
</layer>