未验证 提交 b99e6e3a 编写于 作者: S silingtong123 提交者: GitHub

updates sequence_unpad_cn.rst (#1455)

updates sequence_unpad_cn.rst
上级 f2364d84
.. raw:: html
<style> .red {color:red; font-weight:bold} </style>
.. role:: red
.. _cn_api_fluid_layers_sequence_unpad: .. _cn_api_fluid_layers_sequence_unpad:
sequence_unpad sequence_unpad
...@@ -5,9 +11,11 @@ sequence_unpad ...@@ -5,9 +11,11 @@ sequence_unpad
.. py:function:: paddle.fluid.layers.sequence_unpad(x, length, name=None) .. py:function:: paddle.fluid.layers.sequence_unpad(x, length, name=None)
**实现Sequence Unpad(去除序列填充值)运算** :red:`注意:该OP的输入为Tensor,输出为LoDTensor。`
该层从给定序列中删除padding(填充值),并且将该序列转变为未填充时的原序列作为该层的输出,并且实际长度可以在输出的LoD信息中取得。 该OP根据length的信息,将input中padding(填充)元素移除,并且返回一个LoDTensor。
存在OP sequence_pad正好与之相反,能够进行填充数据,详情见: :ref:`cn_api_fluid_layers_sequence_pad`
:: ::
...@@ -18,23 +26,23 @@ sequence_unpad ...@@ -18,23 +26,23 @@ sequence_unpad
[ 6.0, 7.0, 8.0, 9.0, 10.0], [ 6.0, 7.0, 8.0, 9.0, 10.0],
[11.0, 12.0, 13.0, 14.0, 15.0]], [11.0, 12.0, 13.0, 14.0, 15.0]],
其中包含 3 个被填充到长度为5的序列,实际长度由输入变量 ``length`` 指明: 其中包含 3 个被填充到长度为5的序列,实际长度由输入变量 ``length`` 指明,其中,x的维度为[3,4],length维度为[3],length的第0维与x的第0维一致
length.data = [[2], [3], [4]], length.data = [2, 3, 4],
则去填充(unpad)后的输出变量为: 则去填充(unpad)后的输出变量为:
out.data = [[1.0, 2.0, 6.0, 7.0, 8.0, 11.0, 12.0, 13.0, 14.0]] out.data = [[1.0, 2.0, 6.0, 7.0, 8.0, 11.0, 12.0, 13.0, 14.0]]
out.lod = [[2, 3, 4]] out.lod = [[0, 2, 5, 9]]
参数: 参数:
- **x** (Variable) – 输入变量,承载着多个填充后等长的序列 - **x** (Variable) – 包含填充元素的Tensor,其维度大小不能小于2,数据类型支持float32, float64,int32, int64。
- **length** (Variable) – 变量,指明去填充后各个序列所具有的实际长度 - **length** (Variable) – 存储每个样本实际长度信息的1D Tesnor,该Tensor的第0维必须与x参数的第0维一致。数据类型为int64。
- **name** (str|None) – 可选项,该层名称。 若为 None, 将自动命名该层 - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
返回:变量,承载着去填充处理后的序列 返回:将输入的填充元素移除,并返回一个LoDTensor,其递归序列长度与length参数的信息一致,其数据类型和输入一致。
返回类型:Variable 返回类型:Variable
...@@ -43,11 +51,21 @@ sequence_unpad ...@@ -43,11 +51,21 @@ sequence_unpad
.. code-block:: python .. code-block:: python
import paddle.fluid as fluid import paddle.fluid as fluid
import numpy
# example 1:
x = fluid.layers.data(name='x', shape=[10, 5], dtype='float32') x = fluid.layers.data(name='x', shape=[10, 5], dtype='float32')
len = fluid.layers.data(name='length', shape=[1], dtype='int64') len = fluid.layers.data(name='length', shape=[1], dtype='int64')
out = fluid.layers.sequence_unpad(x=x, length=len) out = fluid.layers.sequence_unpad(x=x, length=len)
# 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)
#使用sequence_unpad移除填充数据
unpad_data = fluid.layers.sequence_unpad(x=pad_data, length=len)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册