ReverseSequence#

  • Domain: ai.onnx

  • Since version: 28

Reverse batch of sequences having different lengths specified by sequence_lens.

For each slice i iterating on batch axis, the operator reverses the first sequence_lens[i] elements on time axis, and copies elements whose index’s beyond sequence_lens[i] to the output. So the output slice i contains reversed sequences on the first sequence_lens[i] elements, then have original values copied for the other elements.

Example 1:

input = [[0.0, 4.0, 8.0,  12.0],
         [1.0, 5.0, 9.0,  13.0],
         [2.0, 6.0, 10.0, 14.0],
         [3.0, 7.0, 11.0, 15.0]]
sequence_lens = [4, 3, 2, 1]
time_axis = 0
batch_axis = 1

output = [[3.0, 6.0, 9.0,  12.0],
          [2.0, 5.0, 8.0,  13.0],
          [1.0, 4.0, 10.0, 14.0],
          [0.0, 7.0, 11.0, 15.0]]

Example 2:

input = [[0.0,  1.0,  2.0,  3.0 ],
         [4.0,  5.0,  6.0,  7.0 ],
         [8.0,  9.0,  10.0, 11.0],
         [12.0, 13.0, 14.0, 15.0]]
sequence_lens = [1, 2, 3, 4]
time_axis = 1
batch_axis = 0

output = [[0.0,  1.0,  2.0,  3.0 ],
          [5.0,  4.0,  6.0,  7.0 ],
          [10.0, 9.0,  8.0,  11.0],
          [15.0, 14.0, 13.0, 12.0]]

Inputs

  • input (T): Tensor of rank r >= 2.

  • sequence_lens (tensor(int64)): Tensor specifying lengths of the sequences in a batch. It has shape [batch_size].

Outputs

  • Y (T): Tensor with same shape of input.

Attributes

  • batch_axis (int): (Optional) Specify which axis is batch axis. Must be one of 1 (default), or 0.

  • time_axis (int): (Optional) Specify which axis is time axis. Must be one of 0 (default), or 1.

Type Constraints

  • T: Input and output types can be of any tensor type. Allowed types: tensor(bfloat16), tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8).

Examples#

test_reversesequence_bfloat16

Node:
  ReverseSequence(X, sequence_lens) -> (Y)
  Attributes:
    time_axis = 1
    batch_axis = 0
Inputs:
  X: shape=(2, 4), dtype=bfloat16
    [[1, 2, 3, 4],
     [5, 6, 7, 8]]
  sequence_lens: shape=(2,), dtype=int64
    [4, 3]

Outputs:
  Y: shape=(2, 4), dtype=bfloat16
    [[4, 3, 2, 1],
     [7, 6, 5, 8]]

Differences with previous version (10)#

SchemaDiff: ReverseSequence (domain 'ai.onnx')

  • old version: 10

  • new version: 28

  • breaking: no

Type constraints:

  • changed ‘T’: added types: [‘tensor(bfloat16)’]

Version History#