split

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,可选) - 具体用法请参见 Name ,一般无需设置,默认值为None。

返回:分割后的Tensor列表。

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

代码示例

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]