No, you should create the “same” dataset three times (for the training dataset, you should add the noise argument, if available).
Each dataset is then passed to Subset with the corresponding indices.
If you are lazily loading the data, you won’t see any performance penalties using this approach.