pypto.clip#
产品支持情况#
产品 |
是否支持 |
|---|---|
Ascend 950PR/Ascend 950DT |
√ |
Atlas A3 训练系列产品/Atlas A3 推理系列产品 |
√ |
Atlas A2 训练系列产品/Atlas A2 推理系列产品 |
√ |
功能说明#
对输入 Tensor进行数据裁剪,裁剪到指定的最小值到最大值范围内,小于最小值的位置替换为最小值,大于最大值的位置替换为最大值,其余值维持不变。该接口非原地操作,不改变输入Tensor,而是返回一个新的Tensor作为输出。
函数原型#
clip(
input: Tensor,
min: Optional[Union[Tensor, Element, float, int]] = None,
max: Optional[Union[Tensor, Element, float, int]] = None
)-> Tensor
参数说明#
参数名 |
输入/输出 |
说明 |
|---|---|---|
input |
输入 |
源操作数。 |
min |
输入 |
源操作数。 |
max |
输入 |
源操作数。 |
返回值说明#
当输入为标量时,输出为:
当输入为Tensor时,输出为:
输出Tensor的数据类型和输入 input 相同。
当 min / max 其中一者为 NAN 时,输出结果为 NAN。
当 min > max 时,输出结果对应位置均为 max 的值。
约束说明#
min / max 的类型必须一致,同时为 Element 或同时为 Tensor。
min / max 为Tensor类型时,其Shape大小必须满足可以广播到输入的Shape。
min 和 max 支持同时缺省,返回原值。
调用示例#
TileShape设置示例#
调用该operation接口前,应通过set_vec_tile_shapes设置TileShape。
TileShape维度应和输出一致。
如非广播场景,输入intput shape为[m, n],max和min为[m, n],输出为[m, n],TileShape设置为[m1, n1], 则m1, n1分别用于切分m, n轴。
广播场景,输入intput shape为[m, n],max和min为[m, 1],输出为[m, n],TileShape设置为[m1, n1], 则m1, n1分别用于切分m, n轴。
pypto.set_vec_tile_shapes(4, 16)
接口调用示例#
x = pypto.tensor([2,3], pypto.DT_INT32)
min = pypto.tensor([2,3], pypto.DT_INT32)
max = pypto.tensor([2,3], pypto.DT_INT32)
out = pypto.clip(x,min,max)
结果示例如下:
输入数据 self: [[-2 1 2], [3 4 5]]
输入数据 min: [[-1 0 2], [0 3 5]]
输入数据 max: [[1 2 1], [4 4 4]]
输出数据 out: [[-1 1 1], [3 4 4]]
示例 2:
x = pypto.tensor([2,3], pypto.DT_INT32)
min = 1
max = 3
out = pypto.clip(x,min,max)
结果示例如下:
输入数据 x: [[0 2 4], [3 4 6]]
输出数据 out: [[1 2 3], [3 3 3]]