基于张量流中的两列对张量进行排序

时间:2018-03-21 05:58:58

标签: python tensorflow

是否可以根据Tensorflow中两列中的值对张量进行排序?

例如,假设我有以下张量。

[[1,2,3]
[2,3,5]
[1,4,6]
[2,2,1]
[0,4,2]]

我愿意 喜欢它首先根据第一列然后第二列进行排序。排序后,它将如下所示。

[[0,4,2]
[1,2,3]
[1,4,6]
[2,2,1]
[2,3,5]]

有没有办法用tensorflow实现这个目的?我可以根据一个列进行排序。但基于两列的排序对我来说是一个问题。请任何人帮忙吗?

1 个答案:

答案 0 :(得分:1)

一种非常天真的方法,

import tensorflow as tf

a = tf.constant([[1, 2, 3],
                 [2, 3, 5],
                 [1, 4, 6],
                 [2, 2, 1],
                 [0, 4, 2]])

# b = a[:0]*10 + a[:1]*1 -- > (e.g 1*10+2*1 =12)
b = tf.add(tf.slice(a, [0, 0], [-1, 1]) * 10, tf.slice(a, [0, 1], [-1, 1]))

reordered = tf.gather(a, tf.nn.top_k(b[:, 0], k=5, sorted=False).indices)
reordered = tf.reverse(reordered, axis=[0])

with tf.Session() as sess:
    result = sess.run(reordered)
    print(result)

希望这有帮助。