BrokenPipeError: [Errno 32] Broken pipe 解决

原因:
在训练过程中,设置的num_workers过大

修改num_workers=0 或者比你原先设定的数字小的数值。
num_worker参数理解
就是设置参数大的话,例如参数为10,就可以有10个线程来加载batch到内存。当然参数设置过大,而自己内存不够的情况下,就会出现线程管道破裂,即broken pipe ,所以一般默然设置为0.
当然:如果num_worker设为0,意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度更慢。
—————————————————————————————————————
原文链接:https://blog.csdn.net/kaxiaokui/article/details/106453605
博客主要介绍了BrokenPipeError: [Errno 32] Broken pipe错误的解决办法,指出训练时设置的num_workers过大易引发该错误,可将其设为0或更小值。同时解释了num_worker参数含义,设为0虽避免错误但加载数据速度会变慢。
1万+

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



