# tf.raw_ops.UnsortedSegmentMax

Computes the maximum along segments of a tensor.

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.raw_ops.UnsortedSegmentMax`](https://www.tensorflow.org/api_docs/python/tf/raw_ops/UnsortedSegmentMax)

<br />

    tf.raw_ops.UnsortedSegmentMax(
        data, segment_ids, num_segments, name=None
    )

Read
[the section on segmentation](https://tensorflow.org/api_docs/python/tf/math#Segmentation)
for an explanation of segments.

This operator is similar to [`tf.math.unsorted_segment_sum`](https://www.tensorflow.org/versions/r2.14/api_docs/python/tf/math/unsorted_segment_sum),
Instead of computing the sum over segments, it computes the maximum such that:

\\(output_i = \\max_{j...} data\[j...\]\\) where max is over tuples `j...` such
that `segment_ids[j...] == i`.

If the maximum is empty for a given segment ID `i`, it outputs the smallest
possible value for the specific numeric type,
`output[i] = numeric_limits<T>::lowest()`.

If the given segment ID `i` is negative, then the corresponding value is
dropped, and will not be included in the result.

> [!CAUTION]
> **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.

![](https://www.tensorflow.org/images/UnsortedSegmentMax.png)

#### For example:

    c = tf.constant([[1,2,3,4], [5,6,7,8], [4,3,2,1]])
    tf.math.unsorted_segment_max(c, tf.constant([0, 1, 0]), num_segments=2).numpy()
    array([[4, 3, 3, 4],
           [5,  6, 7, 8]], dtype=int32)

<br />

<br />

<br />

| ## Args ||
|---|---|
| `data` | A `Tensor`. Must be one of the following types: `float32`, `float64`, `int32`, `uint8`, `int16`, `int8`, `int64`, `bfloat16`, `uint16`, `half`, `uint32`, `uint64`. |
| `segment_ids` | A `Tensor`. Must be one of the following types: `int32`, `int64`. A tensor whose shape is a prefix of `data.shape`. The values must be less than `num_segments`. <br /> > [!CAUTION] > **Caution:** The values are always validated to be in range on CPU, never validated on GPU. |
| `num_segments` | A `Tensor`. Must be one of the following types: `int32`, `int64`. |
| `name` | A name for the operation (optional). |

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A `Tensor`. Has the same type as `data`. ||

<br />