pytorch ---- torch.linalg.norm()函数

torch.linalg.norm 是 PyTorch 中用于计算张量范数(Norm)的函数。范数是线性代数中的一个重要概念,用于量化向量或矩阵的大小或长度。这个函数可以处理任意形状的张量,支持多种类型的范数计算。

1.函数签名 

torch.linalg.norm(input, ord=None, dim=None, keepdim=False, dtype=None) -> Tensor

参数说明

  • input:
    要计算范数的张量。

  • ord (可选):
    范数的类型,决定范数的计算公式。常见值:

    • None(默认):计算 Frobenius 范数(矩阵)或 2 范数(向量)。
    • 1: 1 范数(列绝对值之和,或向量绝对值之和)。
    • 2: 2 范数(Euclidean 范数,平方和的平方根)。
    • 'fro': Frobenius 范数(矩阵的元素平方和开方)。
    • inf: 无穷范数(矩阵的行绝对值和最大值)。
    • -inf: 负无穷范数(矩阵的行绝对值和最小值)。
  • dim (可选):
    指定计算范数的维度。

    • 若为 None,计算整个张量的范数。
    • 若指定为单个或多个维度,则按维度计算范数。
  • keepdim (布尔,可选):
    如果为 True,结果会保留被归约的维度,维度的大小为 1

  • dtype (可选):
    指定计算中使用的数据类型,常用于提高数值精度。

返回值

返回计算出的张量范数。结果是一个标量或一个张量(取决于是否指定 dim 参数)。

常见用法示例

(1) 计算向量的 2 范数

计算向量的欧几里得长度(平方和的平方根)。

import torch

x = torch.tensor([3.0, 4.0])
norm = torch.linalg.norm(x)
print(norm)  # 输出: 5.0 (因为 sqrt(3^2 + 4^2) = 5)

(2) 计算矩阵的 Frobenius 范数

A = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
norm = torch.linalg.norm(A, ord='fro')
print(norm)  # 输出: 5.4772 (因为 sqrt(1^2 + 2^2 + 3^2 + 4^2) ≈ 5.4772)

 (3) 按维度计算范数

B = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
norm_dim0 = torch.linalg.norm(B, ord=1, dim=0)
print(norm_dim0)  # 输出: tensor([4., 6.]) (列绝对值之和)

norm_dim1 = torch.linalg.norm(B, ord=1, dim=1)
print(norm_dim1)  # 输出: tensor([3., 7.]) (行绝对值之和)

 (4) 计算无穷范数

C = torch.tensor([[1.0, -2.0], [3.0, -4.0]])
inf_norm = torch.linalg.norm(C, ord=float('inf'))
print(inf_norm)  # 输出: 7.0 (最大行绝对值和)

 (5) 计算负无穷范数

neg_inf_norm = torch.linalg.norm(C, ord=float('-inf'))
print(neg_inf_norm)  # 输出: 3.0 (最小行绝对值和)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值