megengine.functional.pow

pow(x, y)[源代码]

一种特定实现的近似取幂运算,将张量 \(x\) 中的每一个元素 \(x_i\) (底数) 跟张量 \(y\) 中每一个元素 \(y_i\) (指数)做幂运算。

参数
  • x (Tensor) – 第一个输入 tensor 里的元素作为幂运算的底数。要求是数字数据类型。

  • y (Tensor) – 第二个输入 tensor 里的元素作为幂运算的指数。维度必须兼容 x (参见 广播机制与规则 )。要求是数字数据类型。

返回类型

Tensor

返回

返回一个逐元素运算之后的 Tensor,其数值类型由 类型提升规则 规则决定。

注解

可以使用 ** 运算符作为 pow 的简写来进行张量计算。

特殊的案例

对于浮点数的操作,

  • 如果 \(x_i\) 不为 1\(y_i\)NaN, 则幂运算的结果为 NaN.

  • 如果 \(y_i\) 等于 +0, 则幂运算结果为 1, 即使 x_iNaN.

  • 如果 \(y_i\) 等于 -0, 则幂运算的结果为 1, 即使 x_iNaN.

  • 如果 \(x_i\) 等于 NaNy_i 不等于 0, 则幂运算的结果为 NaN.

  • 如果 abs(x_i) 大于 1y_i+infinity, 则幂运算的结果为 +infinity.

  • 如果 abs(x_i) 大于 1y_i-infinity, 则幂运算的结果为 +0.

  • 如果 abs(x_i) 等于 1y_i+infinity, 则幂运算的结果为 1.

  • 如果 abs(x_i) 等于 1y_i-infinity, 则幂运算结果为 1.

  • 如果 x_i 等于 1y_i 不等于 NaN, 则幂运算结果为 1.

  • 如果 abs(x_i) 小于 1y_i+infinity, 则幂运算结果为 +0.

  • 如果 abs(x_i) 小于 1y_i-infinity, 则幂运算结果为 +infinity.

  • 如果 x_i+infinityy_i 大于0, 则幂运算结果为 +infinity.

  • 如果 x_i+infinityy_i 小于0, 则幂运算结果为 +0.

  • 如果 x_i-infinity, y_i 大于0, 且 y_i 是一个奇数, 则幂运算结果为 -infinity.

  • 如果 x_i-infinity, y_i 大于0, 且 y_i 不是一个奇整数, 则幂运算结果为 +infinity.

  • 如果 x_i-infinity, y_i 小于0, 且 y_i 是一个奇整数, 则幂运算结果为 -0.

  • 如果 x_i-infinity, y_i 小于0, 且 y_i 不为一个奇整数, 则幂运算结果为 +0.

  • 如果 x_i+0y_i 大于0, 则幂运算结果为 +0.

  • 如果 x_i+0y_i 小于0, 则幂运算结果位 +infinity.

  • 如果 x_i-0, y_i 大于0, 且 y_i 是一个奇整数, 则幂运算结果为 -0.

  • 如果 x_i-0, y_i 大于0, 且 y_i 不是一个奇整数, 则幂运算结果为 +0.

  • 如果 x_i-0, y_i 小于0, 且 y_i 是一个奇整数, 则幂运算结果为 -infinity.

  • 如果 x_i-0, y_i 小于0, 且 y_i 不是一个奇整数, 则幂运算结果为 +infinity.

  • 如果 x_i 小于 0, x_i 是一个有限值, y_i 是一个有限值, 则 y_i 不是一个整数, 则幂运算结果为 NaN.

实际案例

>>> F.pow(2.0, 3.0)
Tensor(8.0, device=xpux:0)
>>> x = Tensor([1, 2, 3, 4, 5])
>>> y = Tensor([1, 2, 1, 2, 1])
>>> F.pow(x, y)
Tensor([ 1.  4.  3. 16.  5.], device=xpux:0)
>>> F.pow(x, 2)
Tensor([ 1.  4.  9. 16. 25.], device=xpux:0)