megengine.functional.pow¶
- pow(x, y)[源代码]¶
逐元素幂。
一种特定实现的近似取幂运算,将张量 \(x\) 中的每一个元素 \(x_i\) (底数) 跟张量 \(y\) 中每一个元素 \(y_i\) (指数)做幂运算。
- 参数
- 返回类型
- 返回
返回一个逐元素运算之后的 Tensor,其数值类型由 类型提升规则 规则决定。
注解
可以使用
**运算符作为pow的简写来进行张量计算。特殊的案例
对于浮点数的操作,
如果 \(x_i\) 不为
1且 \(y_i\) 为NaN, 则幂运算的结果为NaN.如果 \(y_i\) 是``+0``,结果是
1,即使 \(x_i\) 是NaN。如果 \(y_i\) 是
-0,结果是1,即使 \(x_i\) 是NaN。如果 \(x_i\) 是
NaN,并且 \(y_i\) 不等于0,结果是NaN。如果 \(abs{x_i}\) 大于
1,并且 \(y_i\) 是+无穷大,结果是+无穷大。如果 \(abs{x_i}\) 大于
1,并且 \(y_i\) 是-无穷大,结果是+0。如果 \(abs{x_i}\) 是
1和 \(y_i\) 是+无穷大,结果是1。如果 \(abs{x_i}\) 是
1和 \(y_i\) 是-无穷大,结果是1。如果 \(x_i\) 是
1,并且 \(y_i\) 不是NaN,结果是1。如果 \(abs{x_i}\) 小于``1``,并且 \(y_i\) 是
+无穷大,结果是+0。如果 \(abs{x_i}\) 小于
1,并且 \(y_i\) 是-无穷大,结果是+无穷大。如果 \(x_i\) 是
+无穷大,并且 \(y_i\) 大于0,结果是+无穷大。如果:math:x_i`是``+infinity`,并且:math:y_i`小于``0`,结果是``+0``。
如果:math:x_i`是`-无穷大``,\(y_i\),并且:math:y_i`是一个奇数整数,结果是`-无穷大``。
如果 \(x_i\) 是``-无穷大``,\(y_i\),并且:math:y_i`不是一个奇数整数,结果是``+无穷大`。
如果:math:x_i`是`-无穷大``,\(y_i\),并且:math:y_i`是一个奇数整数,结果是`-0``。
如果:math:x_i`是`-无穷大``,\(y_i\),并且:math:y_i`不是一个奇数整数,结果是``+0`。
如果:math:x_i`是``+0`,并且:math:y_i`大于``0`,结果是``+0``。
如果:math:x_i`是``+0`,并且:math:y_i`小于``0`,结果是``+无穷大``。
如果 \(x_i\) 是``-0``,\(y_i\),并且:math:y_i`是一个奇数整数,结果是`-0``。
如果:math:x_i`是`-0``,\(y_i\),并且:math:y_i`不是一个奇数的整数,结果是``+0`。
如果:math:x_i`是`-0``,\(y_i\),并且:math:y_i`是一个奇数的整数值,结果是`-无穷大``。
如果:math:x_i`是`-0``,\(y_i\),并且:math:y_i`不是一个奇数整数,结果是``+无穷大’。
如果:math:x_i`小于0,:math:`x_i`是一个有限数,:math:`y_i`是一个有限数,并且:math:`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)