解决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 测试实现方法
Dec 24 Python
python基础教程之循环介绍
Aug 29 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
Python 自动化表单提交实例代码
Jun 08 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 Python
Python异常处理知识点总结
Feb 18 Python
Python使用paramiko操作linux的方法讲解
Feb 25 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
Python实现爬取并分析电商评论
Jun 19 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
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
浅谈JS之iframe中的窗口
2016/09/13 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
对vue中methods互相调用的方法详解
2018/08/30 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
vue实现分页组件
2020/06/16 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
Python celery原理及运行流程解析
2020/06/13 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
一篇.NET面试题
2014/09/29 面试题
新学期家长寄语
2014/01/19 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android