2016-07-21 137 views
1

问题

您好!有没有办法将张量修改为本身的排名版本而不使用eval?TensorFlow:如何排序张量?

例如,[6,4,5] - > [3,1,2]?

语境

我感兴趣的使用等级相关的成本函数,和我的绷带的解决方案是使用session.run(张量)来获得numpy的值,然后修改,对于秩相关。

问题迄今一直认为,重量和偏见不训练时发生变化,导致我认为TensorFlow不计算有意义的梯度。

我已经改变了一些(500和3E-8)之间的数值之间我的学习速度,看看是否真的是问题。没有运气,重量和偏见保持不变。

回答

4

你可以看看tf.nn.top_k秒输出以获得最大的元素的位置。在原始列表元素的队伍就是这样的反,所以在结果上运行top_k

这给了最大的元素的位置,你真正想要最小的,而不是最大的,所以你需要否定输入到top_k

a = tf.constant([6, 4, 5]) 
size = tf.size(a) 
indices_of_ranks = tf.nn.top_k(-a, k=size)[1] 
ranks_of_indices = tf.nn.top_k(-indices_of_ranks, k=size)[1] 
sess = tf.Session() 
sess.run(ranks_of_indices+1) 
+1

我喜欢这个答案! –