我有一个简单的 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
我知道这是浮点情况,但是有办法消除它吗?
谢谢!
测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试