torch.linalg.vector_norm
- torch.linalg.vector_norm(x, ord=2, dim=None, keepdim=False, *, dtype=None, out=None) → Tensor
-
计算向量的范数。
如果
x
是复数类型,它会计算x
的范数(即 .abs())支持浮点型、双精度型、复数浮点型和复数双精度型数据类型的输入。
此函数不一定会将多维的
x
视为向量批处理,而是:-
如果
dim
为 None,则在计算范数之前会将x
展平。 -
如果
dim
是 int 或 tuple,范数将在这些维度上进行计算,其余维度则会被视为批次维度。
此行为与
torch.linalg.norm()
保持一致。ord
定义了要计算的向量范数。支持的范数包括:ord
向量范数
2 (默认值)
2-范数(参见下文)
inf 由于这里的修改目标是为了使句子更自然、更符合中文习惯,但给定的内容仅为一个标签“inf”,在不改变其意义和结构的前提下,保持原样最为合适。因此直接返回原文: infmax(|x|)
-∞
min(|x|)
0
sum(x ≠ 0)
其他 int 或 float 类型
(∑(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,若未指定则忽略。
-
dtype (
torch.dtype
, 可选) – 用于执行累加和返回结果的数据类型。如果指定了x
,则在操作前将其转换为dtype
类型,并且返回的张量将根据dtype
是实数还是复数来确定其类型。如果x
本身是复数,则dtype
可以是复数,否则必须为实数。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)
-