Tensorflow计算结果错误(小数位错误)



我在TensorFlow中做了以下简单的计算,并惊讶地发现结果并不像我预期的那样。我的代码:

a = tf.constant([[0.2,1],[0.3,0.75]])
b = tf.constant([[0.2,0.1],[0.8,0.2]])
print(tf.square(a)+tf.square(b))

它提供的结果:

tf.Tensor(
[[0.08000001 1.01      ]
[0.73       0.6025    ]], shape=(2, 2), dtype=float32)

然而,我本以为:

tf.Tensor(
[[0.08       1.0     ]
[0.73       0.6025    ]], shape=(2, 2), dtype=float32)

因为这在数学上是我计算的正确结果。出了什么问题?

使用float32精度时,结果

>>> tf.square(0.2).numpy()
0.040000003

意味着

>>> (tf.square(a)+tf.square(b))[0][0].numpy()
0.080000006

当打印出整个生成的数组时,元素被四舍五入为0.08000001

此外,

>>> (tf.square(1.0)+tf.square(0.1)).numpy()
1.01

这意味着TensorFlow正在正确地进行计算。

相关内容

  • 没有找到相关文章

最新更新