torch.linalg.vector_norm¶
- torch.linalg.vector_norm(x, ord=2, dim=None, keepdim=False, *, dtype=None, out=None) Tensor¶
计算向量范数。
如果
x是复数值,它计算x.abs() 的范数。支持 float、double、cfloat 和 cdouble 数据类型的输入。
该函数不一定将多维度的
x视为一批向量,而是如果
dim= None,计算范数前将展平x。如果
dim是一个 int 或 tuple,将在这些维度上计算范数,而其他维度将被视为批量维度。
此行为与
torch.linalg.norm()保持一致。ord定义了计算的向量范数。支持以下范数:ord向量范数
2 (默认)
2-范数 (见下文)
inf
max(abs(x))
-inf
min(abs(x))
0
sum(x != 0)
其他 int 或 float
sum(abs(x)^{ord})^{(1 / ord)}
其中 inf 指代 float('inf')、NumPy 的 inf 对象或任何等效对象。
dtype可用于以更精确的数据类型执行计算。它在语义上等同于调用linalg.vector_norm(x.to(dtype)),但在某些情况下速度更快。另请参阅
torch.linalg.matrix_norm()计算矩阵范数。- 参数
- 关键字参数
out (Tensor, optional) – 输出张量。如果为 None 则忽略。默认值:None。
dtype (
torch.dtype, optional) – 用于执行累加和返回的类型。如果指定,在执行操作前将x转换为dtype,并且如果返回的张量是实数的,其类型将为dtype;如果是复数的,则为其对应的实数类型。dtype可以是复数类型(如果x是复数),否则必须是实数类型。x应该可以在不缩小精度的情况下转换为dtype。默认值:None
- 返回值
一个实数值张量,即使
x是复数。
示例
>>> from torch import linalg as LA >>> a = torch.arange(9, dtype=torch.float) - 4 >>> a tensor([-4., -3., -2., -1., 0., 1., 2., 3., 4.]) >>> B = a.reshape((3, 3)) >>> B tensor([[-4., -3., -2.], [-1., 0., 1.], [ 2., 3., 4.]]) >>> LA.vector_norm(a, ord=3.5) tensor(5.4345) >>> LA.vector_norm(B, ord=3.5) tensor(5.4345)