megengine.functional.mul

mul(x, y)[源代码]

计算输入张量 x 的每个元素 \(x_i\) 与输入张量 y 的相应元素 \(y_i\) 的积。

注解

  • 如果 \(x_i\)\(y_i\)NaN, 结果是 NaN.

  • 如果 \(x_i\)+infinity-infinity, 并且 \(y_i\)+0-0, 结果是 NaN.

  • 如果 \(x_i\)+0-0, 并且 \(y_i\)+infinity-infinity, 结果是 NaN.

  • 如果 \(x_i\)\(y_i\) 有不同的正负号,则结果有一个负号,除非结果是 NaN.

  • 如果 \(x_i\)+infinity-infinity, 并且 \(y_i\)+infinity-infinity, 结果是一个有符号的无穷大,其正负由上面的规则决定。

  • 如果 \(x_i\)+infinity-infinity, 并且 \(y_i\) 是一个非零的有限数,结果是一个有符号的无穷大,其正负号由上述规则决定。

  • 如果 \(x_i\) 是一个非零的有限数,并且 \(y_i\)+infinity-infinity, 结果是一个有符号的无穷大,其正负号由上述规则决定。

  • 其余情况下,如果既不涉及 infinity 也不涉及 NaN, 则必须根据 IEEE 754-2019 和支持的四舍五入模式计算乘积并将其四舍五入到最接近的可表示值。如果幅度太大无法表示,结果是一个适当的数学符号的 infinity. 如果幅度太小无法表示,结果是一个适当的数学符号的零。

  • 由于精度有限,浮点乘法并不总是满足乘法交换律。

参数
  • x (Tensor) – 第一个输入张量。应该有一个数值数据类型。

  • y (Tensor) – 第二个输入张量。必须与 x 兼容(见 广播机制与规则 )。应该有一个数值数据类型。

返回类型

Tensor

返回

一个包含按元素乘法结果的张量。返回的数组必须是由 类型提升规则 决定的数据类型。

实际案例

>>> F.mul(2, 3)
Tensor(6, dtype=int32, device=xpux:0)
>>> F.mul(2.0, 3.0)
Tensor(6.0, device=xpux:0)
>>> x = F.arange(6.0).reshape(2, 3)
>>> y = F.arange(3.0)
>>> F.mul(x, y)
Tensor([[ 0.  1.  4.]
 [ 0.  4. 10.]], device=xpux:0)

* 运算符可以作为 mul 在张量上的简化写法。

>>> x = F.arange(6.0).reshape(2, 3)
>>> y = F.arange(3.0)
>>> x * y
Tensor([[ 0.  1.  4.]
 [ 0.  4. 10.]], device=xpux:0)