Spec-Zone.ru › TensorFlow 2.9

tf.sparse.bincount

Подсчёт числа появлений целого значения в тензоре.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.sparse.bincount

tf.sparse.bincount(
    values,
    weights=None,
    axis=0,
    minlength=None,
    maxlength=None,
    binary_output=False,
    name=None
)

Этот оператор принимает N-мерный Tensor, RaggedTensor, или SparseTensor, и возвращает N-мерный int64 SparseTensor, где элемент [i0...i[axis], j] содержит число появлений значения j в срезе [i0...i[axis], :] тензора входных данных. В настоящее время поддерживаются только N=0 и N=-1.

Аргументы
values Тензор, RaggedTensor или SparseTensor, значения которого должны быть подсчитаны. Эти тензоры должны иметь ранг 2, если axis=-1.
weights Если не None, должен иметь такую же форму, как arr. Для каждого значения в value, ячейка будет увеличена на соответствующее весовое значение, а не на 1.
axis Ось для срезки. Оси с индексами от и ниже axis будут сглажены перед подсчётом ячеек. В настоящее время поддерживаются только 0, и -1. Если None, все оси будут сглажены (что эквивалентно передаче 0).
minlength Если указано, гарантирует, что выходная длина не меньше minlength, дополняя нулями в конце при необходимости.
maxlength Если указано, пропускает значения в values, которые равны или больше maxlength, гарантируя, что выходная длина не больше maxlength.
binary_output Если True, этот оператор выведет 1 вместо числа появлений токена (эквивалентно one_hot + reduce_any вместо one_hot + reduce_add). По умолчанию False.
name Имя этого оператора.
Возвращаемые значения
SparseTensor с output.shape = values.shape[:axis] + [N], где N -
  • maxlength (если задано);
  • minlength (если задано, и minlength > reduce_max(values));
  • 0 (если values пусто);
  • reduce_max(values) + 1 в противном случае.

Примеры:

Подсчёт ячеек для каждого элемента в отдельных группах

В этом примере входные данные (которыми могут быть Tensor, RaggedTensor или SparseTensor) преобразуются в SparseTensor, где значение (i, j) равно количеству появлений значения j в группе i.

data = np.array([[10, 20, 30, 20], [11, 101, 11, 10001]], dtype=np.int64)
output = tf.sparse.bincount(data, axis=-1)
print(output)
SparseTensor(indices=tf.Tensor(
[[    0    10]
 [    0    20]
 [    0    30]
 [    1    11]
 [    1   101]
 [    1 10001]], shape=(6, 2), dtype=int64),
 values=tf.Tensor([1 2 1 2 1 1], shape=(6,), dtype=int64),
 dense_shape=tf.Tensor([    2 10002], shape=(2,), dtype=int64))

Подсчёт ячеек с заданной формой выходного тензора

В этом примере входные данные (которыми могут быть Tensor, RaggedTensor или SparseTensor) преобразуются в SparseTensor, где значение (i, j) равно количеству появлений значения j в группе i. Однако все значения j, превышающие 'maxlength', игнорируются. Форма dense_shape выходного SparseTensor установлена в 'minlength'. Обратите внимание, что, хотя входные данные идентичны предыдущему примеру, значение '10001' в элементе группы 2 отброшено, а форма dense установлена как [2, 500], а не [2,10002] или [2, 102].

minlength = maxlength = 500
data = np.array([[10, 20, 30, 20], [11, 101, 11, 10001]], dtype=np.int64)
output = tf.sparse.bincount(
   data, axis=-1, minlength=minlength, maxlength=maxlength)
print(output)
SparseTensor(indices=tf.Tensor(
[[  0  10]
 [  0  20]
 [  0  30]
 [  1  11]
 [  1 101]], shape=(5, 2), dtype=int64),
 values=tf.Tensor([1 2 1 2 1], shape=(5,), dtype=int64),
 dense_shape=tf.Tensor([  2 500], shape=(2,), dtype=int64))

Бинарный подсчёт ячеек

В этом примере входные данные (которые могут быть тензором, RaggedTensor или SparseTensor) преобразуются в SparseTensor, где (i, j) равно 1, если значение j появляется в группе i хотя бы один раз, и 0 в противном случае. Обратите внимание, что, хотя некоторые значения (например, 20 в группе 1 и 11 в группе 2) встречаются более одного раза, значения в тензоре 'values' составляют все 1.

data = np.array([[10, 20, 30, 20], [11, 101, 11, 10001]], dtype=np.int64)
output = tf.sparse.bincount(data, binary_output=True, axis=-1)
print(output)
SparseTensor(indices=tf.Tensor(
[[    0    10]
 [    0    20]
 [    0    30]
 [    1    11]
 [    1   101]
 [    1 10001]], shape=(6, 2), dtype=int64),
 values=tf.Tensor([1 1 1 1 1 1], shape=(6,), dtype=int64),
 dense_shape=tf.Tensor([    2 10002], shape=(2,), dtype=int64))

Подсчёт ячеек с весами

В этом примере используются два входных тензора — тензор значений и тензор весов. Эти тензоры должны иметь одинаковую форму и те же разделы строк или индексы в случае RaggedTensors или SparseTensors. При выполнении подсчёта с весами оператор выдаст SparseTensor, где значение (i, j) равно сумме значений в тензоре весов в группе i, в местах, где тензор значений имеет значение j. В этом случае тип выходного тензора совпадает с типом тензора весов.

data = np.array([[10, 20, 30, 20], [11, 101, 11, 10001]], dtype=np.int64)
weights = [[2, 0.25, 15, 0.5], [2, 17, 3, 0.9]]
output = tf.sparse.bincount(data, weights=weights, axis=-1)
print(output)
SparseTensor(indices=tf.Tensor(
[[    0    10]
 [    0    20]
 [    0    30]
 [    1    11]
 [    1   101]
 [    1 10001]], shape=(6, 2), dtype=int64),
 values=tf.Tensor([2. 0.75 15. 5. 17. 0.9], shape=(6,), dtype=float32),
 dense_shape=tf.Tensor([    2 10002], shape=(2,), dtype=int64))

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

Spec-Zone.ru

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