如何在 PyTorch 中准确计算高 Lp 范数

问题描述 投票:0回答:0

我正在使用

torch.norm
来计算 Lp norms
p
的值相对较大(在 10-50 范围内)。我这样做的向量具有相对较小的值,我注意到结果错误地变成了
0
。在上面的示例中,这已经发生在
p=9
!

import torch

lb = 1e-6 # Lower bound
ub = 1e-5 # Upper bound

# Construct vector
v = torch.rand(100) * (ub - lb) + lb

# Calculate Lp norms
for p in range(1,20):
    print(p, torch.norm(v, p=p))

# It should approach the maximum value for p -> inf
print(torch.max(v))

有办法规避这个问题吗?或者它是机器精度及其相关舍入误差所固有的?理想情况下,我想要一个维护图形的解决方案。但我也对数值近似感兴趣。

python precision linear-algebra torch magnitude
© www.soinside.com 2019 - 2024. All rights reserved.