解決pytorch DataLoader num_workers出現(xiàn)的問(wèn)題
最近在學(xué)pytorch,在使用數(shù)據(jù)分批訓(xùn)練時(shí)在導(dǎo)入數(shù)據(jù)是使用了 DataLoader 在參數(shù) num_workers的設(shè)置上使程序出現(xiàn)運(yùn)行沒(méi)有任何響應(yīng)的結(jié)果 ,看看代碼
import torch #導(dǎo)入模塊
import torch.utils.data as Data
BATCH_SIZE=8 #每一批的數(shù)據(jù)量
x=torch.linspace(1,10,10) #定義X為 1 到 10 等距離大小的數(shù)
y=torch.linspace(10,1,10)
#轉(zhuǎn)換成torch能識(shí)別的Dataset
torch_dataset = Data.TensorDataset( x,y) #將數(shù)據(jù)放入 torch_dataset
loader=Data.DataLoader(
dataset=torch_dataset, #將數(shù)據(jù)放入loader
batch_size=BATCH_SIZE, #每個(gè)數(shù)據(jù)段大小為 BATCH_SIZE=5
shuffle=True , #是否打亂數(shù)據(jù)的排布
num_workers=2 #每次提取數(shù)據(jù)多進(jìn)進(jìn)程為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教學(xué)視頻,教學(xué)視頻中沒(méi)有報(bào)錯(cuò))
程序就停止成這樣了

上網(wǎng)查詢(xún)沒(méi)有得到有用的東西,因?yàn)槌绦驔](méi)有報(bào)錯(cuò),就是沒(méi)有任何反應(yīng),(沒(méi)有反應(yīng)可能跟電腦或者編譯器有關(guān),我使用的是anconda spyder)于是決定自己找找
期初我采用在語(yǔ)句后面加 print('1')檢測(cè)程序停在了什么地方,(其實(shí)這是一種笨方法,在這里可以采用斷點(diǎn)調(diào)試)程序停在了 for step,(batch_x,batch_y) in enumerate(loader):
我以為是enumerate的問(wèn)題,查資料發(fā)現(xiàn)這就是一個(gè)可返回列表元素和鍵值的函數(shù),不存在問(wèn)題
繼續(xù)排查,把目光放在了loader,于是查詢(xún)了DataLoader的參數(shù)
DataLoader的函數(shù)定義如下:
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, num_workers=0, collate_fn=default_collate, pin_memory=False, drop_last=False)
1. dataset:加載的數(shù)據(jù)集(Dataset對(duì)象)
2. batch_size:batch size
3. shuffle::是否將數(shù)據(jù)打亂
4. sampler: 樣本抽樣,后續(xù)會(huì)詳細(xì)介紹
5. num_workers:使用多進(jìn)程加載的進(jìn)程數(shù),0代表不使用多進(jìn)程
6. collate_fn: 如何將多個(gè)樣本數(shù)據(jù)拼接成一個(gè)batch,一般使用默認(rèn)的拼接方式即可
7. pin_memory:是否將數(shù)據(jù)保存在pin memory區(qū),pin memory中的數(shù)據(jù)轉(zhuǎn)到GPU會(huì)快一些
8. drop_last:dataset中的數(shù)據(jù)個(gè)數(shù)可能不是batch_size的整數(shù)倍,drop_last為T(mén)rue會(huì)將多出來(lái)不足一個(gè)batch的數(shù)據(jù)丟棄
發(fā)現(xiàn)我所定義的幾個(gè)參數(shù)只有num_workers嫌疑最大,于是將參數(shù)值改成了默認(rèn)值 0,程序可以運(yùn)行了,(一把老淚縱橫)
看看進(jìn)程是什么鬼 發(fā)現(xiàn)在這里好像沒(méi)啥用(具體自己上網(wǎng)查查)

以上這篇解決pytorch DataLoader num_workers出現(xiàn)的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Pygame實(shí)戰(zhàn)練習(xí)之飛機(jī)大戰(zhàn)游戲
飛機(jī)大戰(zhàn)想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂(lè)的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫(xiě)一個(gè)簡(jiǎn)單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下2021-09-09
詳解python selenium 爬取網(wǎng)易云音樂(lè)歌單名
這篇文章主要介紹了python selenium爬取網(wǎng)易云音樂(lè)歌單名,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Python實(shí)現(xiàn)創(chuàng)建快速剪映草稿軌道自動(dòng)生成視頻
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)創(chuàng)建快速剪映草稿軌道并自動(dòng)生成視頻,文中的示例代碼講解詳細(xì),需要的可以參考一下2023-08-08
python實(shí)現(xiàn)上傳文件到linux指定目錄的方法
這篇文章主要介紹了python實(shí)現(xiàn)上傳文件到linux指定目錄的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
關(guān)于python中remove的一些坑小結(jié)
這篇文章主要給大家介紹了關(guān)于python中remove的一些坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
對(duì)Pytorch 中的contiguous理解說(shuō)明
這篇文章主要介紹了對(duì)Pytorch 中的contiguous理解說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03

