2017-02-16 66 views
1

由于这个link只描述了基于学习方法的各种预测,我想找出好奇为什么TensorFlow计算略有变化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] 

回答

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) 

如果您还没有读过它,你可能想谷歌“什么每台计算机科学家应该知道关于浮点运算”,以更好地理解的局限性。

+1

This!特别是python,你可以在这里找到更多:https://docs.python.org/2/tutorial/floatingpoint.html – rmeertens