mindspore.nn.OneHot
- class mindspore.nn.OneHot(axis=-1, depth=1, on_value=1.0, off_value=0.0, dtype=mstype.float32)[source]
Returns a one-hot tensor.
The locations represented by indices in argument indices take value on_value, while all other locations take value off_value.
Note
If the input indices is rank \(N\), the output will have rank \(N+1\). The new axis is created at dimension axis.
If indices is a scalar, the output shape will be a vector of length depth.
If indices is a vector of length features, the output shape will be:
features * depth if axis == -1 depth * features if axis == 0
If indices is a matrix with shape [batch, features], the output shape will be:
batch * features * depth if axis == -1 batch * depth * features if axis == 1 depth * batch * features if axis == 0
- Parameters
axis (int) – Features x depth if axis is -1, depth x features if axis is 0. Default: -1.
depth (int) – A scalar defining the depth of the one hot dimension. Default: 1.
on_value (float) – A scalar defining the value to fill in output[i][j] when indices[j] = i. Default: 1.0.
off_value (float) – A scalar defining the value to fill in output[i][j] when indices[j] != i. Default: 0.0.
dtype (
mindspore.dtype
) – Data type of ‘on_value’ and ‘off_value’, not the data type of indices. Default: mindspore.float32.
- Inputs:
indices (Tensor) - A tensor of indices with data type of int32 or int64. The shape is \((N,*)\) where \(*\) means, any number of additional dimensions.
- Outputs:
Tensor, the one-hot tensor of data type dtype with dimension at axis expanded to depth and filled with on_value and off_value. The dimension of the Outputs is equal to the dimension of the indices plus one.
- Raises
TypeError – If axis or depth is not an int.
TypeError – If dtype of indices is neither int32 nor int64.
ValueError – If axis is not in range [-1, len(indices_shape)].
ValueError – If depth is less than 0.
- Supported Platforms:
Ascend
GPU
CPU
Examples
>>> # 1st sample: add new coordinates at axis 1 >>> net = nn.OneHot(depth=4, axis=1) >>> indices = Tensor([[1, 3], [0, 2]], dtype=mindspore.int32) >>> output = net(indices) >>> print(output) [[[0. 0.] [1. 0.] [0. 0.] [0. 1.]] [[1. 0.] [0. 0.] [0. 1.] [0. 0.]]] >>> # The results are shown below: >>> print(output.shape) (2, 4, 2) >>> # 2nd sample: add new coordinates at axis 0 >>> net = nn.OneHot(depth=4, axis=0) >>> indices = Tensor([[1, 3], [0, 2]], dtype=mindspore.int32) >>> output = net(indices) >>> print(output) [[[0. 0.] [1. 0.]] [[1. 0.] [0. 0.]] [[0. 0.] [0. 1.]] [[0. 1.] [0. 0.]]] >>> # The results are shown below: >>> print(output.shape) (4, 2, 2) >>> # 3rd sample: add new coordinates at the last dimension. >>> net = nn.OneHot(depth=4, axis=-1) >>> indices = Tensor([[1, 3], [0, 2]], dtype=mindspore.int32) >>> output = net(indices) >>> # The results are shown below: >>> print(output) [[[0. 1. 0. 0.] [0. 0. 0. 1.]] [[1. 0. 0. 0.] [0. 0. 1. 0.]]] >>> print(output.shape) (2, 2, 4) >>> indices = Tensor([1, 3, 0, 2], dtype=mindspore.int32) >>> output = net(indices) >>> print(output) [[0. 1. 0. 0.] [0. 0. 0. 1.] [1. 0. 0. 0.] [0. 0. 1. 0.]] >>> print(output.shape) (4, 4)