返回顶部
首页 > 资讯 > 精选 >pytorch DataLoader的num_workers参数与设置大小的示例分析
  • 689
分享到

pytorch DataLoader的num_workers参数与设置大小的示例分析

2023-06-15 07:06:44 689人浏览 泡泡鱼
摘要

这篇文章主要介绍PyTorch DataLoader的num_workers参数与设置大小的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Q:在给Dataloader设置worker数量(num_worker

这篇文章主要介绍PyTorch DataLoader的num_workers参数与设置大小的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Q:在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的?

train_loader = torch.utils.data.DataLoader(train_dataset,                                               batch_size=batch_size, shuffle=True,                                               num_workers=4)

参数详解:

每次dataloader加载数据时:dataloader一次性创建num_worker个worker,(也可以说dataloader一次性创建num_worker个工作进程,worker也是普通的工作进程),并用batch_sampler将指定batch分配给指定worker,worker将它负责的batch加载进RAM。

然后,dataloader从RAM中找本轮迭代要用的batch,如果找到了,就使用。如果没找到,就要num_worker个worker继续加载batch到内存,直到dataloader在RAM中找到目标batch。一般情况下都是能找到的,因为batch_sampler指定batch时当然优先指定本轮要用的batch。

num_worker设置得大,好处是寻batch速度快,因为下一轮迭代的batch很可能在上一轮/上上一轮...迭代时已经加载好了。坏处是内存开销大,也加重了CPU负担(worker加载数据到RAM的进程是CPU复制的嘛)。num_workers的经验设置值是自己电脑/服务器的CPU核心数,如果CPU很强、RAM也很充足,就可以设置得更大些。

如果num_worker设为0,意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度更慢。

设置大小建议:

Dataloader的num_worker设置多少才合适,这个问题是很难有一个推荐的值。有以下几个建议:

num_workers=0表示只有主进程去加载batch数据,这个可能会是一个瓶颈。

num_workers = 1表示只有一个worker进程用来加载batch数据,而主进程是不参与数据加载的。这样速度也会很慢。

num_workers>0 表示只有指定数量的worker进程去加载数据,主进程不参与。增加num_works也同时会增加cpu内存的消耗。所以num_workers的值依赖于 batch size和机器性能。

一般开始是将num_workers设置为等于计算机上的CPU数量

最好的办法是缓慢增加num_workers,直到训练速度不再提高,就停止增加num_workers的值。

补充:pytorch中Dataloader()中的num_workers设置问题

如果num_workers的值大于0,要在运行的部分放进__main__()函数里,才不会有错:

import numpy as npimport torchfrom torch.autograd import Variableimport torch.nn.functionalimport matplotlib.pyplot as pltimport torch.utils.data as Data  BATCH_SIZE=5 x=torch.linspace(1,10,10)y=torch.linspace(10,1,10)torch_dataset=Data.TensorDataset(x,y)loader=Data.DataLoader(    dataset=torch_dataset,    batch_size=BATCH_SIZE,    shuffle=True,    num_workers=2,)  def main():    for epoch in range(3):        for step,(batch_x,batch_y) in enumerate(loader):            # training....            print('Epoch:',epoch,'| step:',step,'| batch x:',batch_x.numpy(),                  '| batch y:',batch_y.numpy())  if __name__=="__main__":    main()  '''# 下面这样直接运行会报错: for epoch in range(3):     for step,(batch_x,batch_y) in enumerate(loader):         # training....          print('Epoch:',epoch,'| step:',step,'| batch x:',batch_x.numpy(),                  '| batch y:',batch_y.numpy()'''

pytorch的优点

1.PyTorch是相当简洁且高效快速的框架;2.设计追求最少的封装;3.设计符合人类思维,它让用户尽可能地专注于实现自己的想法;4.与Google的Tensorflow类似,FAIR的支持足以确保PyTorch获得持续的开发更新;5.PyTorch作者亲自维护的论坛 供用户交流和求教问题6.入门简单

以上是“pytorch DataLoader的num_workers参数与设置大小的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: pytorch DataLoader的num_workers参数与设置大小的示例分析

本文链接: https://lsjlt.com/news/278412.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • pytorch DataLoader的num_workers参数与设置大小的示例分析
    这篇文章主要介绍pytorch DataLoader的num_workers参数与设置大小的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Q:在给Dataloader设置worker数量(num_worker...
    99+
    2023-06-15
  • pytorch DataLoader的num_workers参数与设置大小详解
    Q:在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的? train_loader = torch....
    99+
    2024-04-02
  • PyTorch dataloader中shuffle=True的示例分析
    小编给大家分享一下PyTorch dataloader中shuffle=True的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对shuffle=True...
    99+
    2023-06-15
  • JVM参数设置的示例分析
    这篇文章主要介绍了JVM参数设置的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的...
    99+
    2023-06-02
  • Elasticsearch参数配置的示例分析
    小编给大家分享一下Elasticsearch参数配置的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Elasticsearch的config文件夹里面有两...
    99+
    2023-06-04
  • SpringBoot文件上传大小设置方式的示例分析
    这篇文章主要介绍SpringBoot文件上传大小设置方式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!文件上传大小设置#文件大小 MB必须大写#  maxFileSize&nb...
    99+
    2023-06-29
  • mysql参数的示例分析
    这篇文章给大家分享的是有关mysql参数的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。慢查询是否开启select @@log_slow_queries; 慢查...
    99+
    2024-04-02
  • pip参数的示例分析
    这篇文章将为大家详细讲解有关pip参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。pip参数解释# pip --help   U...
    99+
    2024-04-02
  • sendEmail-参数的示例分析
    本篇文章给大家分享的是有关sendEmail-参数的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。还在为Linux下没有便捷的邮件程序苦恼,还在为复杂的邮件服务器架设G...
    99+
    2023-06-06
  • 函数参数的示例分析
    这篇文章将为大家详细讲解有关函数参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。函数的参数(实参和形参):形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,...
    99+
    2023-06-15
  • Python中float()函数的参数分析与示例演示
    Python中的float()函数是用来将参数转换为浮点数的内置函数。在实际编程中,我们经常会遇到需要将其他数据类型转换为浮点数的情况,这时就可以使用float()函数来实现。在本文中...
    99+
    2024-04-02
  • SpringBoot随机数设置及参数间引用的示例分析
    这篇文章将为大家详细讲解有关SpringBoot随机数设置及参数间引用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。自定义配置SpringBoot免除了项目中大部分手动配置,可以说,几乎所有的配...
    99+
    2023-06-15
  • SpringBoot与SpringMVC中参数传递的示例分析
    小编给大家分享一下SpringBoot与SpringMVC中参数传递的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:普通参数与基本注解HandlerM...
    99+
    2023-06-20
  • MySQL中query_cache_type参数与使用的示例分析
    这篇文章主要为大家展示了“MySQL中query_cache_type参数与使用的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中query_cache_type参数与使用的示...
    99+
    2023-06-20
  • mySQL表单大小的示例分析
    这篇文章主要介绍了mySQL表单大小的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 这是说的是表单的大小而不是说表格中某项数据存...
    99+
    2024-04-02
  • Spring Boot jar启动时设置环境参数的示例分析
    这篇文章主要介绍Spring Boot jar启动时设置环境参数的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Spring Boot jar 启动时设置环境参数1 摘要通常在使用 Spring Boot 开...
    99+
    2023-06-15
  • JS中函数参数传递与同名参数的示例分析
    这篇文章主要为大家展示了“JS中函数参数传递与同名参数的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS中函数参数传递与同名参数的示例分析”这篇文章吧...
    99+
    2024-04-02
  • Redhat配置nagios参数说明的示例分析
    这篇文章主要为大家展示了“Redhat配置nagios参数说明的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Redhat配置nagios参数说明的示例分析”这篇文章吧。参数说明服务出了...
    99+
    2023-06-16
  • MongoDB中参数限制与阀值的示例分析
    这篇文章主要介绍MongoDB中参数限制与阀值的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、BSON文档BSON文档尺寸:一个document文档最大尺寸为16M;大于...
    99+
    2024-04-02
  • 安装ORACLE时在Linux上设置内核参数的示例分析
    这篇文章给大家分享的是有关安装ORACLE时在Linux上设置内核参数的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰。安...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作