mindspore.dataset.transforms.Unique

class mindspore.dataset.transforms.Unique[源代码]

对输入张量进行唯一运算,每次只支持对一个数据列进行变换。

Unique将返回3个Tensor: 运算结果Tensor,索引Tensor,计数Tensor。

  • 运算结果Tensor包含输入张量的所有唯一元素,且和输入张量的顺序是一样的。

  • 索引Tensor包含输入Tensor的每个元素在运算结果中的索引。

  • 计数Tensor包含运算结果Tensor的每个元素的计数。

说明

需要在 batch 操作之后调用该运算。

异常:
  • RuntimeError - 当输入的Tensor具有两列。

支持平台:

CPU

样例:

>>> import numpy as np
>>> import mindspore.dataset as ds
>>> import mindspore.dataset.transforms as transforms
>>>
>>> # Use the transform in dataset pipeline mode
>>> # Data before
>>> # |  x                 |
>>> # +--------------------+
>>> # | [[0,1,2], [1,2,3]] |
>>> # +--------------------+
>>> data = [[[0,1,2], [1,2,3]]]
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["x"])
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms.Unique(),
...                                                 input_columns=["x"],
...                                                 output_columns=["x", "y", "z"])
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
...     print(item["x"].shape, item["y"].shape, item["z"].shape)
...     print(item["x"].dtype, item["y"].dtype, item["z"].dtype)
(4,) (6,) (4,)
int64 int32 int32
>>> # Data after
>>> # |  x      |  y              |z        |
>>> # +---------+-----------------+---------+
>>> # | [0,1,2,3] | [0,1,2,1,2,3] | [1,2,2,1]
>>> # +---------+-----------------+---------+
>>>
>>> # Use the transform in eager mode
>>> data = [[0, -1, -2, -1, 2], [2, -0, 2, 1, -3]]
>>> output = transforms.Unique()(data)
>>> print(output[0].shape, output[1].shape, output[2].shape)
(6,) (10,) (6,)
>>> print(output[0].dtype, output[1].dtype, output[2].dtype)
int64 int32 int32