2017-07-09 89 views
1

我正試圖在PyTorch張量中找到不同的值。
有沒有一些有效的方法來複制Tensorflow的unique opPyTorch中的唯一張量值

+1

只是以供將來參考 - 有這個功能請求上pytorch的github上,在這裏:https://github.com/pytorch/pytorch/issues/2031 – cleros

回答

4

要做到這一點的最好方法(最簡單的方法)將轉換爲numpy並使用numpy的內置unique函數。像這樣。

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

所以,當你試試吧:

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

我認爲這會起作用,但我寧願避免使用裸體操作,因爲它可能需要太多時間。 無論如何,我認爲這是目前唯一的解決方案,謝謝。 – arosa