pypto.logical_and#

产品支持情况#

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明#

对两个输入的Tensor行逐元素逻辑与(AND)运算。运算规则:

  • 如果输入的Tensor为 bool 则 True and True -> True,其余情况皆为 False。

  • 如果输入的Tensor数值,会自动转换成 True/False,0 为 False,非 0 为 True。

函数原型#

logical_and(input: Tensor, other: Tensor) -> Tensor

参数说明#

参数名

输入/输出

说明

input

输入

源操作数。
支持的类型为:Tensor。
Tensor支持的数据类型为:DT_FP32,DT_FP16,DT_BF16,DT_INT8,DT_UINT8,DT_BOOL,DT_INT16,DT_INT32。
不支持空Tensor;Shape仅支持2-4维,支持输入Tensor的数据类型不同,支持单轴广播。Shape Size不大于2147483647(即INT32_MAX)。

other

输入

源操作数。
支持的类型为:Tensor。
Tensor支持的数据类型为:DT_FP32,DT_FP16,DT_BF16,DT_INT8,DT_UINT8,DT_BOOL,DT_INT16,DT_INT32。
不支持空Tensor;Shape仅支持2-4维,支持输入Tensor的数据类型不同,支持单轴广播。Shape Size不大于2147483647(即INT32_MAX)。

返回值说明#

返回输出Tensor,Tensor的数据类型为DT_BOOL,形状为广播后的形状。

约束说明#

  1. TileShape与input、other维度保持一致;

  2. 由于存在临时内存使用,TileShape大小有额外约束,假设TileShape为[a,b,c,d],那么a*b*c*d*sizeof(self) + a*b*c*d*sizeof(other) + a*b*c*d*sizeof(BOOL) + 1.1875KB<UB。

调用示例#

TileShape设置示例#

说明:调用该operation接口前,应通过set_vec_tile_shapes设置TileShape。

TileShape维度应和输出一致。

示例1:非广播场景,输入intput shape为[m, n],other为[m, n],输出为[m, n],TileShape设置为[m1, n1],则m1, n1分别用于切分m, n轴。

pypto.set_vec_tile_shapes(4, 16)

示例2:广播场景,输入intput shape为[m, n],other为[m, 1],输出为[m, n],TileShape设置为[m1, n1],则m1, n1分别用于切分m, n轴。

pypto.set_vec_tile_shapes(4, 16)

接口调用示例#

x = pypto.tensor([2], pypto.DT_BOOL)
y1 = pypto.tensor([2], pypto.DT_BOOL)
z1 = pypto.logical_and(x, y1)
# 支持广播
y2 = pypto.tensor([2,2], pypto.DT_BOOL)
z2 = pypto.logical_and(x, y2)

结果示例如下:

输入数据x:  [True, False]
输入数据y1: [True, True]
输入数据y2: [[True, False], [False, True]]
输出数据z1: [True, False]
输出数据z2: [[True, False], [False, False]]