torch.unique()功能说明见链接
np.unique()功能说明见链接
torch.unique(A, return_inverse=True)
和np.unique(A, return_inverse=True)
是等价的
这里想补充一点差异,
a, indices = np.unique(A, return_index=True) # 返回新列表元素在旧列表中的位置(下标)
这个功能torch.unique()是没有的,因此考虑另一种实现方式:
def unique(x, dim=0):
unique, inverse, counts = torch.unique(x, dim=dim,
sorted=True, return_inverse=True, return_counts=True)
decimals = torch.arange(inverse.numel(), device=inverse.device) / inverse.numel()
inv_sorted = (inverse+decimals).argsort()
tot_counts = torch.cat((counts.new_zeros(1), counts.cumsum(dim=0)))[:-1]
index = inv_sorted[tot_counts]
index = index.sort().values
return unique, inverse, counts, index
github有专门讨论这个问题的
参考链接