如何将pytorch中的标签转换为onehot
如何为如何将pytorch中的标签转换为onehot,pytorch,torch,mnist,one-hot-encoding,torchvision,Pytorch,Torch,Mnist,One Hot Encoding,Torchvision,如何为target\u transform提供将标签更改为onehot编码的函数 例如,torchvision中的MNIST数据集: train_dataset = torchvision.datasets.MNIST(root='./mnist_data/', train=True, download=True,
target\u transform
提供将标签更改为onehot编码的函数
例如,torchvision中的MNIST数据集:
train_dataset = torchvision.datasets.MNIST(root='./mnist_data/',
train=True,
download=True,
transform=train_transform,
target_transform=<????>)
train_dataset=torchvision.datasets.MNIST(root='./MNIST_data/”,
火车=真的,
下载=真,
transform=训练_transform,
目标_变换=)
尝试了
F.onehot()
,但没有成功。我就是这样实现的。不确定是否有更干净的方法
train_dataset=torchvision.datasets.MNIST(root='./data/',train=True,
transform=torchvision.transforms.ToTensor(),
target_transform=torchvision.transforms.Compose([
lambda x:torch.LongTensor([x]),#或者仅仅是torch.tensor
lambda x:F.one_hot(x,10)]),
下载=真)
- 它需要是一个
?i、 e.int64索引张量
- 无法使用torchvision.ToSensor,因为它不是图像
- 此外,
和torch.LongTensor
在torch.tensor
输入时表现不同int
- 需要提供课程数量
train_dataset=torchvision.datasets.MNIST(root='./MNIST_data/',train=True,
下载=True,转换=train\u转换,
目标_变换=Lambda(Lambda y:torch.zero(10,dtype=torch.float).scatter_0,torch.tensor(y,value=1))
- 它首先创建一个大小为10的零张量(数据集中标签的数量) 并调用scatter_u,它在标签y给出的索引上指定一个值=1
torch.nn.functional.one\u hot(torch.tensor(2,5))。type(torch.cuda.FloatTensor)