split_cn.rst 2.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
.. _cn_api_paddle_tensor_split
split
-------------------------------

.. py:function:: paddle.tensor.split(input, num_or_sections, dim=-1, name=None)

该OP将输入Tensor分割成多个子Tensor。

**参数**:
       - **input** (Variable) - 输入变量,数据类型为float32,float64,int32,int64的多维Tensor或者LoDTensor。
       - **num_or_sections** (int|list|tuple) - 如果 num_or_sections 是一个整数,则表示Tensor平均划分为相同大小子Tensor的数量。如果 num_or_sections 是一个list或tuple,那么它的长度代表子Tensor的数量,它的元素可以是整数或者形状为[1]的Tensor,依次代表子Tensor需要分割成的维度的大小。list或tuple的长度不能超过输入Tensor待分割的维度的大小。在list或tuple中,至多有一个元素值为-1,表示该值是由input的维度和其他num_or_sections中元素推断出来的。例如对一个维度为[4,6,6]Tensor的第三维进行分割时,指定num_or_sections=[2,-1,1],输出的三个Tensor维度分别为:[4,6,2],[4,6,3],[4,6,1]。
       - **dim** (int|Variable,可选) - 整数或者形状为[1]的Tensor,数据类型为int32或int64。表示需要分割的维度。如果dim < 0,则划分的维度为rank(input) + dim。默认值为-1。
       - **name** (str,可选) - 一般无需设置,默认值为None。

**返回**:分割后的Tensor列表。

**返回类型**:列表(Variable(Tensor|LoDTensor)),数据类型为int32,int64,float32,float64。

**代码示例**:

.. code-block:: python

    import paddle
    import paddle.fluid as fluid
    import numpy as np
    with fluid.dygraph.guard():
        input_1 = np.random.random([4, 6, 6]).astype("int32")
        # input is a variable which shape is [4, 6, 6]
        input = fluid.dygraph.to_variable(input_1)

        x0, x1, x2 = paddle.split(input, num_or_sections= 3, dim=1)
        # x0.shape [4, 2, 6]
        # x1.shape [4, 2, 6]
        # x2.shape [4, 2, 6]