參考:pytorch深度學習快速入門教程(絕對通俗易懂!)【小土堆】
可看到說明,dataset是乙個抽象類,我們重寫dataset時要繼承這個類,所有的子類都應該重寫__getitem__()方法,這個方法作用是獲取資料及對應的labe。同時我們可以選擇性地去重寫__len__方法,其作用是獲取資料集長度。
這裡我使用的是貓狗二分類的資料集,如圖:
: self.root_dir = root_dir ##根目錄
self.label_dir = label_dir ##標籤,也就是檔名
self.path = os.path.join(self.root_dir,self.label_dir)
##拼成乙個完整的目錄
self.img_path = os.listdir(self.path)
##獲得的乙個list
def__getitem__
(self, idx)
: img_name = self.img_path[idx]
##得到單個的名字
img_item_path = os.path.join(self.root_dir,self.label_dir,img_name)
##得到單個的路徑
img = image.
open
(img_item_path)
##資料
label = self.label_dir ##標籤
return img, label
def__len__
(self)
:return
len(self.img_path)
root_dir=
"d:/貓狗大戰/data/train"
cat_label_dir =
"cat"
dog_label_dir =
"dog"
cat_dataset = mydataset(root_dir,cat_label_dir)
dog_dataset = mydataset(root_dir,dog_label_dir)
img, label = cat_dataset[1]
img.show(
(label)
img, label = dog_dataset[1]
img.show(
(label)
輸出結果:
catdog
寫給自己,另外,可以參考這篇部落格:
fastai也可以關注以下
pytorch十 資料載入
在pytorch中,資料載入可通過自定義的資料集物件實現。資料及物件被抽象為dataset類,實現自定義的資料集需要繼承dataset,並實現兩個python魔法方法。這裡我們以kaggle經典挑戰比賽 dogs vs cat 的資料為例,詳細講解如何處理資料。這是乙個分類問題,判斷一張是狗還是貓,...
Pytorch資料載入 (一)
在pytorch中,資料載入可以通過自定義的資料集物件實現。資料集物件被抽象為dataset類,實現自定義的資料集需要繼承datase類,並且實現python的兩個魔法方法。a.getitem 返回一條資料或者樣本。如obj index 等價於obj.getitem index 如果定義乙個 cla...
Pytorch的資料載入
pytorch將資料集的處理過程標準化,提供了dataset基本的資料 類,並在torchvision中提供了眾多資料變換函式,資料載入的具體過程 主要分為3步 1 繼承dataset類 對於資料集的處理,pytorch提供了torch.utils.data.dataset這個抽象 類,在使用時只需...