如何比较两个张量,无论顺序如何

时间:2018-04-23 03:26:16

标签: python python-3.x tensorflow

我想检查两个张量是否相等,但它们是无序的。如下例所示。

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。所以,我的问题是我应该使用哪种功能,谢谢大家。

2 个答案:

答案 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])