RuntimeError: DataLoader worker (pid(s) 9528, 8320) exited unexpectedly

25 篇文章 7 订阅

分类目录——Pytorch

关键词:

Data.DataLoadernum_workersbatch

Pytorch在开进行小批量数据下降时开多进程报错

报错内容

RuntimeError: DataLoader worker (pid(s) 9528, 8320) exited unexpectedly

去网上搜教程,说是在loader定义的时候多进程的参数指定的问题,我的loader定义如下

loader = Data.DataLoader(
    dataset=torch_dataset,      # torch TensorDataset format
    batch_size=BATCH_SIZE,      # mini batch size
    shuffle=True,               # 要不要打乱数据 (打乱比较好)
    num_workers=2,              # 多进程来读数据
)

其中num_workers是用来指定开多进程的数量,默认值为0,表示不启用多进程。

网上给出的解决方案是

设置 num_workers=0; 或者

删掉这个属性的设置(也就是取默认值0)

但是这终归是个意淫的解决方式,当遇到大量数据处理时,势必要采用并行的处理方式才是科学高效的。

最终在 这里 找到了解决方案,就是把含有多进程操作的部分放在if __name__ == '__main__'的范围内,在我这里即

if __name__ == '__main__':
    for epoch in range(3):
        for step, (batch_x, batch_y) in enumerate(loader): 
            # 假设这里就是你训练的地方...

里面的loader就是上面定义的loader,指定了多进程的。另外只需要loader的执行部分放在main之内即可,定义部分可以在main内,也可以在main之外

后来我也恍悟,Python中多进程(multiprocessing这个模块包)的内容必须放在if __name__ == '__main__'之内才可以。多线程(threading这个模块包)是没有这项限定的。

  • 21
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
根据引用中提供的方法,解决RuntimeError: DataLoader worker (pid(s) 15912) exited unexpectedly的方法是进行以下操作: 1. 根据引用的提示,找到相关代码的位置,并将函数体里的代码修改为黄线的语句: ```python def get_dataloader_workers(): """Use 4 processes to read the data. Defined in :numref:`sec_fashion_mnist`""" return 0 if sys.platform.startswith('win') else 4 ``` 2. 可以尝试增加num_workers的值,根据引用的建议,适当增加num_workers可以提高DataLoader的并行性,从而减少DataLoader进程crash的可能性。但是要注意不要增加过多,以免过多占用系统资源。 这些操作可能会帮助解决RuntimeError: DataLoader worker (pid(s) 15912) exited unexpectedly的问题。希望能够帮到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [RuntimeError: DataLoader worker (pid(s) 8548, 6916) exited unexpectedly](https://blog.csdn.net/VegetableofDog/article/details/124726339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [RuntimeError: DataLoader worker (pid(s) 17016, 18312) exited unexpectedly](https://blog.csdn.net/weixin_44575717/article/details/129100184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BBJG_001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值