pytorch报错BrokenPipeError: [Errno 32] Broken pipe

背景:在自己笔记本上跑deep-person-reid 代码
引用参考:参考资料1,参考资料2

1.问题描述:BrokenPipeError: [Errno 32] Broken pipe

2.原因分析:Windows使用DataLoader时设置num_workers的问题。

3.解决方案

两种解决方案,任选一种即可!

方案1
把代码放到if name == “main”:下运行

if name == “main”:
train_dataloader = DataLoader(
dataset=dataset,
batch_size=32,
shuffle=True,
num_workers=8
)
方案2
num_workers不要更改,设置为默认值0。

温馨提示
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)

num_workers参数允许输入的数据类型是整型,表示加载数据的子进程数。也就是使用多进程来加载数据,这样效率更高一些。如果设置为0表示子进程数是0,也就是只用一个主进程来加载数据。数据量不多的情况下,不需要用多进程,因为进程的创建和销毁也花时间。

个人比较推荐方法2,比较好改,在deep-reid项目中找到datamanager.py中改num_workers=0即可,之后可能会爆显存,改batchsize=1,笔记本上主要调试代码用

你可能感兴趣的:(问题解决,python,深度学习,人工智能,神经网络,计算机视觉)