由于此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]
答案 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)
如果你还没有阅读它,你可能想要谷歌"每个计算机科学家应该知道什么关于浮点运算"更好地理解限制。