one-hot实现的几种方式
方式一:最简单的方式,可以一行代码搞定
import numpy as np
import torch
'one-hot使用方法:最简单'
num_classes = 10
arr = [1, 3, 4, 5]
one_hots = np.eye(num_classes)[arr]
print(one_hots)
arr1 = torch.LongTensor(arr)
print(arr1)
one_hots = torch.eye(num_classes)[arr]
print(one_hots)
arr2 = np.array(arr)
print(arr2)
one_hots = np.eye(num_classes)[arr]
print(one_hots)
方式二
'one-hot使用方法二:'
one_hot = np.zeros([len(arr2), num_classes])
for i, j in enumerate(arr):
one_hot[i][int(j)] = 1
print(one_hot)
方式三
'one-hot使用方式三:'
num_classes = 10
y = torch.tensor([1, 3, 4, 5])
one_hot = torch.zeros(y.shape[0], num_classes).scatter_(1, y.reshape(-1, 1), 1)
print(one_hot)
方式四:白嫖的方式【最爽】
from torch.nn.functional import one_hot
'pytorch创造one_hot'
num_classes = 10
y = torch.tensor([1, 3, 4, 5])
one_hot = torch.zeros(y.shape[0], num_classes).scatter_(1, y.reshape(-1, 1), 1)
one_hot = one_hot.scatter_(y)
print(one_hot)