pytorch下大型數(shù)據(jù)集(大型圖片)的導(dǎo)入方式
使用torch.utils.data.Dataset類 處理圖片數(shù)據(jù)時(shí),
1. 我們需要定義三個(gè)基本的函數(shù),以下是基本流程
class our_datasets(Data.Dataset):
def __init__(self,root,is_resize=False,is_transfrom=False):
#這里只是個(gè)參考。按自己需求寫。
self.root=root
self.is_resize=is_resize
self.is_transfrom=is_transfrom
self.imgs_list=...#這里建議保存的是 圖片的路徑 而不是 圖片的數(shù)據(jù)
self.labs_list=...
def __getitem__(self, index):
img_path,lab=self.imgs_list[index],self.labs_list[index]
#這里使用PIL庫(kù)讀取圖片數(shù)據(jù).
img_data = Image.open(img_path).convert('RGB')
#這里看自己需要,可以不要
if self.is_resize:
img_data = img_data.resize((self.is_resize[0], self.is_resize[1]), Image.ANTIALIAS)
#但是數(shù)據(jù)轉(zhuǎn)換建議加上,很多時(shí)候都會(huì)用到
if self.is_transfrom:
img_data=self.is_transfrom(img_data)
return img_data,lab
def __len__(self):
return len(self.imgs_list)
這里,我將 讀取圖片 的步驟 放到 __getitem__ ,是因?yàn)?這樣放的話,對(duì)內(nèi)存的要求會(huì)降低很多,我們只是將數(shù)據(jù)的路徑導(dǎo)入了內(nèi)存中,當(dāng)需要讀取這個(gè)圖片數(shù)據(jù)時(shí),再讀取,這樣更像是隨用隨取。如果將這部分放到 __init__ 里面,會(huì)一次將 圖片數(shù)據(jù)都加載到 內(nèi)存中,如果數(shù)據(jù)量太大,會(huì)直接卡死。
2.Dataset 類 返回的數(shù)據(jù) 類型 是與你讀取時(shí)的類型一致的。但是在 pytorch使用時(shí),會(huì)提示
TypeError: batch must contain tensors, numbers, dicts or lists; found <class 'PIL.Image.Image'>
通常,在數(shù)據(jù)了不大時(shí),我一般都是在 讀取數(shù)據(jù)后 加一句,轉(zhuǎn)換成 numpy.array類型。
但是,在處理較大型的數(shù)據(jù)時(shí),這樣會(huì)很慢。
這時(shí)候,我建議 直接使用 torchvision來(lái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。
is_transfrom=torchvision.transforms.ToTensor()
將 上例代碼 加入 Dataset類中,這樣就會(huì)快很多。
以上這篇pytorch下大型數(shù)據(jù)集(大型圖片)的導(dǎo)入方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python按照多個(gè)字符對(duì)字符串進(jìn)行分割的方法
這篇文章主要介紹了python按照多個(gè)字符對(duì)字符串進(jìn)行分割的方法,涉及Python中正則表達(dá)式匹配的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03
如何在pycharm中配置pyqt5設(shè)計(jì)GUI操作教程
這篇文章主要介紹了如何在pycharm中配置pyqt5設(shè)計(jì)GUI的操作教程,有需要的朋友可以借鑒參考下,希望大家可以多多交流,討論相關(guān)問(wèn)題共同提升2021-08-08
Python中利用函數(shù)裝飾器實(shí)現(xiàn)備忘功能
這篇文章主要介紹了Python中利用函數(shù)裝飾器實(shí)現(xiàn)備忘功能,同時(shí)還降到了利用裝飾器來(lái)檢查函數(shù)的遞歸、確保參數(shù)傳遞的正確,需要的朋友可以參考下2015-03-03
Python自動(dòng)化測(cè)試工具Splinter簡(jiǎn)介和使用實(shí)例
這篇文章主要介紹了Python自動(dòng)化測(cè)試工具Splinter簡(jiǎn)介和使用實(shí)例,Splinter可以非常棒的模擬瀏覽器的行為,Splinter提供了豐富的API,可以獲取頁(yè)面的信息判斷當(dāng)前的行為所產(chǎn)生的結(jié)果2014-05-05
NCCL深度學(xué)習(xí)Bootstrap網(wǎng)絡(luò)連接建立源碼解析
這篇文章主要為大家介紹了NCCL深度學(xué)習(xí)Bootstrap網(wǎng)絡(luò)連接建立源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Python中BeautifuSoup庫(kù)的用法使用詳解
這篇文章主要介紹了Python中BeautifuSoup庫(kù)的用法使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

