TensorFlow 1.8.0,急切的执行和比较不会按预期运行

时间:2018-05-13 04:54:47

标签: python tensorflow

在TensorFlow程序员指南中,Flow Control/FizzBuzz示例显示:

num = tf.constant(num)
if num % 3 == 0 and num % 5 == 0:

然而,这对我不起作用。

fiver % 5 == 0
False

我成功运作的唯一方法是使用:

(num % 5).numpy() == 0

python比较是否应该与EagerTensor类型一起使用?当然,tf.equal()有效,但该示例显示了== 0等直接比较。

1 个答案:

答案 0 :(得分:3)

这听起来像文档中的错误。如果你看the source of the equality operator of the Tensor object

def __eq__(self, other):
    # Necessary to support Python's collection membership operators
    return id(self) == id(other)

因此,my_boolean_tensor==True(或False)将始终返回False,因为张量对象不是TrueFalse对象。

如果我正确理解该运算符中的注释,则此行为不太可能发生变化。