解决pytorch DataLoader num_workers出现的问题

作者:枫溪彤 时间:2022-10-22 06:34:38 

最近在学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出现的问题

来源:https://blog.csdn.net/weixin_42236288/article/details/80893882

标签:pytorch,DataLoader,num,workers
0
投稿

猜你喜欢

  • 自定义PyCharm快捷键的设置方式

    2023-11-20 08:28:08
  • Django Form常用功能及代码示例

    2021-11-22 16:45:53
  • 使用Python爬取弹出窗口信息的实例

    2021-08-27 19:11:25
  • document.styleSheets[0].disabled

    2024-06-07 15:58:37
  • 详解python数组中的符号...与:符号的不同之处

    2022-10-14 19:12:37
  • Python包,__init__.py功能与用法分析

    2021-06-17 22:19:54
  • python统计中文字符数量的两种方法

    2022-11-16 00:24:08
  • Golang时间处理中容易踩的坑分析解决

    2024-04-25 15:00:04
  • python批量下载抖音视频

    2023-09-05 11:26:14
  • 简化ADO数据库操作的控件(带分页功能)

    2008-05-20 13:15:00
  • python实现网站用户名密码自动登录功能

    2021-07-05 09:48:13
  • 在Python中将函数作为另一个函数的参数传入并调用的方法

    2023-04-10 07:32:26
  • Python 类属性与实例属性,类对象与实例对象用法分析

    2023-03-12 01:43:03
  • SQL Server跟踪数据实现索引优化向导

    2009-02-13 17:14:00
  • python 字典中文key处理,读取,比较方法

    2021-11-30 20:42:36
  • python中的多线程锁lock=threading.Lock()使用方式

    2022-02-12 19:48:39
  • SQLServer与服务器连接时出错的解决方案

    2009-06-28 14:35:00
  • Python利用Canny算法检测硬币边缘

    2022-05-15 08:04:43
  • vue+Element-ui实现分页效果

    2024-04-26 17:38:17
  • 從無到有實現一個xml數據庫登錄驗証

    2008-09-05 17:12:00
  • asp之家 网络编程 m.aspxhome.com