mindspore.dataset.transforms.OneHot
- class mindspore.dataset.transforms.OneHot(num_classes, smoothing_rate=0.0)[源代码]
对输入标签进行OneHot编码。
对于 shape 为 \((*)\) 的 1 维输入,将返回 shape 为 \((*, num\_classes)\) 的输出,其中输入值对应的索引位置处的元素值为 1 ,其余 位置值为 0 。若指定了标签平滑系数,还将进一步平滑各元素值,增强泛化能力。
- 参数:
num_classes (int) - 标签类别总数。需大于输入标签值的最大值。
smoothing_rate (float,可选) - 标签平滑系数。取值需在[0.0, 1.0]之间。默认值:
0.0
,不进行标签平滑。
- 异常:
TypeError - 当 num_classes 不为int类型。
TypeError - 当 smoothing_rate 不为float类型。
ValueError - 当 smoothing_rate 的取值不在[0.0, 1.0]范围中。
RuntimeError - 输入标签不为int类型。
RuntimeError - 输入标签的维数不为1。
- 支持平台:
CPU
样例:
>>> import numpy as np >>> import mindspore.dataset as ds >>> import mindspore.dataset.transforms as transforms >>> >>> # Use the transform in dataset pipeline mode >>> data = [1, 2, 3, 4, 5, 6, 7, 8] >>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["label"]) >>> >>> # Assume that dataset has 10 classes, thus the label ranges from 0 to 9 >>> onehot_op = transforms.OneHot(num_classes=10) >>> numpy_slices_dataset = numpy_slices_dataset.map(operations=onehot_op, input_columns=["label"]) >>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True): ... print(item["label"].shape, item["label"].dtype) ... break (10,) int64 >>> >>> # Use the transform in eager mode >>> data = np.array([1, 2, 3]) >>> output = transforms.OneHot(num_classes=5, smoothing_rate=0)(data) >>> print(output.shape, output.dtype) (3, 5) int64