解决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 相关文章推荐
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
Python迭代和迭代器详解
Nov 10 Python
详解python的数字类型变量与其方法
Nov 20 Python
Python和C/C++交互的几种方法总结
May 11 Python
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
Python实现求数列和的方法示例
Jan 12 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
Python 面试中 8 个必考问题
Nov 16 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 Python
如何利用python实现Simhash算法
Jun 28 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 fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
php变量范围介绍
2012/10/15 PHP
php笔记之:AOP的应用
2013/04/24 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
尽可能写"友好"的"Javascript"代码
2007/01/09 Javascript
JavaScript 动态创建VML的方法
2009/10/14 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
python书籍信息爬虫实例
2018/03/19 Python
儿童python练习实例
2018/05/27 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
音乐课外活动总结
2015/05/09 职场文书
诚信教育主题班会
2015/08/13 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android