TensorFlow计算结果略有不同

时间:2017-02-16 14:31:31

标签: python machine-learning tensorflow

由于此link仅描述了基于学习方法的各种预测,我想要找出好奇心为什么TensorFlow计算略有不同

import tensorflow as tf
sess = tf.Session() # TensorFlow session

var1 = tf.placeholder(tf.float32) # one placeholder
var2 = tf.placeholder(tf.float32) # another one
addition_node = var1 + var2 # Variable Addition Node

array = sess.run(addition_node, {var1: [1.1, 2.2, 3.3], var2:[1,1,1]}) # Array with values
print(array)

预期的输出:

[ 2.1000000   3.20000000  4.30000000]

实际输出:

[ 2.0999999   3.20000005  4.30000019]

1 个答案:

答案 0 :(得分:2)

对于32位浮点值,这是正常的。那些1.1,2,2和3.3值并不完全用32位浮点表示。

import numpy as np
x = np.array([1.1, 2.2, 3.3], dtype=np.float32)
y = np.array([1, 1, 1], dtype=np.float32)
x+y

>>> array([ 2.0999999 ,  3.20000005,  4.30000019], dtype=float32)

如果你还没有阅读它,你可能想要谷歌"每个计算机科学家应该知道什么关于浮点运算"更好地理解限制。