分析PyTorch?Dataloader報錯ValueError:num_samples的另一種可能原因
先粘報錯信息
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訓練模型時,同樣的代碼在Windows下可以正常訓練,但在Linux下卻會出現(xiàn)以上報錯。
網上查閱相關資料,解決辦法是完全相同的
出現(xiàn)的問題的地方可能是如下的地方
調用DataLoder時注意參數
self.train_dataloader = DataLoader(train_dataset, batch_size=TrainOption.train_batch_size, shuffle=TRUE, num_workers=TrainOption.data_load_worker_num)
shuffle的參數設置錯誤導致,
因為已經有batch_sample了,就不需要shuffle來進行隨機的sample了,所以在這里的shuffle應該設置為FALSE才對。
但我這里并未使用batch_sample,因此不是上述原因。
經查發(fā)現(xiàn)
由于兩系統(tǒng)下目錄地址的格式不同,
因此直接從windows移植過來的代碼不能在指定目錄下正常讀取數據,
且代碼未設置sample讀取個數為0時報錯,
導致dataset返回長度為0,小于batch_size,因此出現(xiàn)上述報錯。
出現(xiàn)上述問題時,如未使用batch_sample,可首先檢查dataset.len()是否正常。
總結
因多次出現(xiàn)上述問題,故記錄。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python實現(xiàn)對服務器腳本敏感信息的加密解密功能
這篇文章主要介紹了python實現(xiàn)對服務器腳本敏感信息的加密解密功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08
Python實現(xiàn)從Markdown到PDF的轉換的方法
Markdown,以其簡潔的語法和易于閱讀的特性,成為了許多作家、開發(fā)者和學生記錄思想、編寫教程或撰寫報告的首選格式,然而,在分享或打印這些文檔時,Markdown的純文本形式可能無法滿足對版式和布局的專業(yè)需求,本文將介紹如何用Python代碼輕松實現(xiàn)從Markdown到PDF的轉換2024-07-07

