Pytorch求和问题(可能是浮点数)

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

我有一个简单的 Python 测试来获取我放入火炬张量中的列表中的几个项目的总和:

lst = [0.0014, -0.0306,  0.0005,  0.0011,  0.0012,  0.0022,  0.0017,  0.0011,
          0.0017,  0.0011,  0.0012,  0.0017,  0.0014,  0.0015,  0.0010,  0.0006,
          0.0006,  0.0004,  0.0009,  0.0007,  0.0008,  0.0007,  0.0013,  0.0013,
          0.0015,  0.0023,  0.0006]

LEN=27

trch = torch.Tensor([lst])


print('--------------------------------------------------------------')

print(trch.sum(1, keepdim=True))
print(sum(lst))
print(trch @ torch.ones((LEN,1)))
print(torch.mm( trch , torch.ones((LEN,1))))


trch_sum= 0
for num in lst:
    trch_sum += num
print(trch_sum)

我得到以下(合理的)结果:

tensor([[-0.0001]])
-9.999999999999912e-05
tensor([[-9.9999e-05]])
tensor([[-9.9999e-05]])
-9.999999999999972e-05

但是,将列表的最后一个数字更改为 0.0007 会对结果产生显着影响。

tensor([[-9.3132e-10]])
9.215718466126788e-19
tensor([[1.1642e-09]])
tensor([[1.1642e-09]])
3.2526065174565133e-19

我知道这是浮点情况,但是有办法消除它吗?

谢谢!

python pytorch floating-point
1个回答
0
投票

测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试

© www.soinside.com 2019 - 2024. All rights reserved.