Spec-Zone.ru › TensorFlow 2.3

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

Spec-Zone.ru

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