stack_cn.rst 2.5 KB
Newer Older
1
.. _cn_api_paddle_tensor_arange
T
tianshuo78520a 已提交
2 3
stack
-------------------------------
4

L
Leo Chen 已提交
5
.. py:function:: paddle.tensor.stack(x, axis=0, name=None)
6

S
swtkiwi 已提交
7 8


L
Leo Chen 已提交
9 10
该OP沿 axis 轴对输入 x 进行堆叠操作。要求所有输入Tensor有相同的Shape和数据类型。
例如,输入 x 为 N 个 Shape 为 [A, B]的 Tensor, 如果 ``axis==0`` , 则输出 Tensor 的 Shape 为 [N, A, B]; 如果 ``axis==1`` , 则输出 Tensor 的 Shape 为 [A, N, B]; 以此类推。
S
swtkiwi 已提交
11

L
Leo Chen 已提交
12 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 48 49 50 51 52
.. code-block:: text

    Case 1:

        Input:
        x[0].shape = [1, 2]
        x[0].data = [ [1.0 , 2.0 ] ]
        x[1].shape = [1, 2]
        x[1].data = [ [3.0 , 4.0 ] ]
        x[2].shape = [1, 2]
        x[2].data = [ [5.0 , 6.0 ] ]

        Attrs:
        axis = 0

        Output:
        Out.dims = [3, 1, 2]
        Out.data =[ [ [1.0, 2.0] ],
                    [ [3.0, 4.0] ],
                    [ [5.0, 6.0] ] ]


    Case 2:

        Input:
        x[0].shape = [1, 2]
        x[0].data = [ [1.0 , 2.0 ] ]
        x[1].shape = [1, 2]
        x[1].data = [ [3.0 , 4.0 ] ]
        x[2].shape = [1, 2]
        x[2].data = [ [5.0 , 6.0 ] ]


        Attrs:
        axis = 1 or axis = -2  # If axis = -2, axis = axis+ndim(x[0])+1 = -2+2+1 = 1.

        Output:
        Out.shape = [1, 3, 2]
        Out.data =[ [ [1.0, 2.0]
                        [3.0, 4.0]
                        [5.0, 6.0] ] ]
53 54

**参数**:
L
Leo Chen 已提交
55 56 57
        - **x** (Tensor|list[Tensor]) – 输入 x 可以是单个Tensor,或是多个Tensor组成的列表。如果 x 是一个列表,那么这些Tensor的维度必须相同。支持的数据类型: float32,float64,int32,int64。

        - **axis** (int, 可选) – 指定对输入Tensor进行堆叠运算的轴,有效 axis 的范围是: [−(R+1),R+1)],R是输入中第一个Tensor的维数。如果 axis < 0,则 axis=axis+R+1 。默认值为0。
58

L
Leo Chen 已提交
59
        - **name** (str, 可选) - 操作的名称(可选,默认值为None)。更多信息请参见 :ref:`api_guide_Name`。
60

L
Leo Chen 已提交
61
**返回**:堆叠运算后的Tensor,数据类型与输入Tensor相同。
62 63 64 65 66 67 68 69 70

**返回类型**:Variable

**代码示例**:

.. code-block:: python
   
    import paddle
    import numpy as np
L
Leo Chen 已提交
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

    data1 = np.array([[1.0, 2.0]])
    data2 = np.array([[3.0, 4.0]])
    data3 = np.array([[5.0, 6.0]])

    paddle.disable_static()
    x1 = paddle.to_variable(data1)
    x2 = paddle.to_variable(data2)
    x3 = paddle.to_variable(data3)

    out = paddle.stack([x1, x2, x3], axis=0)
    print(out.shape)  # [3, 1, 2]
    print(out.numpy())
    # [[[1., 2.]],
    #  [[3., 4.]],
    #  [[5., 6.]]]