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