The different outputs are expected, since you are indexing label with itself:
label = torch.tensor([1, 3, 0, 1])
print(label)
> tensor([1, 3, 0, 1])
print([label[x] for x in label])
> [tensor(3), tensor(1), tensor(1), tensor(3)]