sequence_slice

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

实现 Sequence Slice(序列切片)运算

该层从给定序列中截取子序列。截取依据为所给的开始 offset (偏移量) 和子序列长 length

该 API 输入只能是 LoDTensor,如果您需要处理的是 Tensor 类型,请使用 paddle.slice

::
输入变量:
  1. input (LoDTensor):

    input.data = [[a1, a2], [b1, b2], [c1, c2], [d1, d2], [e1, e2]], input.lod = [[3, 2]], input.dims = (5, 2),

  2. offset (Variable):

    offset.data = [[0], [1]]

  3. length (Variable):

    length.data = [[2], [1]]

  4. name (str|None)

输出变量为 LoDTensor:

out.data = [[a1, a2], [b1, b2], [e1, e2]], out.lod = [[2, 1]], out.dims = (3, 2).

.。注意::

inputoffsetlength 的第一维大小应相同。 offset 从 0 开始。

参数

  • input (Tensor) – 输入变量,类型为 LoDTensor,承载着完整的序列。数据类型为 float32,float64,int32 或 int64。

  • offset (Tensor) – 指定每个序列切片的起始索引,数据类型为 int32 或 int64。

  • length (Tensor) – 指定每个子序列的长度,数据类型为 int32 或 int64。

  • name (str,可选) – 具体用法请参见 Name,一般无需设置,默认值为 None。

返回

Tensor,序列切片运算结果。

代码示例

import paddle
paddle.enable_static()

import numpy as np
seqs = paddle.static.data(name='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)