roll_cn.rst 1.6 KB
Newer Older
1 2
.. _cn_api_tensor_manipulation_roll:

T
tianshuo78520a 已提交
3 4
roll
-------------------------------
5 6 7

.. py:function:: paddle.roll(input, shifts, dims=None):

S
swtkiwi 已提交
8 9 10 11 12
:alias_main: paddle.roll
:alias: paddle.roll,paddle.tensor.roll,paddle.tensor.manipulation.roll



13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
该OP沿着指定维度对输入 ``input`` 进行循环滚动,当元素移动到最后位置时,会从第一个位置重新插入。如果 ``dims`` 为 ``None`` ,则输入在被循环滚动之前,会先展平成 ``1-D Tensor`` ,滚动操作完成后恢复成原来的形状。

**参数**:
    - **input** (Variable)– 输入张量。
    - **shifts** (int|list|tuple) - 滚动位移。如果 ``shifts`` 是一个元组或者列表,则 ``dims`` 必须是相同大小的元组或者列表,输入张量将依次沿着每个维度滚动相应的数值。
    - **dim**    (int|list|tuple, optinal) – 滚动轴。

**返回**:
    - **Variable**,数据类型同输入。
     
**代码示例**:

.. code-block:: python

        import numpy as np
        import paddle
        import paddle.fluid as fluid

        data = np.array([[1.0, 2.0, 3.0],
                            [4.0, 5.0, 6.0],
                            [7.0, 8.0, 9.0]])
        with fluid.dygraph.guard():
            x = fluid.dygraph.to_variable(data)
            out_z1 = paddle.roll(x, shifts=1)
            print(out_z1.numpy())
            #[[9. 1. 2.]
            # [3. 4. 5.]
            # [6. 7. 8.]]
            out_z2 = paddle.roll(x, shifts=1, dims=0)
            print(out_z2.numpy())
            #[[7. 8. 9.]
            # [1. 2. 3.]
            # [4. 5. 6.]]