解决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教学视频,教学视频中没有报错)
程序就停止成这样了
上网查询没有得到有用的东西,因为程序没有报错,就是没有任何反应,(没有反应可能跟电脑或者编译器有关,我使用的是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,程序可以运行了,(一把老泪纵横)
看看进程是什么鬼 发现在这里好像没啥用(具体自己上网查查)
来源:https://blog.csdn.net/weixin_42236288/article/details/80893882
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
自定义PyCharm快捷键的设置方式
![](https://img.aspxhome.com/file/2023/4/112454_0s.png)
Django Form常用功能及代码示例
使用Python爬取弹出窗口信息的实例
![](https://img.aspxhome.com/file/2023/8/100858_0s.jpg)
document.styleSheets[0].disabled
详解python数组中的符号...与:符号的不同之处
Python包,__init__.py功能与用法分析
![](https://img.aspxhome.com/file/2023/4/95534_0s.png)
python统计中文字符数量的两种方法
Golang时间处理中容易踩的坑分析解决
![](https://img.aspxhome.com/file/2023/5/134275_0s.jpg)
python批量下载抖音视频
![](https://img.aspxhome.com/file/2023/6/99236_0s.png)
简化ADO数据库操作的控件(带分页功能)
python实现网站用户名密码自动登录功能
在Python中将函数作为另一个函数的参数传入并调用的方法
Python 类属性与实例属性,类对象与实例对象用法分析
![](https://img.aspxhome.com/file/2023/3/91903_0s.png)
SQL Server跟踪数据实现索引优化向导
![](https://img.aspxhome.com/file/UploadPic/20092/2009216122820265.jpg)
python 字典中文key处理,读取,比较方法
![](https://img.aspxhome.com/file/2023/4/72094_0s.jpg)
python中的多线程锁lock=threading.Lock()使用方式
SQLServer与服务器连接时出错的解决方案
Python利用Canny算法检测硬币边缘
![](https://img.aspxhome.com/file/2023/5/131735_0s.png)
vue+Element-ui实现分页效果
![](https://img.aspxhome.com/file/2023/0/133170_0s.jpg)