技巧-PyTorch中num_works的作用和实验测试

简介

在 PyTorch 中,num_workers 是 DataLoader 中的一个参数,用于控制数据加载的并发线程数。它允许您在数据加载过程中使用多个线程,以提高数据加载的效率。

具体来说,num_workers 参数指定了 DataLoader 在加载数据时将创建的子进程数量。当 num_workers 大于 0 时,DataLoader 会自动利用多个子进程来加速数据加载。这有助于减少主进程的等待时间,并使得数据加载更加并行化。

例如,如果您有一个大型数据集需要加载,而且您的系统有多个 CPU 核心可用,您可以使用 num_workers 参数来提高数据加载的效率。假设您的系统有 4 个 CPU 核心,您可以将 num_workers 设置为 4,以使 DataLoader 在每个核心上创建一个子进程,并行加载数据.

使用方法

下面是一个示例代码,演示了如何使用 num_workers 参数来加速数据加载:

python
import torch  
from torch.utils.data import DataLoader  
from torchvision import datasets, transforms  # 定义数据预处理操作  
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])  # 加载数据集  
train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)  # 创建 DataLoader,设置 num_workers 为 4  
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, num_workers=4)  # 训练模型...

在上述示例中,我们使用 MNIST 数据集,设置了 num_workers 为 4,以利用系统的 4 个 CPU 核心并行加载数据。这将加速数据加载的过程,使得模型训练更加高效。

实测效果

我采用MMDetetion训练,它可以通过钩子函数统计每一iter的数据读取耗时(data_time)和总耗时(time)
当num_works设置为1时打印结果如下:
在这里插入图片描述当num_works设置为4时打印结果如下:
在这里插入图片描述实验效果与理论一致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/180078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之图像分类(十五)DINAT: Dilated Neighborhood Attention Transformer理论精简摘要(二)

Dilated Neighborhood Attention Transformer摘要 局部注意力机制:例如滑动窗口Neighborhood Attention(NA)或Swin Transformer的Shifted Window Self Attention。 优点:尽管在降低自注意力二次复杂性方面表现出色, …

c 数组简介

我们都知道我们可以使用一个变量来存储单个值,但如果我们必须一次存储 100 个值,那么声明和初始化 100 个变量并不是一种优化的处理方式。为此,我们在 C 中使用数组来存储类似数据类型的数据。C中的数组分为一维数组、二维数组和多维数组。数组索引始终从 0 开始,以 size-1…

微服务知识大杂烩

1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可…

C++多线程学习(文章链接汇总)

参考引用 C11 14 17 20 多线程从原理到线程池实战代码运行环境:Visual Studio 2019 C多线程学习(一):C11 多线程快速入门 C多线程学习(二):多线程通信和锁 C多线程学习(三&#xff0…

docker 安装elasticsearch集群

准备工作 docker 安装好,docker compose 安装好编辑好docker-compose.yml文件(本文会提供)生成elastic-certificates.p12密钥,与docker-compose文件在同一个目录(本文会介绍生成方式)准备elasticsearch配置…

Selenium 学习(0.17)——软件测试之测试用例设计方法——白盒测试——逻辑覆盖法(条件覆盖和条件判定覆盖)

条件覆盖 设计测试用例,使每个判断中每个条件的可能取值至少满足一次。 条件判定覆盖 通过设计足够的测试用例,满足如下条件: 所有条件的可能至少执行一次的取值 所有判断的可能结果至少执行一次 条件判定覆盖同时满足判定覆…

centos7.9 + gitlab12.3.0安装

本文在centos7.9操作系统上安装gitlab 12.3.0,gitlab官方最新的版本已经是16.6.0了,这里仍然安装12.3.0版本的原因是汉化包的最新版本是12.3.0,如果汉化包的版本和gitlab的版本不对应,会出现汉化他无法启动的现象。 1、安装依赖 …

基于Hadoop的异构网络协同过滤推荐算法设计

基于Hadoop的异构网络协同过滤推荐算法设计 基于Hadoop的异构网络协同过滤推荐算法设计 Design of Heterogeneous Network Collaborative Filtering Recommendation Algorithm based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 引言 4 1.1 研究背景 4 1.2 研究意义 5 1.3 国…

Python 图形用户界面详解(GUI,Tkinter)

文章目录 1 概述1.1 TK:窗口1.2 官方文档 2 组件2.1 Label:标签2.2 Button:按钮2.3 Entry:输入2.4 Text:文本2.5 Radiobutton:单选框2.6 Checkbutton:复选框2.7 Canvas:画布2.10 Men…

深拷贝 浅拷贝 递归

浅拷贝指的是创建一个新对象,其中包含原始对象的引用(指针),并没有真正将原始对象的数据复制到新对象中,因此新对象与原始对象共享部分或全部数据。 深拷贝指的是创建一个新对象,并递归地将原始对象的数据…

Shell条件变量练习

1.算数运算命令有哪几种? (1) "(( ))"用于整数运算的常用运算符,效率很高 [rootshell scripts]# echo $((24*5**2/8)) #(( ))2452814 14 (2) "$[ ] "用于整数运算 [rootshell scripts]# echo $[24*5**2/8] #[ ]也可以运…

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】特征点检测与匹配

目录 前言 算法原理 一、图像特征介绍 二、特征检测子 三、特征描述子

Python缺失值处理实现

在数据处理相关工作中,读取的数据中常常会有缺失值的情况,为顺利进行后续的操作,需要首先对缺失值进行处理,处理的方式一般为删除或填充,Python中提供了专门的工具包,可以方便地进行实现。读取操作可以由pa…

WebGL技术框架及功能

WebGL(Web Graphics Library)是一种用于在Web浏览器中渲染交互式3D和2D图形的JavaScript API。它允许在不需要插件的情况下,在支持WebGL的浏览器中直接运行高性能的图形渲染。WebGL没有一个固定的技术框架,而是基于JavaScript API…

【Vue】绝了!这生命周期流程真...

hello,我是小索奇,精心制作的Vue系列持续发放,涵盖大量的经验和示例,如果对您有用,可以点赞收藏哈~ 生命周期 Vue.js 组件生命周期: 生命周期函数(钩子)就是给我们提供了一些特定的…

SpringBoot整合MongoDB: 构建高效的数据存储应用

文章目录 1. 引言2. MongoDB简介3. 准备工作4. SpringBoot中配置MongoDB5. 创建MongoDB实体类6. 使用Spring Data MongoDB进行数据操作7. 编写Service层8. 控制器层9. 测试10. 拓展10.1. 复杂查询10.2. 数据分页10.3. 索引优化 11. 总结 🎉SpringBoot整合MongoDB: 构…

Django回顾2

目录 一.HTTP 1.URL介绍 2.格式: 3.补充: 二.web框架 1.什么是框架 2.什么是web框架 3.wsgi协议 基于wsgi协议的web服务器: 4.协议是怎么规定的 三.Django 1.MVC与MTV模型(所有框架其实都遵循MVC架构) 2.…

Linux(gRPC):Ubuntu22.04安装gRPC

gRPC是谷歌出品的语言无关的RPC框架,使用其可以实现高效的RPC调用。 安装方法可以参照: Quick start | C++ | gRPC Ubuntu22.04上实际的安装方式如下: 1.安装新于v3.13版本的cmake 2.安装辅助工具 sudo apt install -y build-essential autoconf libtool pkg-config 3.设…

NOI / 1.7编程基础之字符串 31:字符串p型编码

描述 给定一个完全由数字字符(0,1,2,…,9)构成的字符串str,请写出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说122344111的p型编码串为1122132431&#xff1…

别太担心,人类只是把一小部分理性和感性放到了AI里

尽管人工智能(AI)在许多方面已经取得了重大进展,但它仍然无法完全复制人类的理性和感性。AI目前主要侧重于处理逻辑和分析任务,而人类则具有更复杂的思维能力和情感经验。 人类已经成功地将一些可以数据化和程序化的理性和感性特征…