【问题标题】:TensorFlow computation results slightly varyTensorFlow 计算结果略有不同
【发布时间】:2017-07-05 17:35:44
【问题描述】:

由于此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]

【问题讨论】:

    标签: python machine-learning tensorflow


    【解决方案1】:

    这对于 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)
    

    如果您还没有阅读过它,您可能想在 Google 上搜索“What Every Computer Scientist Should Know About Floating-Point Arithmetic”以更好地了解其局限性。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多