解决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标准库之循环器(itertools)介绍
Nov 25 Python
浅谈MySQL中的触发器
May 05 Python
django文档学习之applications使用详解
Jan 29 Python
python简单商城购物车实例代码
Mar 15 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
简单了解python数组的基本操作
Nov 26 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
python opencv实现图像配准与比较
Feb 09 Python
pytorch 中autograd.grad()函数的用法说明
May 12 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
mysql 搜索之简单应用
2007/04/27 PHP
生成卡号php代码
2008/04/09 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
python创建临时文件夹的方法
2015/07/06 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
市场营销专业个人求职信范文
2013/12/14 职场文书
高中体育教学反思
2014/01/24 职场文书
2014年会策划方案
2014/05/11 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2014年教研组工作总结
2014/11/26 职场文书
实习证明模板
2015/06/16 职场文书
消防宣传标语大全
2015/08/03 职场文书
寒假生活随笔
2015/08/15 职场文书
2016国庆促销广告语
2016/01/28 职场文书
centos7安装mysql5.7经验记录
2022/05/02 Servers