Spec-Zone.ru › TensorFlow 2.9

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 если отрицательные значения предоставляются как вход.

© 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/math/bincount

Spec-Zone.ru

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