mindspore.ops.floor_mod

mindspore.ops.floor_mod(x, y)[源代码]

将第一个输入Tensor除以第二个输入Tensor,并向下取余。

例如 \(floor(x / y) * y + mod(x, y) = x\)

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

\[out_{i} =\text{floor}(x_{i} // y_{i})\]

其中 \(floor\) 表示Floor算子,有关更多详细信息,请参阅 mindspore.ops.Floor 算子。

警告

  • 输入 y 的元素不能等于0,否则将返回当前数据类型的最大值。

  • 当输入元素数量超过2048时,算子的精度不能保证千分之二的要求。

  • 由于架构不同,该算子在NPU和CPU上的计算结果可能不一致。

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

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

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

返回:

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

异常:
  • TypeError - 如果 xy 都不是Tensor。

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.array([2, 4, -1]), mindspore.int32)
>>> y = Tensor(np.array([3, 3, 3]), mindspore.int32)
>>> output = ops.floor_mod(x, y)
>>> print(output)
[2 1 2]