【发布时间】:2021-03-10 15:22:01
【问题描述】:
当我使用 PyTorch 从浮点数创建张量,然后将其转换回浮点数时,它会产生不同的结果。为什么会这样,如何修复它以返回相同的值?
num = 0.9
float(torch.tensor(num))
输出:
0.8999999761581421
【问题讨论】:
标签: floating-point pytorch tensor
当我使用 PyTorch 从浮点数创建张量,然后将其转换回浮点数时,它会产生不同的结果。为什么会这样,如何修复它以返回相同的值?
num = 0.9
float(torch.tensor(num))
输出:
0.8999999761581421
【问题讨论】:
标签: floating-point pytorch tensor
这是一个浮点“问题”,您可以阅读更多有关 Python 3 如何处理这些 here 的信息。
基本上,甚至num 实际上都没有存储 0.9。无论如何,您的情况下的打印问题来自 num 实际上是双精度的,torch.tensor 默认使用单精度。如果你尝试:
num = 0.9
float(torch.tensor(num, dtype=torch.float64))
你会得到0.9。
【讨论】: