paddle.chunk(x, chunks, axis=0)
- 将给定Tensor按照指定维度均匀分割为多个子Tensor
- 参数
- x 输入Tensor
- chunks: 分割的数量
- axis: 分割的维度(默认0)
- 返回:包含Tensor的元祖
- 注意:若张量尺寸不能被
chunks整除,最后一个子张量尺寸会较小。
x = paddle.arange(12).reshape([3, 4])
chunks = paddle.chunk(x, 2, axis=1)
print(chunks[0].shape)
print(chunks[1].shape)
paddle.split(x, num_or_sections, axis=0)
- 功能:将Tensor指定维度分割成多个子Tensor
- 参数
x:输入张量
num_or_sections 整数:均等分割的数量(同chunk)或者列表:各个子张量在axis上的尺寸
- axis: 分割维度
- 返回:子张量列表
splits = paddle.split(x, 3, axis=0)
splits = paddle.split(x, [1, 3], axis=1)
paddle.concat(x, axis=0)
- 功能:沿着指定维度连接多个张量
- 参数:
- 返回:连接后的张亮
- 要求:除axis外,其他维度尺寸必须相同
a = paddle.ones([2, 3])
b = paddle.zeros([2, 3])
c = paddle.concat([a, b], axis=0)
d = paddle.concat([a, b], axis=1)
paddle.stack(x, axis=0)
- 功能:沿新维度堆叠多个张量
- 参数:
- 返回:堆叠后的张亮(维度+1)
a = paddle.ones([2, 3])
b = paddle.zeros([2, 3])
c = paddle.stack([a, b], axis=0)
d = paddle.stack([a, b], axis=2)
paddle.unstack(x, axis=0)
- 功能:stack的逆操作,沿指定维度拆解张量
- 参数:
- 返回:张量列表(每个张量维度+1)
x = paddle.ones([2, 3, 4])
y = paddle.unstack(x, axis=1)
对比总结
| 函数 | 核心功能 | 输入要求 | 输出维度变化 |
|---|
chunk | 均等分割张量 | 需指定分割数量 | 总维度不变,各块尺寸相近 |
split | 灵活分割张量 | 可指定数量或各块尺寸 | 总维度不变 |
concat | 沿现有维度连接张量 | 除axis外形状相同 | 仅axis维度增加 |
stack | 沿新维度堆叠张量 | 形状必须完全相同 | 总维度 + 1 |
unstack | 沿指定维度拆解张量 | - | 总维度 - 1 |