pypto.reshape#
产品支持情况#
产品 |
是否支持 |
|---|---|
Ascend 950PR/Ascend 950DT |
√ |
Atlas A3 训练系列产品/Atlas A3 推理系列产品 |
√ |
Atlas A2 训练系列产品/Atlas A2 推理系列产品 |
√ |
功能说明#
改变Tensor形状,改变valid_shape部分的形状(Shape)
注意事项#
静态 shape 支持
-1:当 tensor 所有轴都是静态维度时,shape 参数支持使用-1自动推导一个维度动态 shape 不支持
-1:当 tensor 有轴标注为pypto.DYNAMIC时,shape 参数不能使用-1,必须显式指定所有维度值, 从动态轴tensor.shape获取的维度是 SymbolicScalar 类型,可用于 reshape 的 shape 参数推荐使用 inplace 参数:当满足 inplace 的约束说明时,设置
inplace=True可以避免额外的数据搬移
函数原型#
reshape(input: Tensor,shape: List[int],*,valid_shape: Optional[List[Union[int, SymbolicScalar]]] = None, inplace: bool = False) -> Tensor
参数说明#
参数名 |
输入/输出 |
说明 |
|---|---|---|
input |
输入 |
源操作数。 |
shape |
输入 |
目标Shape。 |
valid_shape |
输入 |
输出Tensor的有效数据的Shape,且valid_shape Size不大于INT32_MAX。 |
inplace |
输入 |
是否为inplace;参数为True时,不会为输出申请新地址; |
返回值说明#
返回输出Tensor,Tensor的数据类型和input相同,形状(Shape)为输入参数指定的shape。
约束说明#
inplace为True时,需要保证输入输出分别是当前loop的输入输出;输出不可作为整个Function的输出
调用示例#
示例1:
x = pypto.tensor([2, 2], pypto.DT_FP32)
y = pypto.reshape(x, [4, 1], [2, 1])
z = pypto.add(y, 1.0)
结果示例如下:
输入数据x: [[1, 2],
[3, 4]]
输出数据y: [[1],
[2],
[3],
[4]]
输出数据z: [[2],
[3],
[3],
[4]]
示例2:
x = pypto.tensor([2, 2], pypto.DT_FP32)
for _ in pypto.loop(1, name="reshape_inplace", idx_name="tmp_loop"):
x_1 = x.reshape(x, [4], inplace=True)
for _ in pypto.loop(1, name="loop", idx_name="loop"):
y = pypto.add(x_1, 1.0)
结果示例如下:
输入数据x: [[1, 2],
[3, 4]]
输出数据y: [2, 3, 4, 5]