megengine.functional.floor_div¶
- floor_div(x, y)[源代码]¶
Element-wise floor division.
将输入张量 \(x\) 的每个元素 \(x_i\) 除以输入张量 \(y_i\) 的相应元素 \(y\) 的结果四舍五入到最大 (即最接近到
+infinity
) 不大于除法结果的整数值数。- 参数
- 返回类型
- 返回
包含逐元素结果的张量。 返回的张量必须具有由 类型提升规则 确定的数据类型。
特别案例
对于浮点操作数,
如果 \(x\) 或 \(y\) 是
NaN
,则结果是NaN
。如果 \(x\) 是
+infinity
或-infinity
且 \(y\) 是+infinity
或-infinity
,则结果为NaN
。如果 \(x\) 是
+0
或-0
并且 \(y\) 是+0
或-0
,结果是NaN
。如果 \(x\) 是
+0
并且 \(y\) 大于0
,则结果为+0
。如果 \(x\) 是
-0
并且 \(y\) 大于0
,则结果为-0
。如果 \(x\) 是
+0
并且 \(y\) 小于0
,则结果为-0
。如果 \(x\) 是
-0
并且 \(y\) 小于0
,则结果为+0
。如果 \(x\) 大于
0
并且 \(y\) 是+0
,则结果为+infinity
。如果 \(x\) 大于
0
并且 \(y\) 是-0
,则结果为-infinity
。如果 \(x\) 小于
0
并且 \(y\) 是+0
,则结果为-infinity
。如果 \(x\) 小于
0
并且 \(y\) 是-0
,则结果为+infinity
。如果 \(x\) 是
+infinity
并且 \(y\) 是一个正有限数 (即大于0
),则结果是+infinity
。如果 \(x\) 是
+infinity
并且 \(y\) 是一个负有限数 (即小于0
),则结果是-infinity
。如果 \(x\) 是
-infinity
并且 \(y\) 是一个正有限数 (即大于0
),则结果是-infinity
。如果 \(x\) 是
-infinity
并且 \(y\) 是一个负有限数 (即小于0
),则结果是+infinity
。如果 \(x\) 是一个正有限数 (即大于
0
) 并且 \(y\) 是+infinity
,则结果是+0
。如果 \(x\) 是一个正有限数 (即大于
0
) 并且 \(y\) 是-infinity
,则结果是-0
。如果 \(x\) 是一个负有限数 (即小于
0
) 并且 \(y\) 是+infinity
,则结果是-0
。如果 \(x\) 是一个负有限数 (即小于
0
) 并且 \(y\) 是-infinity
,则结果是+0
。如果 \(x\) 和 \(y\) 具有相同的数学符号并且都是非零有限数,则结果具有正的数学符号。
如果 \(x\) 和 \(y\) 具有不同的数学符号并且都是非零有限数,则结果具有负数学符号。
在其余情况下,既不涉及``-infinity``、
+0
、-0
,也不涉及NaN
,则必须计算商并将其四舍五入为最接近的可表示值,符合 IEEE 754-2019 和支持的舍入模式。 如果量级太大而无法表示,则运算溢出,结果是适当数学符号的无穷大。 如果量级太小而无法表示,则运算下溢,并且结果是适当数学符号的零。
注解
//
运算符可以用作张量上``floor_div`` 的简写。参见
在 Python 中,
//
是地板除法运算符,/
是真正的除法运算符。 见div
实际案例
>>> F.floor_div(5.0, 4.0) Tensor(1.0, device=xpux:0)
Element-wise floor division:
>>> x = Tensor([[1, 2, 3], [4, 5, 6]]) >>> y = Tensor([[1, 1, 1], [2, 2, 2]]) >>> F.floor_div(x, y) Tensor([[1 2 3] [2 2 3]], dtype=int32, device=xpux:0)
广播:
>>> x = Tensor([[1, 2, 3], [4, 5, 6]]) >>> F.floor_div(x, 2) Tensor([[0 1 1] [2 2 3]], dtype=int32, device=xpux:0)