2017-07-09 2 views
1

Je cherche à trouver des valeurs distinctes dans un tenseur PyTorch.
Existe-t-il un moyen efficace de répliquer les unique op de Tensorflow?Valeurs de tenseur uniques dans PyTorch

+1

Juste pour référence future - il y a une demande de fonctionnalité pour cela sur github de pytorch, ici: https://github.com/pytorch/pytorch/issues/2031 – cleros

Répondre

4

La meilleure façon (moyen le plus simple) de le faire serait de convertir en numpy et utiliser la fonction intégrée de unique numpy. Ainsi.

def unique(tensor1d): 
    t, idx = np.unique(tensor1d.numpy(), return_inverse=True) 
    return torch.from_numpy(t), torch.from_numpy(idx) 

Donc, quand vous essayez:

t, idx = unique(torch.LongTensor([1, 1, 2, 4, 4, 4, 7, 8, 8])) 
# t --> [1, 2, 4, 7, 8] 
# idx --> [0, 0, 1, 2, 2, 2, 3, 4, 4] 
+0

Je pense que cela fonctionnera mais je préférerais éviter les opérations numpy car cela pourrait prendre trop de temps. En tout cas, je pense que c'est la seule solution maintenant, merci. – arosa