我想检查两个张量是否相等,但它们是无序的。如下例所示。
import tensorflow as tf
y_pred = [0,1,2], y_true = [1,2,0]
如果我使用Y = tf.equal(y_true, y_pred)
session = tf.Session()
session.run(Y)
然后输出将为array([False, False, False])
我的期望是,如果张量之间的元素相等,那么输出将为True
。所以,我的问题是我应该使用哪种功能,谢谢大家。
答案 0 :(得分:0)
基于描述的here
的tensorflow文档tf.equal()
以元素方式返回(x == y)的真值。
这意味着该方法仅适用于有序集。
只需对元素进行排序并将其存储在临时变量中。使用排序的临时变量进行比较。我相信有python函数可以让你轻松地对列表进行排序。
import tensorflow as tf
y_pred = [0,1,2]
y_true = [1,2,0]
y_pred_sorted = sorted(y_pred)
y_true_sorted = sorted(y_true)
Y = tf.equal(y_pred_sorted, y_true_sorted)
session = tf.Session()
session.run(Y)
结果: 数组([True,True,True])
答案 1 :(得分:0)
谢谢大家,我找到了解决问题的方法。
import tensorflow as tf
y_pred = [0,1,2]
y_true = [1,2,0]
y_pred = tf.bincount(y_pred)
y_true = tf.bincount(y_true)
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
y_pred.eval() == y_true.eval()
然后输出为array([ True, True, True])