解决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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
python 写入csv乱码问题解决方法
Oct 23 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
python与字符编码问题
May 24 Python
Django REST Framework之频率限制的使用
Sep 29 Python
python实现将视频按帧读取到自定义目录
Dec 10 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
Dec 30 Python
Python socket聊天脚本代码实例
Jan 02 Python
Python2与Python3的区别详解
Feb 09 Python
Python+Appium实现自动抢微信红包
May 21 Python
Python使用openpyxl批量处理数据
Jun 23 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 strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
cookie的secure属性详解
2015/04/08 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
python利用7z批量解压rar的实现
2019/08/07 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
介绍一下Linux文件的记录形式
2012/04/18 面试题
高中生自我鉴定范文
2013/10/30 职场文书
美术教师自我鉴定
2014/02/12 职场文书
市场部经理岗位职责
2014/04/10 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
小组组名及励志口号
2015/12/24 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers