【发布时间】:2020-05-22 20:46:05
【问题描述】:
我是 PyTorch 的初学者,我只是在尝试一些示例 on this webpage。但由于此错误,我似乎无法运行“super_resolution”程序:
RuntimeError: DataLoader worker (pid(s) 15332) exited unexpectedly
我在网上搜索了一下,发现有人建议将num_workers设置为0。但如果我这样做,程序会告诉我内存不足(CPU 或 GPU):
RuntimeError: [enforce fail at ..\c10\core\CPUAllocator.cpp:72] data. DefaultCPUAllocator: not enough memory: you tried to allocate 9663676416 bytes. Buy new RAM!
或
RuntimeError: CUDA out of memory. Tried to allocate 1024.00 MiB (GPU 0; 4.00 GiB total capacity; 2.03 GiB already allocated; 0 bytes free; 2.03 GiB reserved in total by PyTorch)
我该如何解决这个问题?
我在 Win10(64bit) 和 pytorch 1.4.0 上使用 python 3.8。
更完整的错误信息(--cuda 表示使用 GPU,--threads x 表示将x 传递给num_worker 参数):
- 带有命令行参数
--upscale_factor 1 --cuda
File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 761, in _try_get_data
data = self._data_queue.get(timeout=timeout)
File "E:\Python38\lib\multiprocessing\queues.py", line 108, in get
raise Empty
_queue.Empty
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "Z:\super_resolution\main.py", line 81, in <module>
train(epoch)
File "Z:\super_resolution\main.py", line 48, in train
for iteration, batch in enumerate(training_data_loader, 1):
File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 345, in __next__
data = self._next_data()
File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 841, in _next_data
idx, data = self._get_data()
File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 808, in _get_data
success, data = self._try_get_data()
File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 774, in _try_get_data
raise RuntimeError('DataLoader worker (pid(s) {}) exited unexpectedly'.format(pids_str))
RuntimeError: DataLoader worker (pid(s) 16596, 9376, 12756, 9844) exited unexpectedly
- 带有命令行参数
--upscale_factor 1 --cuda --threads 0
File "Z:\super_resolution\main.py", line 81, in <module>
train(epoch)
File "Z:\super_resolution\main.py", line 52, in train
loss = criterion(model(input), target)
File "E:\Python38\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
result = self.forward(*input, **kwargs)
File "Z:\super_resolution\model.py", line 21, in forward
x = self.relu(self.conv2(x))
File "E:\Python38\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
result = self.forward(*input, **kwargs)
File "E:\Python38\lib\site-packages\torch\nn\modules\conv.py", line 345, in forward
return self.conv2d_forward(input, self.weight)
File "E:\Python38\lib\site-packages\torch\nn\modules\conv.py", line 341, in conv2d_forward
return F.conv2d(input, weight, self.bias, self.stride,
RuntimeError: CUDA out of memory. Tried to allocate 1024.00 MiB (GPU 0; 4.00 GiB total capacity; 2.03 GiB already allocated; 954.35 MiB free; 2.03 GiB reserved in total by PyTorch)
【问题讨论】:
标签: python python-3.x pytorch