mindspore.ops.Unique
- class mindspore.ops.Unique[源代码]
返回输入Tensor的唯一元素以及其对应的每个值的索引。
输出包含Tensor y 和Tensor idx ,格式形如( y , idx )。Tensor y 和Tensor idx 的shape在大多数情况下是不同的,因为Tensor y 可能存在重复,并且Tensor idx 的shape与输入保持一致。
要获得 idx 和 y 之间相同的shape,请参考
mindspore.ops.UniqueWithPad
。- 输入:
input_x (Tensor) - 输入Tensor。shape为 \((N,*)\) ,其中 \(*\) 表示,任意数量的附加维度。
- 输出:
Tuple,形如( y , idx )的Tensor对象, y 与 input_x 的数据类型相同,记录的是 input_x 中的唯一元素。 idx 是一个Tensor,记录的是输入 input_x 元素相对应的索引。
- 异常:
TypeError - 如果 input_x 不是Tensor。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, ops, nn >>> input_x = Tensor(np.array([1, 2, 5, 2]), mindspore.int32) >>> output = ops.Unique()(input_x) >>> print(output) (Tensor(shape=[3], dtype=Int32, value= [1, 2, 5]), Tensor(shape=[4], dtype=Int32, value= [0, 1, 2, 1])) >>> y = output[0] >>> print(y) [1 2 5] >>> idx = output[1] >>> print(idx) [0 1 2 1] >>> # As can be seen from the above, y and idx shape >>> # note that for GPU, this operator must be wrapped inside a model, and executed in graph mode. >>> class UniqueNet(nn.Cell): ... def __init__(self): ... super(UniqueNet, self).__init__() ... self.unique_op = ops.Unique() ... ... def construct(self, x): ... output, indices = self.unique_op(x) ... return output, indices ... >>> input_x = Tensor(np.array([1, 2, 5, 2]), mindspore.int32) >>> net = UniqueNet() >>> output = net(input_x) >>> print(output) (Tensor(shape=[3], dtype=Int32, value= [1, 2, 5]), Tensor(shape=[4], dtype=Int32, value= [0, 1, 2, 1]))