割炬精度导致 SUM 忽略小浮点

torch precision causes sum to ignore small float

提问人:GigaByte123 提问时间:11/6/2022 更新时间:11/6/2022 访问量:199

问:

我遇到了一个意想不到的情况,总和忽略了一个数字:pytorch1e-6

test_tensor = torch.tensor([10, 20, 10, 1e-6])
print(torch.sum(test_tensor) == torch.sum(test_tensor[0:-1]))

输出为:

tensor(True)

这对我来说很麻烦,因为我需要两个张量之间的差值为零(严格为正) 有没有办法解决这个问题。

PyTorch 火炬 浮动精度

评论

3赞 njuffa 11/6/2022
最接近数学结果的单精度 (IEEE-754) 数字是 40。换句话说,由于有限精度,40 和 40.000001 在单个精度中无法区分。如果 40 和 40.000001 之间的差异很重要,请选择具有更高精度的数据类型,例如双精度 (IEEE-754)。binary32binary64
1赞 Umang Gupta 11/6/2022
建立在@njuffa的评论之上应该对你有用test_tensor = torch.tensor([10, 20, 10, 1e-6], dtype=torch.double)

答: 暂无答案