This operator is similar to the tf.math.unsorted_segment_sum operator.
Instead of computing the sum over segments, it computes the mean of all
entries belonging to a segment such that:
\(output_i = 1/N_i \sum_{j...} data[j...]\) where the sum is over tuples
j... such that segment_ids[j...] == i with \N_i\ being the number of
occurrences of id \i\.
If there is no entry for a given segment ID i, it outputs 0.
If the given segment ID i is negative, the value is dropped and will not
be added to the sum of the segment.
Args
data
A Tensor with floating point or complex dtype.
segment_ids
An integer tensor whose shape is a prefix of data.shape.
The values must be less than num_segments.
The values are always validated to be in range on CPU,
never validated on GPU.
num_segments
An integer scalar Tensor. The number of distinct segment
IDs.
name
A name for the operation (optional).
Returns
A Tensor. Has same shape as data, except for the first segment_ids.rank
dimensions, which are replaced with a single dimension which has size
num_segments.
[null,null,["Last updated 2024-04-26 UTC."],[],[],null,["# tf.math.unsorted_segment_mean\n\n|------------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.16.1/tensorflow/python/ops/math_ops.py#L4472-L4524) |\n\nComputes the mean along segments of a tensor.\n\n#### View aliases\n\n\n**Compat aliases for migration**\n\nSee\n[Migration guide](https://www.tensorflow.org/guide/migrate) for\nmore details.\n\n[`tf.compat.v1.math.unsorted_segment_mean`](https://www.tensorflow.org/api_docs/python/tf/math/unsorted_segment_mean), [`tf.compat.v1.unsorted_segment_mean`](https://www.tensorflow.org/api_docs/python/tf/math/unsorted_segment_mean)\n\n\u003cbr /\u003e\n\n tf.math.unsorted_segment_mean(\n data, segment_ids, num_segments, name=None\n )\n\nRead [the section on\nsegmentation](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/math#about_segmentation)\nfor an explanation of segments.\n\nThis operator is similar to the [`tf.math.unsorted_segment_sum`](../../tf/math/unsorted_segment_sum) operator.\nInstead of computing the sum over segments, it computes the mean of all\nentries belonging to a segment such that:\n\n\\\\(output_i = 1/N_i \\\\sum_{j...} data\\[j...\\]\\\\) where the sum is over tuples\n`j...` such that `segment_ids[j...] == i` with \\\\N_i\\\\ being the number of\noccurrences of id \\\\i\\\\.\n\nIf there is no entry for a given segment ID `i`, it outputs 0.\n\nIf the given segment ID `i` is negative, the value is dropped and will not\nbe added to the sum of the segment.\n| **Caution:** On CPU, values in `segment_ids` are always validated to be less than `num_segments`, and an error is thrown for out-of-bound indices. On GPU, this does not throw an error for out-of-bound indices. On Gpu, out-of-bound indices result in safe but unspecified behavior, which may include ignoring out-of-bound indices or outputting a tensor with a 0 stored in the first dimension of its shape if `num_segments` is 0.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `data` | A `Tensor` with floating point or complex dtype. |\n| `segment_ids` | An integer tensor whose shape is a prefix of `data.shape`. The values must be less than `num_segments`. The values are always validated to be in range on CPU, never validated on GPU. |\n| `num_segments` | An integer scalar `Tensor`. The number of distinct segment IDs. |\n| `name` | A name for the operation (optional). |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---|---|\n| A `Tensor`. Has same shape as data, except for the first `segment_ids.rank` dimensions, which are replaced with a single dimension which has size `num_segments`. ||\n\n\u003cbr /\u003e"]]