BrokenPipeError: [Errno 32] Broken pipe 基于pytorch的训练 num_worker参数理解

BrokenPipeError: [Errno 32] Broken pipe 解决

BrokenPipeError: [Errno 32] Broken pipe 基于pytorch的训练 num_worker参数理解_第1张图片

原因:
在训练过程中,设置的num_workers过大
BrokenPipeError: [Errno 32] Broken pipe 基于pytorch的训练 num_worker参数理解_第2张图片
修改为 num_workers=0 即可。

num_worker参数理解

下面作者讲的很详细,大致就是设置参数大的话,例如参数为10,就可以有10个线程来加载batch到内存。当然参数设置过大,而自己内存不够的情况下,就会出现线程管道破裂,即broken pipe ,所以一般默然设置为0.
当然:如果num_worker设为0,意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度更慢。
具体参考以下链接。
参考:pytorch中num_workers详解

你可能感兴趣的:(坑)