Loading from images always has an advantage, because you can load faster, and also, your memory problem will be solved probably because CSV takes more memory (before tensor initialization).  If I am not mistaken, you could have around(60000) images of (1x33x33) distributed across 20 csv, MNIST has 60000 images of (1x33x33), so I don’t think your dataset is very large. Convert them to images with labels first, then you can have an easier dataloader. Other than that, your network looks fine and so does everything else. Can you retrain the network with this?