Для тензоров более высокой размерности результат имеет ту же форму, что и values, но вдоль указанной оси значения представляют собой индекс отсортированного элемента в соответствующем срезе тензора.
mat = [[30,20,10],
[20,10,30],
[10,30,20]]
indices = tf.argsort(mat)
indices.numpy()
array([[2, 1, 0],
[1, 0, 2],
[0, 2, 1]], dtype=int32)
Если axis=-1, эти индексы можно использовать для сортировки с помощью tf.gather:
tf.math.top_k: частичная сортировка, возвращающая фиксированное количество наибольших значений и соответствующих индексов.
Аргументы
values
Числовой Tensor одномерной или большей размерности.
axis
Ось, вдоль которой выполняется сортировка. По умолчанию используется значение -1, то есть сортировка по последней оси.
direction
Направление сортировки значений ('ASCENDING' или 'DESCENDING').
stable
Если значение равно True, элементы исходного тензора с одинаковыми значениями не будут менять порядок в результате. Нестабильная сортировка пока не реализована, но в конечном итоге станет использоваться по умолчанию из соображений производительности. Если требуется стабильный порядок, для обеспечения совместимости с будущими версиями передайте stable=True.
name
Необязательное имя операции.
Возвращает
Тензор int32 Tensor той же формы, что и values. Индексы, которые упорядочивают каждый срез заданного values вдоль указанной axis.
Вызывает исключения
ValueError
Если axis не является константным скаляром или направление указано неверно.