2015-08-14 17 views
9

Tamsayı sınıfı etiketlerinin bayt tensörü var, ör. MNIST veri kümesinden.Torch'da tamsayı etiketleri listesinden 1-sıcak tensör nasıl oluşturabilirim?

1 
7 
5 
[torch.ByteTensor of size 3] 

1-sıcak vektörlerin tensörünü oluşturmak için nasıl kullanılır?

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] 

ben bir döngü ile bu yapabileceğini biliyorum ama tek bir satırda benim için alacak herhangi zeki Meşale indeksleme olmadığını merak ediyorum.

cevap

13
indices = torch.LongTensor{1,7,5}:view(-1,1) 
one_hot = torch.zeros(3, 10) 
one_hot:scatter(2, indices, 1) 

Sen (ana branşında) torch/torch7 github readme yılında scatter belgelerine bulabilirsiniz.

2

Alternatif bir yöntem bir kimlik matristen satırları karıştırmak için geçerli:

indicies = torch.LongTensor{1,7,5} 
one_hot = torch.eye(10):index(1, indicies) 

Bu benim fikrim değildi, ben karpathy/char-rnn buldum.