To create the patches you could use nn.Unfold or call unfold directly on the tensor.
The image could be reconstructed using nn.Fold. Note that overlapping areas will be accumulated so you might need to normalize these areas separately.
Once you have the patches you could store them in separate folders and create a custom Dataset to load the patches from each folder using the passed index. Assuming you would like to load all patches into a batch, you should use batch_size=1 in your DataLoader and create the complete batch in your Dataset.__getitem__ method.
Alternatively, you could also load each image completely and create the patches in the __getitem__. This would avoid the previous step of storing the patches separately.