解决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实现基于HTTP文件传输实例
Nov 08 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
没编程基础可以学python吗
Jun 17 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
用python实现一个简单的验证码
Dec 09 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
详解Python中的for循环
Apr 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
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
微信API接口大全
2015/04/15 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
用python计算文件的MD5值
2020/12/23 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
毕业寄语大全
2014/04/09 职场文书
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python