完美解决pytorch多线程问题:Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing

在pytorch,dataloader里设置了num_workers > 1的时候, 会出现这个错误。

一般网上RuntimeError: Cannot re-initialize CUDA in forked subprocess解决方法之一_NLOS的博客-CSDN博客 解决方法,加上一行设定。

然而,我这里如果加上这行代码,会导致代码卡死在dataloader里面。

后面发现,代码里面设定了这样的几行。

if cuda:
     torch.set_default_tensor_type('torch.cuda.FloatTensor')
else:
     torch.set_default_tensor_type('torch.FloatTensor')

导致了,在dataloader的时候,tensor就会被设定为cuda上的变量,多线程的时候就会出问题,当注释掉这几行之后,就不会报错了。

你可能感兴趣的:(深度学习,调参,pytorch,深度学习)