📜  Python PyTorch – linalg.norm() 方法(1)

📅  最后修改于: 2023-12-03 15:34:03.935000             🧑  作者: Mango

Python PyTorch – linalg.norm() 方法

在PyTorch中,linalg.norm()方法用于计算矩阵或向量的范数。范数是将向量或矩阵映射成一个非负实数的函数,表示其大小或长度。在机器学习等领域,范数是一个极为重要的概念,可以用来优化模型或进行模型评估。

语法
torch.linalg.norm(input, ord=None, dim=None, keepdim=False, out=None, dtype=None)

参数说明:

  • input:待计算范数的向量或矩阵。
  • ord:范数的阶数,默认为2,即计算L2范数。也可以设置为1,表示计算L1范数;为无穷大(Inf),表示计算L∞范数。
  • dim:指定计算范数的维度。当dim=None时,计算整个矩阵或向量的范数。当dim=k时,表示沿着第k个维度计算范数。
  • keepdim:当keepdim=True时,结果的维度和input的维度保持一致;当keepdim=False时,结果的维度会减少一维。
  • out:输出Tensor。
  • dtype:输出Tensor的数据类型。
示例
import torch

# 计算向量的L2范数
a = torch.tensor([1, 2, 3, 4.])
print(torch.linalg.norm(a, ord=2))

# 计算矩阵每列的L1范数
b = torch.tensor([[1, 2, 3], [-4, 5, 6], [-7, 8, -9]])
print(torch.linalg.norm(b, ord=1, dim=0))

# 计算每行向量的无穷范数
print(torch.linalg.norm(b, ord=float('inf'), dim=1))

输出结果如下:

5.477225303644047
tensor([12., 15., 18.])
tensor([ 3.,  6.,  9.])
总结

linalg.norm()方法是PyTorch中一个非常实用的函数,可以方便地计算向量或矩阵的范数。在编写深度学习模型时,我们经常需要使用它来评估模型的性能或优化损失函数。牢记其灵活性和易用性可以显著提高实验的效率和准确性。