tf.math.bincount
Stay organized with collections
Save and categorize content based on your preferences.
Counts the number of occurrences of each value in an integer array.
tf.math.bincount(
arr,
weights=None,
minlength=None,
maxlength=None,
dtype=tf.dtypes.int32
,
name=None,
axis=None,
binary_output=False
)
If minlength
and maxlength
are not given, returns a vector with length
tf.reduce_max(arr) + 1
if arr
is non-empty, and length 0 otherwise.
If weights
are non-None, then index i
of the output stores the sum of the
value in weights
at each index where the corresponding value in arr
is
i
.
values = tf.constant([1,1,2,3,2,4,4,5])
tf.math.bincount(values) #[0 2 2 1 2 1]
Vector length = Maximum element in vector values
is 5. Adding 1, which is 6
will be the vector length.
Each bin value in the output indicates number of occurrences of the particular
index. Here, index 1 in output has a value 2. This indicates value 1 occurs
two times in 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]
Bin will be incremented by the corresponding weight instead of 1.
Here, index 1 in output has a value 6. This is the summation of weights
corresponding to the value in values
.
Bin-counting on a certain axis
This example takes a 2 dimensional input and returns a Tensor
with
bincounting on each sample.
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)>
Bin-counting with binary_output
This example gives binary output instead of counting the occurrence.
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
|
A Tensor, RaggedTensor, or SparseTensor whose values should be counted.
These tensors must have a rank of 2 if axis=-1 .
|
weights
|
If non-None, must be the same shape as arr. For each value in
arr , the bin will be incremented by the corresponding weight instead of
1.
|
minlength
|
If given, ensures the output has length at least minlength ,
padding with zeros at the end if necessary.
|
maxlength
|
If given, skips values in arr that are equal or greater than
maxlength , ensuring that the output has length at most maxlength .
|
dtype
|
If weights is None, determines the type of the output bins.
|
name
|
A name scope for the associated operations (optional).
|
axis
|
The axis to slice over. Axes at and below axis will be flattened
before bin counting. Currently, only 0 , and -1 are supported. If None,
all axes will be flattened (identical to passing 0 ).
|
binary_output
|
If True, this op will output 1 instead of the number of times
a token appears (equivalent to one_hot + reduce_any instead of one_hot +
reduce_add). Defaults to False.
|
Returns |
A vector with the same dtype as weights or the given dtype . The bin
values.
|
Raises |
InvalidArgumentError if negative values are provided as an input.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. Some content is licensed under the numpy license.
Last updated 2023-10-06 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-10-06 UTC."],[],[],null,["# tf.math.bincount\n\n\u003cbr /\u003e\n\n|-------------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.13.1/tensorflow/python/ops/bincount_ops.py#L31-L222) |\n\nCounts the number of occurrences of each value in an integer array. \n\n tf.math.bincount(\n arr,\n weights=None,\n minlength=None,\n maxlength=None,\n dtype=../../tf/dtypes#int32,\n name=None,\n axis=None,\n binary_output=False\n )\n\nIf `minlength` and `maxlength` are not given, returns a vector with length\n`tf.reduce_max(arr) + 1` if `arr` is non-empty, and length 0 otherwise.\nIf `weights` are non-None, then index `i` of the output stores the sum of the\nvalue in `weights` at each index where the corresponding value in `arr` is\n`i`. \n\n values = tf.constant([1,1,2,3,2,4,4,5])\n tf.math.bincount(values) #[0 2 2 1 2 1]\n\nVector length = Maximum element in vector `values` is 5. Adding 1, which is 6\nwill be the vector length.\n\nEach bin value in the output indicates number of occurrences of the particular\nindex. Here, index 1 in output has a value 2. This indicates value 1 occurs\ntwo times in `values`. \n\n values = tf.constant([1,1,2,3,2,4,4,5])\n weights = tf.constant([1,5,0,1,0,5,4,5])\n tf.math.bincount(values, weights=weights) #[0 6 0 1 9 5]\n\nBin will be incremented by the corresponding weight instead of 1.\nHere, index 1 in output has a value 6. This is the summation of weights\ncorresponding to the value in `values`.\n\n**Bin-counting on a certain axis**\n\nThis example takes a 2 dimensional input and returns a `Tensor` with\nbincounting on each sample. \n\n data = np.array([[1, 2, 3, 0], [0, 0, 1, 2]], dtype=np.int32)\n tf.math.bincount(data, axis=-1)\n \u003ctf.Tensor: shape=(2, 4), dtype=int32, numpy=\n array([[1, 1, 1, 1],\n [2, 1, 1, 0]], dtype=int32)\u003e\n\n**Bin-counting with binary_output**\n\nThis example gives binary output instead of counting the occurrence. \n\n data = np.array([[1, 2, 3, 0], [0, 0, 1, 2]], dtype=np.int32)\n tf.math.bincount(data, axis=-1, binary_output=True)\n \u003ctf.Tensor: shape=(2, 4), dtype=int32, numpy=\n array([[1, 1, 1, 1],\n [1, 1, 1, 0]], dtype=int32)\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `arr` | A Tensor, RaggedTensor, or SparseTensor whose values should be counted. These tensors must have a rank of 2 if `axis=-1`. |\n| `weights` | If non-None, must be the same shape as arr. For each value in `arr`, the bin will be incremented by the corresponding weight instead of 1. |\n| `minlength` | If given, ensures the output has length at least `minlength`, padding with zeros at the end if necessary. |\n| `maxlength` | If given, skips values in `arr` that are equal or greater than `maxlength`, ensuring that the output has length at most `maxlength`. |\n| `dtype` | If `weights` is None, determines the type of the output bins. |\n| `name` | A name scope for the associated operations (optional). |\n| `axis` | The axis to slice over. Axes at and below `axis` will be flattened before bin counting. Currently, only `0`, and `-1` are supported. If None, all axes will be flattened (identical to passing `0`). |\n| `binary_output` | If True, this op will output 1 instead of the number of times a token appears (equivalent to one_hot + reduce_any instead of one_hot + reduce_add). Defaults to False. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---|---|\n| A vector with the same dtype as `weights` or the given `dtype`. The bin values. ||\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Raises ------ ||\n|---|---|\n| `InvalidArgumentError` if negative values are provided as an input. ||\n\n\u003cbr /\u003e"]]