Paddle 两个相同的数相除结果不为1

tcbh2hod  于 2022-11-19  发布在  其他
关注(0)|答案(6)|浏览(170)

bug描述 Describe the Bug

import paddle
test = paddle.to_tensor(259280)
print(test / 259280)  # 结果为0.99999994

如果换成259281,结果为1
是什么原因导致?

其他补充信息 Additional Supplementary Information

No response

oknwwptz

oknwwptz1#

看起来是1./259280.做数据转换时导致了精度损失,numpy也有这个问题,可以看看下面的示例

np.float32(259280.)*np.float32(1/259280.)

float(np.float32(1./259280.))==1./259280

7y4bm7vi

7y4bm7vi2#

但是pytorch/numpy直接做 259280/259280结果为1
而paddle结果却不对

yb3bgrhw

yb3bgrhw3#

有具体的测试代码吗?

zpgglvta

zpgglvta4#

import paddle
test = paddle.to_tensor(259280)
print(test / 259280)  # 结果为0.99999994

import torch
test = torch.Tensor([259280])
print(test / 259280) ##结果为1

import numpy as np
test = np.float32(259280)
print(test / 259280) ##结果为1
tvz2xvvm

tvz2xvvm5#

好的,我们安排专人来看一下,请关注后续升级内容。

9njqaruj

9njqaruj6#

整数除法我不懂,如果是浮点数除法,那电脑程序的结果大概率无法跟数学计算结果相同的.举个简单例子,0.2+0.5-0.7跟0比较,结果是false.不要对计算机的浮点数的运算要求太高,否则可能导致性能大幅度下降.飞桨升级浮点数相关内容的话,也得测试性能会不会下降.

相关问题