2016-11-24 39 views
13

数组让我们假设我有一个数组中TensorFlow:排序在TensorFlow

[ 0.12300211, 0.51767069, 0.13886075, 0.55363625], 
[ 0.47279349, 0.50432992, 0.48080254, 0.51576483], 
[ 0.84347934, 0.44505221, 0.88839239, 0.48857492], 
[ 0.93650454, 0.43652734, 0.96464157, 0.47236174], .. 

我想解决这阵由第三列。我该怎么做呢?我可以使用tf.nn.top_k()单独对每列进行排序,这给了我排序的值和相应的索引。我可以使用这第三列的索引来重新排列其他索引,但是我找不到重新排序的Op。

假设我想保持在-图形的东西(不Python的恶作剧):

  • 我如何排序/顺序(以上阵列)的TensorFlow?
  • 当我有重新排序的索引时,如何在TensorFlow中重新排序?
+1

如果我明白你的问题,这似乎是一个[未决问题(https://github.com/tensorflow/tensorflow/issues/288)。什么都没有,但更糟的是,最糟糕的是,扁平化和'top_k'。 – erip

+0

如果想按第三列排序,或者用索引列表重新排序,那么这将不起作用。 – TimZaman

+1

您可以使用[tf.gather](https://www.tensorflow.org/versions/r0.11/api_docs/python/array_ops.html#gather)重新排序?可能? – Lunaweaver

回答

7

以下工作:

a = tf.constant(...) # the array 
reordered = tf.gather(a, tf.nn.top_k(a[:, 2], k=4).indices)