针对tensorflow2.0
(1)tf.sort/tf.argsort函数:排序函数以及排好之后输出对应的索引函数
In [17]: a = tf.random.shuffle(tf.range(5))
In [18]: a
Out[18]: <tf.Tensor: id=45, shape=(5,), dtype=int32, numpy=array([3, 0, 1, 4, 2])>
In [19]: tf.sort(a,direction='DESCENDING')
Out[19]: <tf.Tensor: id=53, shape=(5,), dtype=int32, numpy=array([4, 3, 2, 1, 0])>
In [20]: tf.argsort(a,direction='DESCENDING')
Out[20]: <tf.Tensor: id=63, shape=(5,), dtype=int32, numpy=array([3, 0, 4, 2, 1])>
具体用法:tf.sort(a,direction='DESCENDING')与tf.argsort(a,direction='DESCENDING')相似,其中direction代表排序方向,上市或者下降。
(2)tf.math.top_k()函数:降序排序并返回指定k的数值及索引
In [21]: a = tf.random.uniform([3,3],maxval=10,dtype=tf.int32)
In [22]: a
Out[22]:
<tf.Tensor: id=67, shape=(3, 3), dtype=int32, numpy=
array([[6, 9, 8],
[6, 9, 7],
[2, 0, 4]])>
In [23]: res = tf.math.top_k(a,2)
In [24]: res.indices
Out[24]:
<tf.Tensor: id=70, shape=(3, 2), dtype=int32, numpy=
array([[1, 2],
[1, 2],
[2, 0]])>
In [25]: res.values
Out[25]:
<tf.Tensor: id=69, shape=(3, 2), dtype=int32, numpy=
array([[9, 8],
[9, 7],
[4, 2]])>
定义一个3*3的矩阵a,然后使用math.top_k得到res,具体过程是:对每一行进行降序排序,然后取前两个值以及它的索引作为输出。