AstarLight / Lets_OCR

A repository for OCR, which inlcudes some classical OCR algorithms Pytorch implementation such as CTPN, EAST and CRNN.
MIT License
656 stars 327 forks source link

train.py 中TypeError: can't pickle Environment objects错误? #66

Open joeqincai opened 5 years ago

joeqincai commented 5 years ago

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 不知道是什么原因导致的?求讨论

joeqincai commented 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)以后;

qlw-05 commented 4 years ago

解决了吗?我也遇到了这个问题,求教,求讨论。

qlw-05 commented 4 years ago

查了资料应该是操作系统的问题,在Unix/Linux下,multiprocessing模块封装了fork()调用,是我们不需要关注fork()的细节。由于windows没有fork调用,详情参考https://blog.csdn.net/tpc4289/article/details/79280659。我现在先把Config.py里的data_worker设为0,编程但进程的。有进展在交流。