mindspore.ops.unsorted_segment_max

mindspore.ops.unsorted_segment_max(x, segment_ids, num_segments)[源代码]

沿分段计算输入Tensor的最大值。

unsorted_segment_max的计算过程如下图所示:

../../_images/UnsortedSegmentMax.png
\[\text { output }_i=\text{max}_{j \ldots} \text { data }[j \ldots]\]

\(max\) 返回元素 \(j...\) 中的最大值,其中 \(segment\_ids[j...] == i\)

Note

  • 如果 segment_ids 中不存在segment_id i ,则将使用 x 的数据类型的最小值填充输出 output[i]

  • segment_ids 必须是一个非负Tensor。

参数:

  • x (Tensor) - shape: \((x_1, x_2, ..., x_R)\) 。数据类型支持float16、float32或int32。

  • segment_ids (Tensor) - shape为 \((x_1)\) 的1维张量,值必须是非负数。数据类型支持int32。

  • num_segments (int) - 分段的数量。

返回:

Tensor,若 num_segments 值为 N ,则shape为 \((N, x_2, ..., x_R)\)

异常:

  • TypeError - num_segments 不是int类型。

  • ValueError - segment_ids 的维度不等于1。

支持平台:

Ascend GPU CPU

样例:

>>> from mindspore import Tensor
>>> from mindspore import ops
>>> import numpy as np
>>> x = Tensor(np.array([[1, 2, 3], [4, 5, 6], [4, 2, 1]]).astype(np.float32))
>>> segment_ids = Tensor(np.array([0, 1, 1]).astype(np.int32))
>>> num_segments = 2
>>> output = ops.unsorted_segment_max(x, segment_ids, num_segments)
>>> print(output)
[[1. 2. 3.]
 [4. 5. 6.]]