我在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正在正确地进行计算。