2016-07-21 174 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

我喜歡這個答案! –