Spec-Zone.ru › TensorFlow 2.4

tf.math.bincount

Просмотреть исходный код на GitHub

Подсчитывает количество вхождений каждого значения в целочисленном массиве.

tf.math.bincount(
    arr, weights=None, minlength=None, maxlength=None, dtype=tf.dtypes.int32,
    name=None, axis=None, binary_output=False
)

Если minlength и maxlength не заданы, возвращает вектор длиной tf.reduce_max(arr) + 1, если arr не пусто, и длиной 0 в противном случае. Если weights не None, то элемент i выходного массива хранит сумму значений в weights по всем индексам, где соответствующее значение в arr равно i.

values = tf.constant([1,1,2,3,2,4,4,5])
tf.math.bincount(values) #[0 2 2 1 2 1]

Длина вектора = Максимальный элемент в векторе values равен 5. Добавление 1, что равно 6, даст длину вектора.

Каждое значение в выходном массиве указывает количество вхождений соответствующего индекса. Здесь, индекс 1 в выходном массиве имеет значение 2. Это указывает, что значение 1 встречается дважды в values.

values = tf.constant([1,1,2,3,2,4,4,5])
weights = tf.constant([1,5,0,1,0,5,4,5])
tf.math.bincount(values, weights=weights) #[0 6 0 1 9 5]

Значение ячейки будет увеличиваться на соответствующее значение веса, а не на 1. Здесь, индекс 1 в выходном массиве имеет значение 6. Это сумма весов, соответствующих значению в values.

Подсчёт по определённой оси

Этот пример принимает двумерный вход и возвращает Tensor с подсчётом по каждой выборке.

data = np.array([[1, 2, 3, 0], [0, 0, 1, 2]], dtype=np.int32)
tf.math.bincount(data, axis=-1)
<tf.Tensor: shape=(2, 4), dtype=int32, numpy=
  array([[1, 1, 1, 1],
         [2, 1, 1, 0]], dtype=int32)>

Подсчёт с binary_output

Этот пример возвращает двоичный результат вместо подсчёта вхождений.

data = np.array([[1, 2, 3, 0], [0, 0, 1, 2]], dtype=np.int32)
tf.math.bincount(data, axis=-1, binary_output=True)
<tf.Tensor: shape=(2, 4), dtype=int32, numpy=
  array([[1, 1, 1, 1],
         [1, 1, 1, 0]], dtype=int32)>
Аргументы
arr Tensor, RaggedTensor или SparseTensor, значения которых должны быть подсчитаны. Эти тензоры должны иметь ранг 2, если axis=-1.
weights Если не None, должен иметь такую же форму, как arr. Для каждого значения в arr, ячейка будет увеличиваться на соответствующее значение веса, а не на 1.
minlength Если задано, гарантирует, что выход имеет длину как минимум minlength, добавляя нули в конец при необходимости.
maxlength Если задано, пропускает значения в arr, равные или большие maxlength, гарантируя, что выход имеет длину не более maxlength.
dtype Если weights равно None, определяет тип выходных ячеек.
name Имя области для операций (необязательно).
axis Ось для среза. Оси на и ниже axis будут сглажены перед подсчётом ячеек. В настоящее время поддерживаются только 0, и -1. Если None, все оси будут сглажены (эквивалентно передаче 0).
binary_output Если True, эта операция вернёт 1 вместо количества появлений маркера (эквивалентно one_hot + reduce_any вместо one_hot + reduce_add). По умолчанию False.
Возвращаемое значение
Вектор с таким же типом данных, как weights или заданный dtype. Значения ячеек.
Исключения
InvalidArgumentError если в качестве входных данных предоставлены отрицательные значения.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/math/bincount

Spec-Zone.ru

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