This would be what the code example is doing, wouldn’t it?
The Dataset would return a tensor in the shape [crops, channels, height, width], while the DataLoader would add the batch dimension to [batch_size, crops, channels, height, width].
Inside the DataLoader loop you would then flatten it to [batch_size*crops, channels, height, width] and pass it to the model.