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

updates sequence_scatter_cn.rst (#1450)

updates sequence_scatter_cn.rst 
上级 b99e6e3a
.. raw:: html
<style> .red {color:red; font-weight:bold} </style>
.. role:: red
.. _cn_api_fluid_layers_sequence_scatter:
sequence_scatter
......@@ -5,9 +11,15 @@ sequence_scatter
.. py:function:: paddle.fluid.layers.sequence_scatter(input, index, updates, name=None)
序列散射层
:red:`注意:该OP的输入index,updates必须是LoDTensor。`
该OP根据index提供的位置将updates中的信息更新到输出中。
这个operator将更新张量X,它使用Ids的LoD信息来选择要更新的行,并使用Ids中的值作为列来更新X的每一行。
该OP先使用input初始化output,然后通过output[instance_index][index[pos]] += updates[pos]方式,将updates的信息更新到output中,其中instance_idx是pos对应的在batch中第k个样本。
output[i][j]的值取决于能否在index中第i+1个区间中找到对应的数据j,若能找到out[i][j] = input[i][j] + update[m][n],否则 out[i][j] = input[i][j]。
例如,在下面样例中,index的lod信息分为了3个区间。其中,out[0][0]能在index中第1个区间中找到对应数据0,所以,使用updates对应位置的值进行更新,out[0][0] = input[0][0]+updates[0][0]。out[2][1]不能在index中第3个区间找到对应数据1,所以,它等于输入对应位置的值,out[2][1] = input[2][1]。
**样例**:
......@@ -34,14 +46,13 @@ sequence_scatter
out.dims = X.dims = [3, 6]
参数:
- **input** (Variable) - input 秩(rank) >= 1
- **index** (Variable) - LoD Tensor, index 是 sequence scatter op 的输入索引,该函数的input将依据index进行更新。 秩(rank)=1。由于用于索引dtype应该是int32或int64。
- **updates** (Variable) - 一个 LoD Tensor , update 的值将被 sactter 到输入x。update 的 LoD信息必须与index一致。
- **name** (str|None) - 输出变量名。默认:None。
- **input** (Variable) - 维度为 :math:`[N, k_1 ... k_n]` 的Tensor, 数据类型支持float32,float64,int32,int64
- **index** (Variable) - 包含index信息的LoDTensor,lod level必须等于1,数据类型必须为int64。
- **updates** (Variable) - 包含updates信息的LoDTensor,lod level和index一致,数据类型与input的数据类型一致。数据类型支持float32,float64,int32,int64。
- **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
返回: 输出张量维度应该和输入张量相同
返回: 包含更新了updates信息之后的Tensor,其维度和input的维度完全一致,数据类型与input的数据类型一致。
返回类型:Variable
......@@ -54,8 +65,8 @@ sequence_scatter
import paddle.fluid.layers as layers
input = layers.data( name="x", shape=[3, 6], append_batch_size=False, dtype='float32' )
index = layers.data( name='index', shape=[1], dtype='int32')
updates = layers.data( name='updates', shape=[1], dtype='float32')
index = layers.data( name='index', shape=[12, 1], dtype='int64')
updates = layers.data( name='updates', shape=[12, 1], dtype='float32')
output = fluid.layers.sequence_scatter(input, index, updates)
......@@ -66,4 +77,3 @@ sequence_scatter
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册