怎么把tensor数据格式独热编码
时间: 2023-05-30 19:01:59 浏览: 254
可以使用PyTorch中的函数torch.nn.functional.one_hot来进行独热编码。
假设我们有一个大小为(3,4)的张量,其中每个元素的取值范围为0到2:
```
import torch
x = torch.tensor([[0, 1, 2, 1], [2, 0, 1, 2], [1, 2, 0, 0]])
print(x)
```
输出:
```
tensor([[0, 1, 2, 1],
[2, 0, 1, 2],
[1, 2, 0, 0]])
```
我们可以使用torch.nn.functional.one_hot函数将其转换为独热编码:
```
one_hot = torch.nn.functional.one_hot(x)
print(one_hot)
```
输出:
```
tensor([[[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
[0, 1, 0]],
[[0, 0, 1],
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]],
[[0, 1, 0],
[0, 0, 1],
[1, 0, 0],
[1, 0, 0]]])
```
可以看到,张量x中每个元素的取值范围为0到2,因此独热编码的第二个维度长度为3。one_hot的形状为(3,4,3),其中第一个维度是样本数量,第二个维度是每个样本的特征数量,第三个维度是每个特征的取值可能性数量。对于每个元素,独热编码的结果是在第三个维度上只有一个值为1,其余为0的向量。
阅读全文