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

BrokenPipeError: [Errno 32] Broken pipe 解决

原因:

BrokenPipeError: [Errno 32] Broken pipe 基于pytorch的训练 num_worker参数理解_第1张图片
在训练过程中,设置的num_workers过大,yolov里面是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,人工智能,python)