.. _cn_api_paddle_tensor_split
split
-------------------------------

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

:alias_main: paddle.split
:alias: paddle.split,paddle.tensor.split,paddle.tensor.manipulation.split
:update_api: paddle.fluid.layers.split



该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]
