sequence_slice_cn.rst 2.1 KB
Newer Older
H
Hao Wang 已提交
1 2 3 4 5
.. _cn_api_fluid_layers_sequence_slice:

sequence_slice
-------------------------------

6
:api_attr: 声明式编程(静态图)专用API
7

H
Hao Wang 已提交
8 9 10 11
.. py:function:: paddle.fluid.layers.sequence_slice(input, offset, length, name=None)

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

G
Guanghua Yu 已提交
12
**该OP输入只能是LoDTensor, 如果您需要处理的是Tensor类型,请使用 :ref:`cn_api_fluid_layers_slice` 。**
H
Hao Wang 已提交
13 14 15 16
该层从给定序列中截取子序列。截取依据为所给的开始 ``offset`` (偏移量) 和子序列长 ``length`` 。

::
    输入变量:
G
Guanghua Yu 已提交
17 18 19 20
        (1) input (LoDTensor):
                input.data = [[a1, a2], [b1, b2], [c1, c2], [d1, d2], [e1, e2]],
                input.lod = [[3, 2]],
                input.dims = (5, 2),
H
Hao Wang 已提交
21

G
Guanghua Yu 已提交
22 23 24 25 26
        (2) offset (Variable):
                offset.data = [[0], [1]]
        (3) length (Variable):
                length.data = [[2], [1]]
        (4) name (str|None)
H
Hao Wang 已提交
27

G
Guanghua Yu 已提交
28
    输出变量为LoDTensor:
H
Hao Wang 已提交
29 30 31 32 33

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

G
Guanghua Yu 已提交
34
.. 注意::
H
Hao Wang 已提交
35 36 37 38
   ``input`` , ``offset`` , ``length`` 的第一维大小应相同。
   ``offset`` 从0开始。

参数:
G
Guanghua Yu 已提交
39 40 41 42
  - **input** (Variable) – 输入变量,类型为LoDTensor,承载着完整的序列
  - **offset** (Variable) – 指定每个序列切片的起始索引,数据类型为int32或int64。
  - **length** (Variable) – 指定每个子序列的长度,数据类型为int32或int64。
  - **name**  (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
H
Hao Wang 已提交
43

G
Guanghua Yu 已提交
44
返回:Variable(LoDTensor) 序列切片运算结果
H
Hao Wang 已提交
45

G
Guanghua Yu 已提交
46
返回类型:变量(Variable), 数据类型与 ``input`` 一致
H
Hao Wang 已提交
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

**代码示例**

..  code-block:: python

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