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