BrokenPipeError: [Errno 32] Broken pipe
解决方案:
修改调用torch.utils.data.DataLoader()函数时的 num_workers 参数。该参数官方API解释如下:
num_workers (int, optional) – how many subprocesses to use for data loading. 0
means that the data will be loaded in the main process. (default: 0)
该参数是指在进行数据集加载时,启用的线程数目。截止当前2018年5月9日11:15:52,如官方未解决该BUG,则可以通过修改num_works参数为 0 ,只启用一个主进程加载数据集,避免在windows使用多线程即可。
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce an executable.
从错误信息可以看出进程池相关代码应该放在if name == 'main’下面,代码修改如下:
本文介绍了一个常见的PyTorch DataLoader错误“BrokenPipeError”,并提供了详细的解决方案。通过调整DataLoader函数的num_workers参数至0,可以避免在Windows环境下使用多线程导致的数据加载错误。
1078

被折叠的 条评论
为什么被折叠?



