TensorFlow:如何对张量进行排名?

Rya*_* K. 3 tensorflow

你好!有没有办法在不使用eval的情况下将Tensor修改为自己的排名版本?

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

上下文

我有兴趣使用秩相关作为成本函数,我的bandaid解决方案是使用session.run(tensor)来获取numpy值,然后修改它以进行排名相关.

迄今为止的问题是在训练期间权重和偏差没有变化,这使我假设TensorFlow没有计算出有意义的梯度.

我在(500和3e-8)之间的多个值之间改变了我的学习率,看看是不是问题.没有运气,重量和偏见保持不变.

Yar*_*tov 6

您可以查看第二个输出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)
Run Code Online (Sandbox Code Playgroud)