Pytorch张量乘法与浮动张量给出错误的答案

时间:2019-09-17 21:36:06

标签: pytorch

当我将两个pytorch张量相乘时,我看到一些奇怪的行为。

x = torch.tensor([99397544.0])
y = torch.tensor([0.1])
x * y

这将输出

tensor([9939755.])

但是,答案应该是9939754.4

1 个答案:

答案 0 :(得分:2)

默认情况下,pytorch中的张量dtype为torch.float32。将其更改为torch.float64将得到正确的结果。

x = torch.tensor([99397544.0], dtype=torch.float64)
y = torch.tensor([0.1], dtype=torch.float64)
x * y
# tensor([9939754.4000])

如果舍入错误导致torch.float32的不匹配结果,如果您没有足够的精度来计算(表示)该结果。

What Every Computer Scientist Should Know About Floating-Point Arithmetic