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