.. _cn_api_fluid_layers_split:

split
-------------------------------

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

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

参数：
    - **input** (Variable) - 输入变量，为数据类型为float32，float64，int32，int64的多维Tensor或者LoDTensor。
    - **num_or_sections** (int|list) - 整数或元素为整数的列表。如果\ ``num_or_sections``\ 是一个整数，则表示Tensor平均划分为的相同大小子Tensor的数量。如果\ ``num_or_sections``\ 是一个整数列表，则列表的长度代表子Tensor的数量，列表中的整数依次代表子Tensor的需要分割成的维度的大小。列表长度不能超过输入Tensor待分割的维度的大小。
    - **dim** (int) - 需要分割的维度。如果dim < 0,划分的维度为rank(input) + dim，数据类型为int32，int64。
    - **name** (str，可选) - 具体用法请参见 :ref:`api_guide_Name` ，一般无需设置，默认值为None。

返回：分割后的Tensor列表。

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

**代码示例**：

.. code-block:: python

    import paddle.fluid as fluid

    # 输入是维度为[-1, 3, 9, 5]的Tensor：
    input = fluid.layers.data(
         name="input", shape=[3, 9, 5], dtype="float32")

    # 传入num_or_sections为一个整数
    x0, x1, x2 = fluid.layers.split(input, num_or_sections=3, dim=2)
    x0.shape  # [-1, 3, 3, 5]
    x1.shape  # [-1, 3, 3, 5]
    x2.shape  # [-1, 3, 3, 5]

    # 传入num_or_sections为一个整数列表
    x0, x1, x2 = fluid.layers.split(input, num_or_sections=[2, 3, 4], dim=2)
    x0.shape  # [-1, 3, 2, 5]
    x1.shape  # [-1, 3, 3, 5]
    x2.shape  # [-1, 3, 4, 5]









