Tensorflow中矢量的排序索引函数

时间:2018-03-10 12:35:08

标签: python tensorflow

我有一个向量,我想要它的“排序索引函数”。

我的意思是,如果你有一个k = length(v)的向量v并且用

进行排序
sort_v=tf.nn.top_k(v,k)

然后我希望“分类索引函数”psi与

v(psi(i))=sort_v(i)

如何在tensorflow中获得此函数(作为张量)?

1 个答案:

答案 0 :(得分:1)

根据文档tf_nn.top_k返回排序张量的值和索引,因此您可以简单地使用两个变量,一个用于值,一个用于索引

a_sorted_val, a_sorted_ind = tf.nn.top_k(a, 2)

a_sorted_ind是表示为张量的函数

示例:

将tensorflow导入为tf 导入numpy为np

with tf.Session():
  a = tf.convert_to_tensor([[4, 3, 2, 1], [5, 6, 7, 8]])
  a_sort_val, a_sort_ind = tf.nn.top_k(a, 4)
  values = a_sort_val.eval()
  indices = a_sort_ind.eval()
  unsorted_a = a.eval()

print(unsorted_a)
print(values)
print(indices)
type(a_sort_ind)


[[4 3 2 1]     <-- unsorted
 [5 6 7 8]]
[[4 3 2 1]     <-- sorted tensor
 [8 7 6 5]]
[[0 1 2 3]     <-- indices of sorted tensor
 [3 2 1 0]]
tensorflow.python.framework.ops.Tensor