解决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实现将n个点均匀地分布在球面上的方法
Mar 12 Python
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
用python实现刷点击率的示例代码
Feb 21 Python
python使用PyQt5的简单方法
Feb 27 Python
Python写一个基于MD5的文件监听程序
Mar 11 Python
python中的colorlog库使用详解
Jul 05 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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
一个取得文件扩展名的函数
2006/10/09 PHP
php单例模式实现方法分析
2015/03/14 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Python按钮的响应事件详解
2019/03/04 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
解决c++调用python中文乱码问题
2020/07/29 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
学校卫生检查制度
2014/02/03 职场文书
文字自荐书范文
2014/02/10 职场文书
高考备战决心书
2014/03/11 职场文书
英文自荐信常用句子
2014/03/26 职场文书
委托证明书
2014/09/17 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
圣诞晚会主持词
2015/07/01 职场文书