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)>
| Args | |
|---|---|
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. |
| Returns | |
|---|---|
Вектор с тем же типом данных, что и weights или заданным dtype. Значения ячеек. |
| Raises | |
|---|---|
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.3/api_docs/python/tf/math/bincount