import paddle test = paddle.to_tensor(259280) print(test / 259280) # 结果为0.99999994
如果换成259281,结果为1是什么原因导致?
No response
oknwwptz1#
看起来是1./259280.做数据转换时导致了精度损失,numpy也有这个问题,可以看看下面的示例
np.float32(259280.)*np.float32(1/259280.)
float(np.float32(1./259280.))==1./259280
7y4bm7vi2#
但是pytorch/numpy直接做 259280/259280结果为1而paddle结果却不对
yb3bgrhw3#
有具体的测试代码吗?
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
tvz2xvvm5#
好的,我们安排专人来看一下,请关注后续升级内容。
9njqaruj6#
整数除法我不懂,如果是浮点数除法,那电脑程序的结果大概率无法跟数学计算结果相同的.举个简单例子,0.2+0.5-0.7跟0比较,结果是false.不要对计算机的浮点数的运算要求太高,否则可能导致性能大幅度下降.飞桨升级浮点数相关内容的话,也得测试性能会不会下降.
6条答案
按热度按时间oknwwptz1#
看起来是1./259280.做数据转换时导致了精度损失,numpy也有这个问题,可以看看下面的示例
np.float32(259280.)*np.float32(1/259280.)
float(np.float32(1./259280.))==1./259280
7y4bm7vi2#
但是pytorch/numpy直接做 259280/259280结果为1
而paddle结果却不对
yb3bgrhw3#
有具体的测试代码吗?
zpgglvta4#
tvz2xvvm5#
好的,我们安排专人来看一下,请关注后续升级内容。
9njqaruj6#
整数除法我不懂,如果是浮点数除法,那电脑程序的结果大概率无法跟数学计算结果相同的.举个简单例子,0.2+0.5-0.7跟0比较,结果是false.不要对计算机的浮点数的运算要求太高,否则可能导致性能大幅度下降.飞桨升级浮点数相关内容的话,也得测试性能会不会下降.