当我将两个pytorch张量相乘时,我看到一些奇怪的行为。
x = torch.tensor([99397544.0])
y = torch.tensor([0.1])
x * y
这将输出
tensor([9939755.])
但是,答案应该是9939754.4
答案 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