python - TensorFlow 计算结果略有不同

标签 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]

最佳答案

这对于 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 上搜索“每个计算机科学家都应该了解浮点运算”以更好地了解其限制。

关于python - TensorFlow 计算结果略有不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276811/

相关文章:

python - 使用预测图像和地面真实图像评估神经网络

python - 使用 TensorFlow eager execution 嵌入可视化

tensorflow - TensorFlow变量和TensorFlow张量之间的实现差异

python - 如何在Python中计算几何平均值并忽略0

python - CSV 到 SQL Server : bulk import nightmare (T-SQL and/or Pandas)

python - 如何在输出中不显示括号和 ""的情况下打印列表? python 3.3.2

machine-learning - 蒙特卡罗 RL - 为什么估计单个状态值的计算费用与状态数量无关?

python - 如何使 ResNet 适应时间序列数据

python - 导入keras时出错 ModuleNotFoundError : No module named 'tensorflow.examples' ; 'tensorflow' is not a package

python - Python 中的 "Boolean"操作(即 : the and/or operators)