Python tf.reduce_max在比较中不一致

Python tf.reduce_max在比较中不一致,python,if-statement,tensorflow,graph,tensor,Python,If Statement,Tensorflow,Graph,Tensor,给定项目列表/张量,我想检查整个列表的最大项目是否与列表特定部分的最大项目相同: 将tensorflow导入为tf a=tf.get_变量('a',(10100)) b=tf.取消堆叠(a,轴=1) c=tf.reduce_max(b[0]) d=tf.reduce_max(b[0]) 如果c==d: c=tf.one((1100)) sess=tf.Session() sess.run(tf.global\u variables\u initializer()) sess.run([c,d])

给定项目列表/张量,我想检查整个列表的最大项目是否与列表特定部分的最大项目相同:

将tensorflow导入为tf
a=tf.get_变量('a',(10100))
b=tf.取消堆叠(a,轴=1)
c=tf.reduce_max(b[0])
d=tf.reduce_max(b[0])
如果c==d:
c=tf.one((1100))
sess=tf.Session()
sess.run(tf.global\u variables\u initializer())
sess.run([c,d])
在上面的示例中,
c
d
应该是相同的,但是,当您运行模型时,它不满足将变量
c
重新设置为一个向量的条件。这只是一个例子,表明这些类型的比较似乎是错误的。你知道正确的方法是什么吗

在上面的例子中,c和d应该是相同的

不,你在这里要小心
c
d
在计算图中是不同的运算。将它们与
==
进行比较是毫无意义的,它们总是不同的对象。您真正需要的是确定张量值在元素方面是否相同,并在计算图中组织一个
if
语句。它看起来像这样:

result = tf.cond(tf.equal(c, d), lambda: tf.ones((1, 100)), lambda: tf.zeros((1, 100)))

另外,请注意,重新分配一个指向op的python变量(
c
,在本例中)不会改变图中的op。

以跟进Maxim。[Here][1]是一个关于如何在tensorflow中创建条件的stackoverflow线程。[1]: