解決pytorch DataLoader num_workers出現(xiàn)的問題
最近在學pytorch,在使用數(shù)據(jù)分批訓練時在導入數(shù)據(jù)是使用了 DataLoader 在參數(shù) num_workers的設置上使程序出現(xiàn)運行沒有任何響應的結果 ,看看代碼
import torch #導入模塊 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) #轉換成torch能識別的Dataset torch_dataset = Data.TensorDataset( x,y) #將數(shù)據(jù)放入 torch_dataset loader=Data.DataLoader( dataset=torch_dataset, #將數(shù)據(jù)放入loader batch_size=BATCH_SIZE, #每個數(shù)據(jù)段大小為 BATCH_SIZE=5 shuffle=True , #是否打亂數(shù)據(jù)的排布 num_workers=2 #每次提取數(shù)據(jù)多進進程為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教學視頻,教學視頻中沒有報錯)
程序就停止成這樣了
上網(wǎng)查詢沒有得到有用的東西,因為程序沒有報錯,就是沒有任何反應,(沒有反應可能跟電腦或者編譯器有關,我使用的是anconda spyder)于是決定自己找找
期初我采用在語句后面加 print('1')檢測程序停在了什么地方,(其實這是一種笨方法,在這里可以采用斷點調(diào)試)程序停在了 for step,(batch_x,batch_y) in enumerate(loader):
我以為是enumerate的問題,查資料發(fā)現(xiàn)這就是一個可返回列表元素和鍵值的函數(shù),不存在問題
繼續(xù)排查,把目光放在了loader,于是查詢了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對象)
2. batch_size:batch size
3. shuffle::是否將數(shù)據(jù)打亂
4. sampler: 樣本抽樣,后續(xù)會詳細介紹
5. num_workers:使用多進程加載的進程數(shù),0代表不使用多進程
6. collate_fn: 如何將多個樣本數(shù)據(jù)拼接成一個batch,一般使用默認的拼接方式即可
7. pin_memory:是否將數(shù)據(jù)保存在pin memory區(qū),pin memory中的數(shù)據(jù)轉到GPU會快一些
8. drop_last:dataset中的數(shù)據(jù)個數(shù)可能不是batch_size的整數(shù)倍,drop_last為True會將多出來不足一個batch的數(shù)據(jù)丟棄
發(fā)現(xiàn)我所定義的幾個參數(shù)只有num_workers嫌疑最大,于是將參數(shù)值改成了默認值 0,程序可以運行了,(一把老淚縱橫)
看看進程是什么鬼 發(fā)現(xiàn)在這里好像沒啥用(具體自己上網(wǎng)查查)
以上這篇解決pytorch DataLoader num_workers出現(xiàn)的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python&Matla實現(xiàn)模擬退火法的示例代碼
模擬退火和蒙特卡洛實驗一樣,本文主要介紹了Python&Matla實現(xiàn)模擬退火法的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03python實現(xiàn)代碼行數(shù)統(tǒng)計示例分享
這篇文章主要介紹了python實現(xiàn)代碼行數(shù)統(tǒng)計的示例,需要的朋友可以參考下2014-02-02理解Python數(shù)據(jù)離散化手寫if-elif語句與pandas中cut()方法實現(xiàn)
這篇文章主要介紹了通過手寫if-elif語句與pandas中cut()方法實現(xiàn)示例理解Python數(shù)據(jù)離散化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05pycharm 無法加載文件activate.ps1的原因分析及解決方法
這篇文章主要介紹了pycharm報錯提示:無法加載文件\venv\Scripts\activate.ps1,因為在此系統(tǒng)上禁止運行腳本,解決方法終端輸入get-executionpolicy,回車返回Restricted即可,需要的朋友可以參考下2022-11-11使用Python編寫類UNIX系統(tǒng)的命令行工具的教程
這篇文章主要介紹了使用Python編寫類UNIX系統(tǒng)的命令行工具的教程,本文來自于IBM官方網(wǎng)站技術文檔,需要的朋友可以參考下2015-04-04