Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
ba0878c8
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
ba0878c8
编写于
9月 25, 2019
作者:
A
Aurelius84
提交者:
GitHub
9月 25, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
improve seq_concat seq_conv e.t api cn doc (#1186)
* improve seq_concat seq_conv e.t api cn doc * refine doc * add datatype
上级
f57b6359
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
146 addition
and
59 deletion
+146
-59
doc/fluid/api_cn/layers_cn/get_tensor_from_selected_rows_cn.rst
...uid/api_cn/layers_cn/get_tensor_from_selected_rows_cn.rst
+24
-5
doc/fluid/api_cn/layers_cn/sequence_concat_cn.rst
doc/fluid/api_cn/layers_cn/sequence_concat_cn.rst
+27
-5
doc/fluid/api_cn/layers_cn/sequence_conv_cn.rst
doc/fluid/api_cn/layers_cn/sequence_conv_cn.rst
+57
-14
doc/fluid/api_cn/layers_cn/sequence_reshape_cn.rst
doc/fluid/api_cn/layers_cn/sequence_reshape_cn.rst
+16
-15
doc/fluid/api_cn/layers_cn/sequence_reverse_cn.rst
doc/fluid/api_cn/layers_cn/sequence_reverse_cn.rst
+22
-20
未找到文件。
doc/fluid/api_cn/layers_cn/get_tensor_from_selected_rows_cn.rst
浏览文件 @
ba0878c8
...
...
@@ -5,15 +5,34 @@ get_tensor_from_selected_rows
.. py:function:: paddle.fluid.layers.get_tensor_from_selected_rows(x, name=None)
:code:`Get Tensor From Selected Rows` 用于从选中行(Selected Rows)中获取张量
该OP从SelectedRows类型的输入中获取向量数据,以LoDTensor的形式输出。
::
例如:
输入为SelectedRows类型:
x.rows = [0, 5, 5, 4, 19]
x.height = 20
x.value = [[1, 1] [2, 2] [2, 2] [3, 3] [6, 6]]
输出为LoDTensor:
out.shape = [5, 2]
out.data = [[1, 1],
[2, 2],
[2, 2],
[3, 3],
[6, 6]]
参数:
- **x** (
Variable) - 输入,类型是SelectedRows
- **name** (
basestring|None) - 输出的名称
- **x** (
SelectedRows) - SelectedRows类型的输入,数据类型为float32,float64,int32或int64。
- **name** (
str) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。
返回:
输出类型为LoDTensor
返回:
从SelectedRows中转化而来的LoDTensor,数据类型和输入一致。
返回类型:
out(Variable)
返回类型:
Variable
**代码示例:**
...
...
doc/fluid/api_cn/layers_cn/sequence_concat_cn.rst
浏览文件 @
ba0878c8
...
...
@@ -5,15 +5,37 @@ sequence_concat
.. py:function:: paddle.fluid.layers.sequence_concat(input, name=None)
sequence_concat操作通过序列信息连接LoD张量(Tensor)。例如:X1的LoD = [0,3,7],X2的LoD = [0,7,9],结果的LoD为[0,(3 + 7),(7 + 9)],即[0,10,16]。
**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用concat函数(fluid.layers.** :ref:`cn_api_fluid_layers_concat` **)。**
**该OP仅支持LoDTensor** ,通过LoDTensor的LoD信息将输入的多个LoDTensor进行连接(concat),输出连接后的LoDTensor。
::
input是由多个LoDTensor组成的list:
input = [x1, x2]
其中:
x1.lod = [[0, 3, 5]]
x1.data = [[1], [2], [3], [4], [5]]
x1.shape = [5, 1]
x2.lod = [[0, 2, 4]]
x2.data = [[6], [7], [8], [9]]
x2.shape = [4, 1]
且必须满足:len(x1.lod[0]) == len(x2.lod[0])
输出为LoDTensor:
out.lod = [[0, 3+2, 5+4]]
out.data = [[1], [2], [3], [6], [7], [4], [5], [8], [9]]
out.shape = [9, 1]
参数:
- **input** (list
) – 要连接变量的列表
- **name** (str
|None) – 此层的名称(可选)。如果没有设置,该层将被自动命名
。
- **input** (list
of Variable) – 多个LoDTensor组成的list,要求每个输入LoDTensor的LoD长度必须一致。数据类型为float32,float64或int64。
- **name** (str
) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None
。
返回:
连接好的输出变量
。
返回:
输出连接后的LoDTensor,数据类型和输入一致
。
返回类型:
变量(Variable)
返回类型:
Variable
**代码示例**
...
...
doc/fluid/api_cn/layers_cn/sequence_conv_cn.rst
浏览文件 @
ba0878c8
...
...
@@ -3,23 +3,66 @@
sequence_conv
-------------------------------
.. py:function:: paddle.fluid.layers.sequence_conv(input, num_filters, filter_size=3, filter_stride=1, padding=None, bias_attr=None, param_attr=None, act=None, name=None)
.. py:function:: paddle.fluid.layers.sequence_conv(input, num_filters, filter_size=3, filter_stride=1, padding=True, padding_start=None, bias_attr=None, param_attr=None, act=None, name=None)
**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用conv2d函数(fluid.layers.** :ref:`cn_api_fluid_layers_conv2d` **)。**
该OP在给定的卷积参数下(如卷积核数目、卷积核大小等),对输入的变长序列(sequence)LoDTensor进行卷积操作。默认情况下,该OP会自适应地在每个输入序列的两端等长地填充全0数据,以确保卷积后的序列输出长度和输入长度一致。支持通过配置 ``padding_start`` 参数来指定序列填充的行为。
**提示:** 参数 ``padding`` 为无用参数,将在未来的版本中被移除。
::
这里详细介绍数据填充操作的细节:
对于一个min-batch为2的变长序列输入,分别包含3个、1个时间步(time_step),
假设输入input是一个[4, N]的float类型LoDTensor,为了方便,这里假设N = 2
input.data = [[1, 1],
[2, 2],
[3, 3],
[4, 4]]
input.lod = [[0, 3, 4]]
即输入input总共有4个词,每个词被表示为一个2维向量。
Case1:
若 padding_start = -1,filter_size = 3,
则两端填充数据的长度分别为:
up_pad_len = max(0, -padding_start) = 1
down_pad_len = max(0, filter_size + padding_start - 1) = 1
则以此填充后的输入数据为:
data_aftet_padding = [[0, 0, 1, 1, 2, 2],
[1, 1, 2, 2, 3, 3],
[2, 2, 3, 3, 0, 0],
[0, 0, 4, 4, 0, 0]]
它将和卷积核矩阵相乘得到最终的输出,假设num_filters = 3:
output.data = [[ 0.3234, -0.2334, 0.7433],
[ 0.5646, 0.9464, -0.1223],
[-0.1343, 0.5653, 0.4555],
[ 0.9954, -0.1234, -0.1234]]
output.shape = [4, 3] # 3 = num_filters
output.lod = [[0, 3, 4]] # 保持不变
该函数的输入参数中给出了滤波器和步长,通过利用输入以及滤波器和步长的常规配置来为sequence_conv创建操作符。
参数:
- **input** (Variable) - (LoD张量)输入X是LoD张量,支持可变的时间量的长度输入序列。该LoDTensor的标记张量是一个维度为(T,N)的矩阵,其中T是mini-batch的总时间步数,N是input_hidden_size
- **num_filters** (int) - 滤波器的数量
- **filter_size** (int) - 滤波器大小(H和W)
- **filter_stride** (int) - 滤波器的步长
- **padding** (bool) - 若为真,添加填充
- **bias_attr** (ParamAttr|bool|None) - sequence_conv偏离率参数属性。若设为False,输出单元则不加入偏离率。若设为None或ParamAttr的一个属性,sequence_conv将创建一个ParamAttr作为bias_attr。如果未设置bias_attr的初始化函数,则将bias初始化为0.默认:None
- **param_attr** (ParamAttr|None) - 可学习参数/sequence_conv的权重参数属性。若设置为None或ParamAttr的一个属性,sequence_conv将创建ParamAttr作为param_attr。
若未设置param_attr的初始化函数,则用Xavier初始化参数。默认:None
返回:sequence_conv的输出
返回类型:变量(Variable)
- **input** (Variable) - 维度为 :math:`(M, K)` 的二维LoDTensor,仅支持lod_level为1。其中M是mini-batch的总时间步数,K是输入的 ``hidden_size`` 特征维度。数据类型为float32或float64。
- **num_filters** (int) - 滤波器的数量。
- **filter_size** (int) - 滤波器的高度(H);不支持指定滤波器宽度(W),宽度固定取值为输入的 ``hidden_size`` 。默认值为3。
- **filter_stride** (int) - 滤波器每次移动的步长。目前只支持取值为1,默认为1。
- **padding** (bool) - **此参数不起任何作用,将在未来的版本中被移除。** 无论 ``padding`` 取值为False或者True,默认地,该函数会自适应地在每个输入序列的两端等长地填充全0数据,以确保卷积后的输出序列长度和输入长度一致。默认填充是考虑到输入的序列长度可能会小于卷积核大小,这会导致无正确计算卷积输出。填充为0的数据在训练过程中不会被更新。默认为True。
- **padding_start** (int) - 表示对输入序列填充时的起始位置,可以为负值。负值表示在每个序列的首端填充 ``|padding_start|`` 个时间步(time_step)的全0数据;正值表示对每个序列跳过前 ``padding_start`` 个时间步的数据。同时在末端填充 :math:`filter\_size + padding\_start - 1` 个时间步的全0数据,以保证卷积输出序列长度和输入长度一致。如果 ``padding_start`` 为None,则在每个序列的两端填充 :math:`\frac{filter\_size}{2}` 个时间步的全0数据;如果 ``padding_start`` 设置为0,则只在序列的末端填充 :math:`filter\_size - 1` 个时间步的全0数据。默认为None。
- **bias_attr** (ParamAttr) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
- **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
- **act** (str) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。
- **name** (str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。
返回:和输入序列等长的LoDTensor,数据类型和输入一致,为float32或float64。
返回类型:Variable
**代码示例**
...
...
doc/fluid/api_cn/layers_cn/sequence_reshape_cn.rst
浏览文件 @
ba0878c8
...
...
@@ -5,17 +5,18 @@ sequence_reshape
.. py:function:: paddle.fluid.layers.sequence_reshape(input, new_dim)
Sequence Reshape Layer
该层重排输入序列。用户设置新维度。每一个序列的的长度通过原始长度、原始维度和新的维度计算得出。以下实例帮助解释该层的功能
**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用reshape函数(fluid.layers.** :ref:`cn_api_fluid_layers_reshape` **)。**
.. code-block:: python
**该OP仅支持LoDTensor** ,在指定 ``new_dim`` 参数下,通过序列原始长度、和原始shape计算出新的shape,以输出包含新维度(new_dim)下的LoDTensor。目前仅支持1-level LoDTensor,请确保(原长度*原维数)可以除以新的维数,且每个序列没有余数。
::
x
是一个LoDTensor:
x
.lod = [[0, 2, 6]]
x
.data = [[1, 2], [3, 4],
[5, 6], [7, 8],
[9, 10], [11, 12]]
x.dims
= [6, 2]
input
是一个LoDTensor:
input
.lod = [[0, 2, 6]]
input
.data = [[1, 2], [3, 4],
[5, 6], [7, 8],
[9, 10], [11, 12]]
input.shape
= [6, 2]
设置 new_dim = 4
输出为LoDTensor:
out.lod = [[0, 1, 3]]
...
...
@@ -23,17 +24,17 @@ Sequence Reshape Layer
out.data = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]
out.dims = [3, 4]
out.shape = [3, 4]
目前仅提供1-level LoDTensor,请确保(原长度*原维数)可以除以新的维数,每个序列没有余数。
参数:
- **input** (Variable)
-一个2-D LoDTensor,模型为[N,M],维度为M
- **new_dim** (int)-
新维度,输入LoDTensor重新塑造后的新维度
- **input** (Variable)
- 维度为 :math:`[M, K]` 的二维LoDTensor,且仅支持lod_level为1。数据类型为int32,int64,float32或float64。
- **new_dim** (int)-
指定reshape后的新维度,即对输入LoDTensor重新reshape后的新维度。
返回:根据新维度重新
塑造的LoDTensor
返回:根据新维度重新
reshape后的LoDTensor,数据类型和输入一致。
返回类型:
变量(Variable)
返回类型:
Variable
**代码示例**:
...
...
doc/fluid/api_cn/layers_cn/sequence_reverse_cn.rst
浏览文件 @
ba0878c8
...
...
@@ -5,34 +5,36 @@ sequence_reverse
.. py:function:: paddle.fluid.layers.sequence_reverse(x, name=None)
**注意:该OP的输入只能是LoDTensor,如果您需要处理的输入是Tensor类型,请使用reverse函数(fluid.layers.** :ref:`cn_api_fluid_layers_reverse` **)。**
在第0维上将输入 ``x`` 的各序列倒序
。
**该OP仅支持LoDTensor** ,对于输入的LoDTensor,在每个序列(sequence)上进行反转。目前仅支持对LoD层次(LoD level)为1的LoDTensor进行反转。该OP在构建反向 :ref:`cn_api_fluid_layers_DynamicRNN` 网络时十分有用
。
::
假设 ``x`` 是一个形为 (5,4) 的LoDTensor, lod信息为 [[0, 2, 5]],其中,
输入x是一个LoDTensor:
x.lod = [[0, 2, 5]]
x.data = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13,14, 15, 16],
[17,18, 19, 20]]
x.shape = [5, 4]
输出out与x具有同样的shape和LoD信息:
out.lod = [[0, 2, 5]]
out.data = [[5, 6, 7, 8],
[1, 2, 3, 4],
[17,18, 19, 20],
[13,14, 15, 16],
[9, 10, 11, 12]]
out.shape = [5, 4]
X.data() = [ [1, 2, 3, 4], [5, 6, 7, 8], # 索引为0,长度为2的序列
[9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20] # 索引为1长度为3的序列
输出 ``Y`` 与 ``x`` 具有同样的维数和LoD信息。 于是有:
::
Y.data() = [ [5, 6, 7, 8], [1, 2, 3, 4], # 索引为0,长度为2的逆序列
[17, 18, 19, 20], [13, 14, 15, 16], [9, 10, 11, 12] # 索引为1,长度为3的逆序列
该运算在建立反dynamic RNN 网络中十分有用。
目前仅支持LoD层次(LoD level)为1的张量倒序。
参数:
- **x** (Variable) – 输入
张量
- **name** (
basestring|None) – 输出变量的命名
- **x** (Variable) – 输入
是LoD level为1的LoDTensor。目前仅支持对LoD层次(LoD level)为1的LoDTensor进行反转。数据类型为float32,float64,int8,int32或int64。
- **name** (
str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。
返回:输出
LoD张量
返回:输出
在每个序列上反转后的LoDTensor,数据类型和输入类型一致。
返回类型:Variable
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录