Spec-Zone.ru › TensorFlow

tf.math.top_k

Находит значения и индексы k наибольших элементов последнего измерения.

Просмотреть псевдонимы

Основные псевдонимы

tf.nn.top_k

Совместимые псевдонимы для миграции

Подробнее см. в руководстве по миграции.

tf.compat.v1.math.top_k, tf.compat.v1.nn.top_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 Тензор Tensor ранга 1 или выше, последнее измерение которого имеет размер не менее k.
k Тензор Tensor ранга 0 типа int16, int32 или int64. Количество наибольших элементов, которые нужно найти вдоль последнего измерения (в каждой строке для матриц).
sorted Если значение равно true, результирующие 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API