tf.argsort
| View source on GitHub |
Возвращает индексы тензора, которые дают его отсортированный порядок вдоль оси.
tf.argsort(
values, axis=-1, direction='ASCENDING', stable=False, name=None
)
values = [1, 10, 26.9, 2.8, 166.32, 62.3] sort_order = tf.argsort(values) sort_order.numpy() array([0, 3, 1, 2, 5, 4], dtype=int32)
Для одномерного тензора:
sorted = tf.gather(values, sort_order) assert tf.reduce_all(sorted == tf.sort(values))
Для тензоров более высокой размерности вывод имеет такую же форму, как 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.gather(mat, indices, batch_dims=-1).numpy()
array([[10, 20, 30],
[10, 20, 30],
[10, 20, 30]], dtype=int32)
См. также:
-
tf.sort: Сортировка вдоль оси. -
tf.math.top_k: Частичная сортировка, возвращающая фиксированное количество верхних значений и соответствующих индексов.
| Аргументы | |
|---|---|
values | 1-мерный или многомерный численный Tensor. |
axis | Ось, вдоль которой должна происходить сортировка. По умолчанию -1, что сортирует последнюю ось. |
direction | Направление сортировки значений ('ASCENDING' или 'DESCENDING'). |
stable | Если True, равные элементы в исходном тензоре не будут переупорядочены в возвращаемом порядке. Неустойчивая сортировка ещё не реализована, но в конечном итоге станет по умолчанию по причинам производительности. Если вам нужен стабильный порядок, передайте stable=True для обеспечения совместимости в будущем. |
name | Необязательное имя для операции. |
| Возвращаемое значение | |
|---|---|
Целочисленный 32-битный тензор Tensor с той же формой, что и values. Индексы, которые отсортируют каждый срез данного values вдоль заданной axis. |
| Исключения | |
|---|---|
ValueError | Если ось не является константным скаляром или направление некорректно. |
tf.errors.InvalidArgumentError | Если values.dtype не является типом float или int . |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/argsort