paddle.static.nn. sequence_slice ( input, offset, length, name=None ) [source]

Sequence Slice Layer

The layer crops a subsequence from given sequence with given start offset and subsequence length.

It only supports sequence data (Tensor with lod_level equal to 1).

  - Case:

Given the input Tensor **input**: = [[a1, a2], [b1, b2], [c1, c2], [d1, d2], [e1, e2]],
    input.lod = [[3, 2]],
    input.dims = (5, 2),

with = [[0], [1]] and = [[2], [1]],

the output Tensor will be = [[a1, a2], [b1, b2], [e1, e2]],
    out.lod = [[2, 1]],
    out.dims = (3, 2).


The first dimension size of input, offset and length should be equal. The offset should start from 0.

  • input (Tensor) – Tensor, The input Tensor which consists of the complete sequences.The data type can be float32, float64, int32 or int64

  • offset (Tensor) – Tensor, The offset to slice each sequence. The data type is int32 or int64.

  • length (Tensor) – Tensor, The length of each subsequence. The data type is int32 or int64.

  • name (str|None) – The default value is None. Normally there is no need for user to set this property. For more information, please refer to Name


The output subsequences.

Return type



>>> import paddle
>>> paddle.enable_static()

>>> import numpy as np
>>> seqs ='x', shape=[10, 5],
...                  dtype='float32', lod_level=1)
>>> offset = paddle.assign(np.array([[0, 1]]).astype("int32"))
>>> length = paddle.assign(np.array([[2, 1]]).astype("int32"))
... subseqs = paddle.static.nn.sequence_slice(input=seqs, offset=offset,
...                                       length=length)