【问题标题】:Tensorflow eval() - different results for (a/b).eval() and (a.eval()/b.eval())Tensorflow eval() - (a/b).eval() 和 (a.eval()/b.eval()) 的不同结果
【发布时间】:2018-07-04 08:27:42
【问题描述】:

我目前遇到的问题是 tensorflow 无法产生我想要得到的结果。当我尝试调试问题时,我注意到直到一个部门,一切似乎都很好。 https://imgur.com/a/DT4RWiS

有人能告诉我这里可能发生什么吗?

【问题讨论】:

标签: python tensorflow eval


【解决方案1】:

可能涉及一些随机性。考虑以下示例:

import tensorflow as tf

a = tf.random_uniform(shape=(4,), minval=1, maxval=2)
b = tf.random_uniform(shape=(4,), minval=1, maxval=2)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(a.eval()/b.eval())
    print((a/b).eval())

a.eval()(a/b).eval()被调用时,tf.random_uniform被执行,张量a被不同的随机数填充。

【讨论】:

  • 是的,这是正确的解决方案。我在随机采样之前对张量进行了洗牌,因此结果不同。谢谢,尤其是因为您设法找到了一个有效的最小示例
【解决方案2】:

这是因为 tensorflow 中的 / 运算符遵循 Python 2 语法并执行整数除法(参见 https://www.tensorflow.org/api_docs/python/tf/div)。您应该改用tf.divide。一般来说,对于张量之间的任何数学运算,您应该使用tf.operation_name

【讨论】:

  • 在我的情况下这似乎不是问题,tf.div 和 tf.divide 的结果相同。但我认为这可能会导致类似的问题。由于我目前正在努力在最小的情况下重现错误,因此我认为这是我希望的最好结果
猜你喜欢
  • 2020-03-23
  • 2020-01-10
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
相关资源
最近更新 更多