解决pytorch DataLoader num_workers出现的问题


Posted in Python onJanuary 14, 2020

最近在学pytorch,在使用数据分批训练时在导入数据是使用了 DataLoader 在参数 num_workers的设置上使程序出现运行没有任何响应的结果 ,看看代码

import torch  #导入模块
import torch.utils.data as Data

BATCH_SIZE=8 #每一批的数据量

x=torch.linspace(1,10,10) #定义X为 1 到 10 等距离大小的数
y=torch.linspace(10,1,10)

#转换成torch能识别的Dataset
torch_dataset = Data.TensorDataset( x,y) #将数据放入 torch_dataset

loader=Data.DataLoader(
    dataset=torch_dataset,   #将数据放入loader
    batch_size=BATCH_SIZE, #每个数据段大小为 BATCH_SIZE=5
    shuffle=True ,  #是否打乱数据的排布
    num_workers=2 #每次提取数据多进进程为2
    )
for epoch in range(3):
  
  for step,(batch_x,batch_y) in enumerate(loader):
    
    print('epoch',epoch,'|step:',step," | batch_x",batch_x.numpy(),

       '|batch_y:',batch_y.numpy())

(以上代码取莫烦python教学视频,教学视频中没有报错)

程序就停止成这样了

解决pytorch DataLoader num_workers出现的问题

上网查询没有得到有用的东西,因为程序没有报错,就是没有任何反应,(没有反应可能跟电脑或者编译器有关,我使用的是anconda spyder)于是决定自己找找

期初我采用在语句后面加 print('1')检测程序停在了什么地方,(其实这是一种笨方法,在这里可以采用断点调试)程序停在了 for step,(batch_x,batch_y) in enumerate(loader):

我以为是enumerate的问题,查资料发现这就是一个可返回列表元素和键值的函数,不存在问题

继续排查,把目光放在了loader,于是查询了DataLoader的参数

DataLoader的函数定义如下:

DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
num_workers=0, collate_fn=default_collate, pin_memory=False,
drop_last=False)

1. dataset:加载的数据集(Dataset对象)

2. batch_size:batch size

3. shuffle::是否将数据打乱

4. sampler: 样本抽样,后续会详细介绍

5. num_workers:使用多进程加载的进程数,0代表不使用多进程

6. collate_fn: 如何将多个样本数据拼接成一个batch,一般使用默认的拼接方式即可

7. pin_memory:是否将数据保存在pin memory区,pin memory中的数据转到GPU会快一些

8. drop_last:dataset中的数据个数可能不是batch_size的整数倍,drop_last为True会将多出来不足一个batch的数据丢弃

发现我所定义的几个参数只有num_workers嫌疑最大,于是将参数值改成了默认值 0,程序可以运行了,(一把老泪纵横)

看看进程是什么鬼 发现在这里好像没啥用(具体自己上网查查)

解决pytorch DataLoader num_workers出现的问题

以上这篇解决pytorch DataLoader num_workers出现的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
使用 Python 实现微信公众号粉丝迁移流程
Jan 03 Python
浅析Python3爬虫登录模拟
Feb 07 Python
Pandas 同元素多列去重的实例
Jul 03 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Python查找文件中包含中文的行方法
Dec 19 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
解决python replace函数替换无效问题
Jan 18 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
keras.layer.input()用法说明
Jun 16 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 #Python
python重要函数eval多种用法解析
Jan 14 #Python
关于ResNeXt网络的pytorch实现
Jan 14 #Python
Python属性和内建属性实例解析
Jan 14 #Python
Python程序控制语句用法实例分析
Jan 14 #Python
dpn网络的pytorch实现方式
Jan 14 #Python
Django之form组件自动校验数据实现
Jan 14 #Python
You might like
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
JavaScript Array扩展实现代码
2009/10/14 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
jQuery中Ajax的load方法详解
2015/01/14 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
2016/05/31 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
python实现视频读取和转化图片
2019/12/10 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
介绍一下Java的事务处理
2012/12/07 面试题
个人党性剖析材料
2014/02/03 职场文书
加入学生会演讲稿
2014/04/24 职场文书
节约用水标语
2014/06/11 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
2016新年问候语大全
2015/11/11 职场文书
生产实习心得体会范文
2016/01/22 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Redis基本数据类型String常用操作命令
2022/06/01 Redis