Substitute values in a vector

I have a tensor of N unique target labels, randomly selected from [0,R], where N<R. I would like to transform the labels to [0,N]. Is there a function available for this target transform? e.g. input vector: [12, 6, 4, 5, 3, 12, 4] → transformed vector : [4, 3, 1, 2, 0, 4, 1]

unique with return_inverse=True would yield the desired result:

x = torch.tensor([12, 6, 4, 5, 3, 12, 4])
x.unique(return_inverse=True)
# > (tensor([ 3,  4,  5,  6, 12]), tensor([4, 3, 1, 2, 0, 4, 1]))
1 Like