解决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下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
Python实现简单http服务器
Apr 12 Python
Python 访问限制 private public的详细介绍
Oct 16 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
Python3内置模块pprint让打印比print更美观详解
Jun 02 Python
Python通用函数实现数组计算的方法
Jun 13 Python
pybind11在Windows下的使用教程
Jul 04 Python
Python 变量的创建过程详解
Sep 02 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
OpenCV读取与写入图片的实现
Oct 13 Python
python实现xml转json文件的示例代码
Dec 30 Python
python opencv人脸识别考勤系统的完整源码
Apr 26 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
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
Django接受前端数据的几种方法总结
2016/11/04 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
Ejb技术面试题
2015/04/29 面试题
前台文员个人求职信范文
2014/01/05 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
增值税发票丢失证明
2015/06/19 职场文书
九年级化学教学反思
2016/02/22 职场文书
利用Apache Common将java对象池化的问题
2022/06/16 Servers
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技