matrix_norm¶
- paddle.linalg.matrix_norm(x, p='fro', axis=[-2,-1], keepdim=False, name=None):
将计算给定 Tensor 的矩阵范数。具体用法请参见 norm。
参数¶
x (Tensor) - 输入 Tensor。维度为多维,数据类型为 float32 或 float64。
p (int|float|string,可选) - 范数(ord)的种类。目前支持的值为 fro、nuc、inf、-inf、1、2、-1、-2。默认值为 fro 。
axis (list|tuple,可选) - 使用范数计算的轴。
axis
为 [-2,-1],否则axis
必须为长度为 2 的 list|tuple。keepdim (bool,可选) - 是否在输出的 Tensor 中保留和输入一样的维度,默认值为 False。当
keepdim
为 False 时,输出的 Tensor 会比输入input
的维度少一些。name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
返回¶
Tensor,在指定 axis 上进行范数计算的结果,与输入 input 数据类型相同。
代码示例¶
>>> import paddle
>>> x = paddle.arange(24, dtype="float32").reshape([2, 3, 4]) - 12
>>> print(x)
Tensor(shape=[2, 3, 4], dtype=float32, place=Place(cpu), stop_gradient=True,
[[[-12., -11., -10., -9. ],
[-8. , -7. , -6. , -5. ],
[-4. , -3. , -2. , -1. ]],
[[ 0. , 1. , 2. , 3. ],
[ 4. , 5. , 6. , 7. ],
[ 8. , 9. , 10., 11.]]])
>>> out_matrix_norm = paddle.linalg.matrix_norm(x=x,p=2,axis=[0,1],keepdim=False)
>>> print(out_matrix_norm)
Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
[15.75857544, 14.97978878, 14.69693947, 14.97978973])
>>> out_matrix_norm = paddle.linalg.matrix_norm(x=x,p='fro',axis=[0,1],keepdim=False)
>>> print(out_matrix_norm)
Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
[17.43559647, 16.91153526, 16.73320007, 16.91153526])
>>> out_matrix_norm = paddle.linalg.matrix_norm(x=x,p=float('inf'),axis=[1,2],keepdim=False)
>>> print(out_matrix_norm)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[42., 38.])
>>> out_matrix_norm = paddle.linalg.matrix_norm(x=x,p=-1,axis=[0,1],keepdim=False)
>>> print(out_matrix_norm)
Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
[12., 12., 12., 12.])
>>> out_matrix_norm = paddle.linalg.matrix_norm(x=x,p='nuc',axis=[0,1],keepdim=False)
>>> print(out_matrix_norm)
Tensor(shape=[4], dtype=float32, place=Place(cpu), stop_gradient=True,
[23.21962357, 22.82873154, 22.69693947, 22.82873154])