tf.math.top_k
Находит значения и индексы k наибольших элементов по последнему измерению.
tf.math.top_k(
input,
k=1,
sorted=True,
index_type=tf.dtypes.int32,
name=None
)
Используется в блокнотах
| Используется в учебниках |
|---|
Если входной параметр является вектором (ранг=1), находит k наибольших элементов в векторе и выводит их значения и индексы как векторы. Таким образом, values[j] является j-м по величине элементом в input, а его индекс равен indices[j].
result = tf.math.top_k([1, 2, 98, 1, 1, 99, 3, 1, 3, 96, 4, 1],
k=3)
result.values.numpy()
array([99, 98, 96], dtype=int32)
result.indices.numpy()
array([5, 2, 9], dtype=int32)Для матриц (соответственно, для входных данных более высокого ранга) вычисляет k наибольших элементов в каждой строке (соответственно, в векторе по последнему измерению). Таким образом,
input = tf.random.normal(shape=(3,4,5,6)) k = 2 values, indices = tf.math.top_k(input, k=k) values.shape.as_list() [3, 4, 5, 2] values.shape == indices.shape == input.shape[:-1] + [k] True
Индексы могут быть использованы для gather из тензора, форма которого соответствует input.
gathered_values = tf.gather(input, indices, batch_dims=-1) assert tf.reduce_all(gathered_values == values)
Если два элемента равны, элемент с меньшим индексом появляется первым.
result = tf.math.top_k([1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0],
k=3)
result.indices.numpy()
array([0, 1, 3], dtype=int32)По умолчанию индексы возвращаются как тип int32, однако это можно изменить, указав index_type.
result = tf.math.top_k([1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0],
k=3, index_type=tf.int16)
result.indices.numpy()
array([0, 1, 3], dtype=int16)| Аргументы | |
|---|---|
input | 1-мерный или многомерный Tensor с последним измерением не менее k. |
k | 0-мерный Tensor типа int16, int32 или int64. Количество наибольших элементов для поиска по последнему измерению (по каждой строке для матриц). |
sorted | Если истинно, результирующие k элементы будут отсортированы по значениям в порядке убывания. |
index_type | Необязательный тип данных для выходных индексов. |
name | Необязательное имя операции. |
| Возвращаемые значения | |
|---|---|
| Кортеж с двумя именованными полями: | |
values | k наибольшие элементы по каждому слайсу последнего измерения. |
indices | Индексы values внутри последнего измерения input. |
© 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/api_docs/python/tf/math/top_k