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