You could draw the data and target separately and then index them in __getitem__:
rand_idx = torch.randperm(len(Train.data))[:10]
data = Train.data[rand_idx]            
target = torch.tensor(Train.targets)[rand_idx]

However, the usual approach would be to shuffle the indices, which will be passed to __getitem__(self, index), so that you don’t have to shuffle it manually in your __init__.