Maybe simply replacing the original attribute by the new attribute can be an effective way:
#load dataset
train_set = MyMNIST(root=self.root, train=True, transform=transform, download=False)

# subset training set
index_sub = np.random.choice(np.arange(len(train_set)), 10000, replace=False)

#replacing attribute
train_set.data = train_set.data[index_sub]
train_set.targets = train_set.targets[index_sub]
train_set.semi_targets = train_set.semi_targets[index_sub]