解决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不规范的日期字符串处理类
Jun 10 Python
在Django的URLconf中进行函数导入的方法
Jul 18 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
Python字符串处理实现单词反转
Jun 14 Python
Python实现的爬虫功能代码
Jun 24 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
Python Pillow Image Invert
Jan 22 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
python deque模块简单使用代码实例
Mar 12 Python
基于plt.title无法显示中文的快速解决
May 16 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 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
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
小谈angular ng deploy的实现
2020/04/07 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
python实现学生管理系统
2018/01/11 Python
谈谈python中GUI的选择
2018/03/01 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
上班早退检讨书
2014/01/09 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
建筑安全标语
2014/06/07 职场文书
语文教研活动总结
2014/07/02 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers