Open joeqincai opened 5 years ago
for epoch in range(Config.epoch):
train_iter = iter(train_loader)
i = 0
while i < len(train_loader):
for p in net.parameters():
错误出在执行 iter(train_loader)以后;
解决了吗?我也遇到了这个问题,求教,求讨论。
查了资料应该是操作系统的问题,在Unix/Linux下,multiprocessing模块封装了fork()调用,是我们不需要关注fork()的细节。由于windows没有fork调用,详情参考https://blog.csdn.net/tpc4289/article/details/79280659。我现在先把Config.py里的data_worker设为0,编程但进程的。有进展在交流。
Traceback (most recent call last): File "train.py", line 322, in
train_iter = iter(train_loader)
File "D:\Anaconda\AnacondaRunning\lib\site-packages\torch\utils\data\dataloader.py", line 193, in iter
return _DataLoaderIter(self)
File "D:\Anaconda\AnacondaRunning\lib\site-packages\torch\utils\data\dataloader.py", line 469, in init
w.start()
File "D:\Anaconda\AnacondaRunning\lib\multiprocessing\process.py", line 105, in start
self._popen = self._Popen(self)
File "D:\Anaconda\AnacondaRunning\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "D:\Anaconda\AnacondaRunning\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "D:\Anaconda\AnacondaRunning\lib\multiprocessing\popen_spawn_win32.py", line 65, in init
reduction.dump(process_obj, to_child)
File "D:\Anaconda\AnacondaRunning\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
TypeError: can't pickle Environment objects
Traceback (most recent call last):
File "", line 1, in
File "D:\Anaconda\AnacondaRunning\lib\multiprocessing\spawn.py", line 99, in spawn_main
new_handle = reduction.steal_handle(parent_pid, pipe_handle)
File "D:\Anaconda\AnacondaRunning\lib\multiprocessing\reduction.py", line 87, in steal_handle
_winapi.DUPLICATE_SAME_ACCESS | _winapi.DUPLICATE_CLOSE_SOURCE)
PermissionError: [WinError 5] ▒ܾ▒▒▒▒ʡ▒
TypeError: can't pickle Environment objects 不知道是什么原因导致的?求讨论