This is how I managed to do it, unfortunately having to convert to numpy arrays in a couple of places:
# y.shape -> torch.Size([32])
# tlabels.shape -> torch.Size([10, 10])

y = tc.Tensor(np.array([np.array(tlabels[lbl]) for lbl in y])).cuda()

# y.shape -> torch.Size([32, 10])

How could this be done using just torch tensor manipulation?