megengine.functional.div

div(x, y)[源代码]

逐元素除法。

计算输入 \(x\) 与输入 \(y\) 的逐元素除。

参数
  • x (Tensor) – 被除的输入 Tensor,其应有一个数值类型。

  • y (Tensor) – 作为除数的输入张量。Layout 必须跟 \(x\) 兼容(具体参见 广播机制与规则 )。应该有一个数值数据类型。

返回类型

Tensor

返回

返回一个逐元素运算之后的 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)