在Torch中如何从整数标签列表中创建1-hot张量?

W.P*_*ill 10 indexing torch one-hot-encoding

我有一个整数类标签的字节张量,例如来自MNIST数据集.

 1
 7
 5
[torch.ByteTensor of size 3]
Run Code Online (Sandbox Code Playgroud)

如何使用它来创建1-hot向量的张量?

 1  0  0  0  0  0  0  0  0  0
 0  0  0  0  0  0  1  0  0  0
 0  0  0  0  1  0  0  0  0  0
[torch.DoubleTensor of size 3x10]
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过一个循环来做到这一点,但我想知道是否有任何聪明的Torch索引会在一行中为我提供.

小智 15

indices = torch.LongTensor{1,7,5}:view(-1,1)
one_hot = torch.zeros(3, 10)
one_hot:scatter(2, indices, 1)
Run Code Online (Sandbox Code Playgroud)

您可以scattertorch/torch7 github自述文件中找到该文档(在主分支中).