megengine.functional.div¶
- div(x, y)[源代码]¶
逐元素除法。
计算输入 \(x\) 与输入 \(y\) 的逐元素除。
- 参数
- 返回类型
- 返回
返回一个逐元素运算之后的 Tensor,其数值类型由 类型提升规则 规则决定。
特殊的案例
对于浮点数的操作,
如果输入 \(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\) 正有限数,\(y\) 是
+infinity
, 则计算结果为+0
。如果 \(x\) 正有限数,\(y\) 是
-infinity
, 则计算结果为-0
。如果 \(x\) 负有限数,\(y\) 是
+infinity
, 则计算结果为-0
。如果 \(x\) 负有限数,\(y\) 是
-infinity
, 则计算结果为+0
。如果 \(x\) 和 \(y\) 为同一符号的有限数, 则计算结果为正数.
如果 \(x\) 和 \(y\) 为不同符号的有限数, 则计算结果为负数.
在其余情况下,既不涉及 “-infinity”、“+0”、“-0”,也不涉及 “NaN”,则会将计算结果四舍五入为最接近的可表示值 ,符合 IEEE 754-2019 和支持的舍入模式。 如果数值太大而无法表示,则运算溢出,结果为正无穷大或负无穷大。 如果数值太小而无法表示,则运算下溢,结果为
+0
或-0
。
注解
/
运算符可以用作 Tensor 上div
的简写。参见
在 Python 中,
//
是整除运算符,见floor_div
,/
是除运算符。实际案例
>>> F.div(1.0, 4.0) Tensor(0.25, device=xpux:0)
逐元素除法:
>>> x = Tensor([[1, 2, 3], [4, 5, 6]]) >>> y = Tensor([[1, 1, 1], [2, 2, 2]]) >>> F.div(x, y) Tensor([[1. 2. 3. ] [2. 2.5 3. ]], device=xpux:0)
广播:
>>> x = Tensor([[1, 2, 3], [4, 5, 6]]) >>> F.div(x, 2) Tensor([[0.5 1. 1.5] [2. 2.5 3. ]], device=xpux:0)