mindspore.ops.Mod

class mindspore.ops.Mod[源代码]

将第一个输入Tensor逐元素除以第二个输入Tensor,并取余。

xy 的输入遵循隐式类型转换规则,使数据类型一致。输入必须是两个Tensor或一个Tensor和一个Scalar。当输入是两个Tensor时,两个数据类型都不能是bool,它们的shape可以广播。当输入是一个Tensor和一个Scalar时,Scalar只能是一个常量。

\[out_{i} = x_{i} \text{ % } y_{i}\]

Warning

  • 输入数据不支持0。

  • 当输出包含的元素个数超过2048时,该算子不能保证双千分之一的精度要求。

  • 由于架构的差异,在NPU和CPU上生成的结果可能不一致。

  • 如果shape表示为 \((D1、D2...、Dn)\) ,则D1*D2… *DN<=1000000,n<=8。

输入:
  • x (Union[Tensor, numbers.Number, bool]) - 第一个输入是数值型、bool,或数据类型为数值型的Tensor。

  • y (Union[Tensor, numbers.Number, bool]) - 当第一个输入是Tensor时,第二个输入可以是数值型、bool,或数据类型为数值型的Tensor。当第一个输入是数值型或bool时,第二个输入必须是数据类型为数值型的Tensor。

输出:

Tensor,shape与广播后的shape相同,数据类型为两个输入中精度较高或数据类型相对最高的类型。

异常:
  • TypeError - 如果 xy 都不是以下之一:Tensor、数值型、bool。

  • TypeError - 如果 xy 都不是Tensor。

  • ValueError - 如果 xy 的shape不能相互广播。

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.array([-4.0, 5.0, 6.0]), mindspore.float32)
>>> y = Tensor(np.array([3.0, 2.0, 3.0]), mindspore.float32)
>>> mod = ops.Mod()
>>> output = mod(x, y)
>>> print(output)
[-1.  1.  0.]