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`。 如果量级太小而无法表示,则结果是适当数学符号的零。
注解
由于精度有限,浮点乘法并不总是满足乘法交换律。
*
运算符可以用作张量上mul
的简写。
实际案例
>>> F.mul(1.0, 4.0) Tensor(4.0, device=xpux:0)
逐元素相乘:
>>> x = Tensor([[1, 2, 3], [4, 5, 6]]) >>> y = Tensor([[1, 1, 1], [2, 2, 2]]) >>> F.mul(x, y) Tensor([[ 1 2 3] [ 8 10 12]], dtype=int32, device=xpux:0)
Boradcasting:
>>> x = Tensor([[1, 2, 3], [4, 5, 6]]) >>> F.mul(x, 2) Tensor([[ 2 4 6] [ 8 10 12]], dtype=int32, device=xpux:0)