Ammar Ahmad
Ammar Ahmad

Reputation: 21

Pytorch tensor multiplication with Float tensor giving wrong answer

I am seeing some strange behavior when i multiply two pytorch tensors.

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

This outputs

tensor([9939755.])

However, the answer should be 9939754.4

Upvotes: 2

Views: 2636

Answers (1)

zihaozhihao
zihaozhihao

Reputation: 4495

In default, the tensor dtype is torch.float32 in pytorch. Change it to torch.float64 will give the right result.

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

The mismatched result for torch.float32 caused by rounding error if you do not have enough precision to calculate (represent) it.

What Every Computer Scientist Should Know About Floating-Point Arithmetic

Upvotes: 3

Related Questions