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)