matrix_exp¶
计算方阵的矩阵指数。
\[exp(A) = \sum_{n=0}^\infty A^n/n!\]
输入的张量 x
应该是方阵,比如 (*, M, M)
,矩阵指数通过比例平方法的帕德近似计算而来。
[1] Nicholas J. Higham, The scaling and squaring method for the matrix exponential revisited.
参数¶
x (Tensor) - 输入张量,形状应该为
(*, M, M)
,*
表示 0 或多个维度。数据类型为:float32
,float64
。name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
返回¶
Tensor,与 x
的类型和形状相同。
代码示例¶
>>> import paddle
>>> mat_a = paddle.empty((2, 2, 2))
>>> mat_a[0, :, :] = paddle.eye(2, 2)
>>> mat_a[1, :, :] = 2 * paddle.eye(2, 2)
>>> print(mat_a)
Tensor(shape=[2, 2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[[1., 0.],
[0., 1.]],
[[2., 0.],
[0., 2.]]])
>>> out = paddle.linalg.matrix_exp(mat_a)
>>> print(out)
Tensor(shape=[2, 2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[[2.71828198, 0. ],
[0. , 2.71828198]],
[[7.38905621, 0. ],
[0. , 7.38905621]]])
>>> import math
>>> mat_a = paddle.to_tensor([[0, math.pi/3], [-math.pi/3, 0]])
>>> out = paddle.linalg.matrix_exp(mat_a)
>>> print(out)
Tensor(shape=[2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[ 0.49999994, 0.86602545],
[-0.86602551, 0.50000000]])