分析PyTorch?Dataloader報(bào)錯ValueError:num_samples的另一種可能原因
先粘報(bào)錯信息
Traceback (most recent call last): File “train.py”, line 169, in
train_test() File “train.py”, line 29, in train_test
dataloader_train = DataLoader(dataset_train, batch_size=batch_size, shuffle=True, pin_memory=True, drop_last=False)
File “/data3/anaconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py”,
line 270, in init
sampler = RandomSampler(dataset, generator=generator) # type: ignore[arg-type]
File “/data3/anaconda3/lib/python3.8/site-packages/torch/utils/data/sampler.py”,
line 102, in init
raise ValueError("num_samples should be a positive integer "
ValueError: num_samples should be a positive integer value, but got num_samples=0
在使用pytorch訓(xùn)練模型時(shí),同樣的代碼在Windows下可以正常訓(xùn)練,但在Linux下卻會出現(xiàn)以上報(bào)錯。
網(wǎng)上查閱相關(guān)資料,解決辦法是完全相同的
出現(xiàn)的問題的地方可能是如下的地方
調(diào)用DataLoder時(shí)注意參數(shù)
self.train_dataloader = DataLoader(train_dataset, batch_size=TrainOption.train_batch_size, shuffle=TRUE, num_workers=TrainOption.data_load_worker_num)
shuffle的參數(shù)設(shè)置錯誤導(dǎo)致,
因?yàn)橐呀?jīng)有batch_sample了,就不需要shuffle來進(jìn)行隨機(jī)的sample了,所以在這里的shuffle應(yīng)該設(shè)置為FALSE才對。
但我這里并未使用batch_sample,因此不是上述原因。
經(jīng)查發(fā)現(xiàn)
由于兩系統(tǒng)下目錄地址的格式不同,
因此直接從windows移植過來的代碼不能在指定目錄下正常讀取數(shù)據(jù),
且代碼未設(shè)置sample讀取個數(shù)為0時(shí)報(bào)錯,
導(dǎo)致dataset返回長度為0,小于batch_size,因此出現(xiàn)上述報(bào)錯。
出現(xiàn)上述問題時(shí),如未使用batch_sample,可首先檢查dataset.len()是否正常。
總結(jié)
因多次出現(xiàn)上述問題,故記錄。
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
- Pytorch?Conda環(huán)境pack打包遷移報(bào)錯的處理方案
- PyTorch使用tensorboard的SummaryWriter報(bào)錯問題解決方案
- Pytorch backward報(bào)錯2次訪問計(jì)算圖需要retain_graph=True的情況詳解
- pytorch報(bào)錯問題:ValueError: num_samples should be a positive integer value, but got num_samples=0
- 解決遇到:PytorchStreamReader failed reading zip archive:failed finding central錯誤問題
相關(guān)文章
python實(shí)現(xiàn)對服務(wù)器腳本敏感信息的加密解密功能
這篇文章主要介紹了python實(shí)現(xiàn)對服務(wù)器腳本敏感信息的加密解密功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Python實(shí)現(xiàn)byte轉(zhuǎn)integer
這篇文章主要介紹了Python實(shí)現(xiàn)byte轉(zhuǎn)integer操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06numpy中生成隨機(jī)數(shù)的幾種常用函數(shù)(小結(jié))
這篇文章主要介紹了numpy中生成隨機(jī)數(shù)的幾種常用函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python實(shí)現(xiàn)從Markdown到PDF的轉(zhuǎn)換的方法
Markdown,以其簡潔的語法和易于閱讀的特性,成為了許多作家、開發(fā)者和學(xué)生記錄思想、編寫教程或撰寫報(bào)告的首選格式,然而,在分享或打印這些文檔時(shí),Markdown的純文本形式可能無法滿足對版式和布局的專業(yè)需求,本文將介紹如何用Python代碼輕松實(shí)現(xiàn)從Markdown到PDF的轉(zhuǎn)換2024-07-07pytorch 數(shù)據(jù)處理:定義自己的數(shù)據(jù)集合實(shí)例
今天小編就為大家分享一篇pytorch 數(shù)據(jù)處理:定義自己的數(shù)據(jù)集合實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12