gather_cn.rst 1.5 KB
Newer Older
H
Hao Wang 已提交
1 2 3 4 5 6 7
.. _cn_api_fluid_layers_gather:

gather
-------------------------------

.. py:function:: paddle.fluid.layers.gather(input, index, overwrite=True)

S
swtkiwi 已提交
8 9 10



11
根据索引 ``index`` 获取输入 ``input`` 的最外层维度的条目,并将它们拼接在一起。
H
Hao Wang 已提交
12 13 14

.. math::

Y
Yibing Liu 已提交
15 16 17
        Out=X[Index]

.. code-block:: text
H
Hao Wang 已提交
18 19 20 21 22 23 24 25 26 27 28 29 30 31

        X = [[1, 2],
             [3, 4],
             [5, 6]]

        Index = [1, 2]

        Then:

        Out = [[3, 4],
               [5, 6]]


参数:
32 33
        - **input** (Tensor) - 输入, 秩 ``rank >= 1`` , 支持的数据类型包括 int32、int64、float32、float64 和 uint8 (CPU)、float16(GPU) 。
        - **index** (Tensor) - 索引,秩 ``rank = 1``, 数据类型为 int32 或 int64。
Y
Yibing Liu 已提交
34
        - **overwrite** (bool) - 具有相同索引时在反向更新梯度的模式。如果为 ``True`` ,则使用覆盖模式更新相同索引的梯度;如果为 ``False`` ,则使用累积模式更新相同索引的梯度。默认值为 ``True`` 。
H
Hao Wang 已提交
35 36 37

返回:和输入的秩相同的输出张量。

38 39 40
抛出异常:
    - ``TypeError``: -  ``x`` 必须是Tensor 并且 ``x`` 的数据类型必须是uint8、float16、float32、float64、int32或者int64。
    - ``TypeError``: - ``index`` 必须是Tensor并且数据类型必须是int32或者int64。
H
Hao Wang 已提交
41 42 43 44 45 46 47

**代码示例**

..  code-block:: python
  
  import paddle.fluid as fluid
  x = fluid.layers.data(name='x', shape=[-1, 5], dtype='float32')
F
ForFishes 已提交
48
  index = fluid.layers.data(name='index', shape=[1], dtype='int32')
H
Hao Wang 已提交
49 50 51 52 53 54 55 56 57 58
  output = fluid.layers.gather(x, index)