您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么在pytorch中導入大型數據集,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
1.PyTorch是相當簡潔且高效快速的框架;2.設計追求最少的封裝;3.設計符合人類思維,它讓用戶盡可能地專注于實現自己的想法;4.與google的Tensorflow類似,FAIR的支持足以確保PyTorch獲得持續的開發更新;5.PyTorch作者親自維護的論壇 供用戶交流和求教問題6.入門簡單
1. 我們需要定義三個基本的函數,以下是基本流程
class our_datasets(Data.Dataset): def __init__(self,root,is_resize=False,is_transfrom=False): #這里只是個參考。按自己需求寫。 self.root=root self.is_resize=is_resize self.is_transfrom=is_transfrom self.imgs_list=...#這里建議保存的是 圖片的路徑 而不是 圖片的數據 self.labs_list=... def __getitem__(self, index): img_path,lab=self.imgs_list[index],self.labs_list[index] #這里使用PIL庫讀取圖片數據. 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) #但是數據轉換建議加上,很多時候都會用到 if self.is_transfrom: img_data=self.is_transfrom(img_data) return img_data,lab def __len__(self): return len(self.imgs_list)
這里,我將 讀取圖片 的步驟 放到 __getitem__ ,是因為 這樣放的話,對內存的要求會降低很多,我們只是將數據的路徑導入了內存中,當需要讀取這個圖片數據時,再讀取,這樣更像是隨用隨取。如果將這部分放到 __init__ 里面,會一次將 圖片數據都加載到 內存中,如果數據量太大,會直接卡死。
2.Dataset 類 返回的數據 類型 是與你讀取時的類型一致的。但是在 pytorch使用時,會提示
TypeError: batch must contain tensors, numbers, dicts or lists; found <class 'PIL.Image.Image'>
通常,在數據了不大時,我一般都是在 讀取數據后 加一句,轉換成 numpy.array類型。
但是,在處理較大型的數據時,這樣會很慢。
這時候,我建議 直接使用 torchvision來進行數據轉換。
is_transfrom=torchvision.transforms.ToTensor()
看完上述內容,你們對怎么在pytorch中導入大型數據集有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。