Tensorflow eval()-(a / b).eval()和(a.eval()/ b.eval())的不同结果

时间:2018-07-04 08:27:42

标签: python tensorflow eval

我目前正在运行一个问题,其中tensorflow无法产生我想要获得的结果。当我尝试调试问题时,我注意到直到一个部门为止,一切似乎都可以正常进行。 https://imgur.com/a/DT4RWiS strange eval behavior

有人可以启发我这里发生的事情吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

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