解决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通过apply使用元祖和列表调用函数实例
May 26 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
Python绘制3D图形
May 03 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
Python数据类型之Tuple元组实例详解
May 08 Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 Python
python pandas写入excel文件的方法示例
Jun 25 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
django 外键创建注意事项说明
May 20 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
Django数据模型中on_delete使用详解
Nov 30 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
oracle资料库函式库
2006/10/09 PHP
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
script标签属性用type还是language
2015/01/21 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
python实现多线程端口扫描
2019/08/31 Python
python实现控制台输出彩色字体
2020/04/05 Python
Python中生成ndarray实例讲解
2021/02/22 Python
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
售后服务科岗位职责范文
2013/11/13 职场文书
办公设备采购方案
2014/03/16 职场文书
安全承诺书范文
2014/03/26 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
P站美图推荐——变身女主角特辑
2022/03/20 日漫