DataLoaders spawn multiple processes under the hood to load your data in parallel and like the error says, pytorch doesn’t support multiprocessing + CUDA without using torch.multiprocessing.
Why does the convolution/pooling need to be done in the dataloader? You could just do it as the first step in your main process as soon as you get the data from the dataloader.