sequence_unpad_cn.rst 2.4 KB
Newer Older
1 2 3 4 5 6
.. raw:: html

    <style> .red {color:red; font-weight:bold} </style>

.. role:: red

H
Hao Wang 已提交
7 8 9 10 11 12 13
.. _cn_api_fluid_layers_sequence_unpad:

sequence_unpad
-------------------------------

.. py:function:: paddle.fluid.layers.sequence_unpad(x, length, name=None)

14
:red:`注意:该OP的输入为Tensor,输出为LoDTensor。`
H
Hao Wang 已提交
15

16 17 18
该OP根据length的信息,将input中padding(填充)元素移除,并且返回一个LoDTensor。

存在OP sequence_pad正好与之相反,能够进行填充数据,详情见: :ref:`cn_api_fluid_layers_sequence_pad`
H
Hao Wang 已提交
19 20 21 22 23 24 25 26 27 28

::

    示例:

    给定输入变量 ``x`` :
        x.data = [[ 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]],

29
    其中包含 3 个被填充到长度为5的序列,实际长度由输入变量 ``length`` 指明,其中,x的维度为[3,4],length维度为[3],length的第0维与x的第0维一致:
H
Hao Wang 已提交
30

31
        length.data = [2, 3, 4],
H
Hao Wang 已提交
32 33 34 35

    则去填充(unpad)后的输出变量为:

        out.data = [[1.0, 2.0, 6.0, 7.0, 8.0, 11.0, 12.0, 13.0, 14.0]]
36
        out.lod = [[0, 2, 5, 9]]
H
Hao Wang 已提交
37 38 39 40



参数:
41 42 43
  - **x** (Variable) – 包含填充元素的Tensor,其维度大小不能小于2,数据类型支持float32, float64,int32, int64。
  - **length** (Variable) – 存储每个样本实际长度信息的1D Tesnor,该Tensor的第0维必须与x参数的第0维一致。数据类型为int64。
  - **name**  (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
H
Hao Wang 已提交
44

45
返回:将输入的填充元素移除,并返回一个LoDTensor,其递归序列长度与length参数的信息一致,其数据类型和输入一致。
H
Hao Wang 已提交
46 47 48 49 50 51 52 53

返回类型:Variable

**代码示例**

..  code-block:: python

    import paddle.fluid as fluid
54 55 56
    import numpy

    # example 1:
H
Hao Wang 已提交
57 58 59 60
    x = fluid.layers.data(name='x', shape=[10, 5], dtype='float32')
    len = fluid.layers.data(name='length', shape=[1], dtype='int64')
    out = fluid.layers.sequence_unpad(x=x, length=len)

61 62 63 64 65
    # example 2:
    # 使用sequence_pad填充数据
    input = fluid.layers.data(name='input', shape=[10, 5], dtype='float32', lod_level=1)
    pad_value = fluid.layers.assign(input=numpy.array([0.0], dtype=numpy.float32))
    pad_data, len = fluid.layers.sequence_pad(x=input, pad_value=pad_value)
H
Hao Wang 已提交
66

67 68
    #使用sequence_unpad移除填充数据
    unpad_data = fluid.layers.sequence_unpad(x=pad_data, length=len)
H
Hao Wang 已提交
69 70 71 72 73 74 75 76 77 78