2016-07-21 5 views
1

Вопрос

Hello! Есть ли способ изменить Тензор в ранжированную версию себя без использования eval?TensorFlow: Как оценивать тензор?

Например, [6, 4, 5] -> [3, 1, 2]?

Контекст

Я заинтересован в использовании ранговой корреляции как функция стоимости, и мой Bandaid решение было использовать session.run (тензор), чтобы получить значение Numpy, а затем изменить что для ранговой корреляции ,

Вопрос до сих пор состоял в том, что веса и смещения не меняются во время обучения, что позволяет предположить, что TensorFlow не вычисляет значимый градиент.

Я изменил скорость обучения между несколькими значениями между (500 и 3е-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

Мне нравится этот ответ! –

Смежные вопросы