I see, it’s more clear now: PyTorch is not doing data augmentation within the same epoch but across multiple epochs.
So indeed I could reimplement all my functions as regular “random transforms” and train on more epochs to achieve similar results.
Then in that case I rework my train/validation routines and use


a train DataSet with transforms.


a validation DataSet with only ToTensor and needed scaling/cropping.
Both pointing to the same CSV source.


Split the indices with a reworked train_valid_split function.


Similar to what I posted use 2 SubsetRandomSamplers and 2 DataLoaders on their respective DataSets.