一、常用的兩個函數
dir()函數可以理解為打開某個包,help()可以理解為返回如何使用某個具體的方法
例如:若一個A錢包里面有a,b,c,d四個小包,則可通過dir(A),打開該A錢包,返回a,b,c,d四個小包;若b小包中有1,2,3張銀行卡,則help(1)表示如何使用銀行卡1。
拿torch.cuda.is_available()
為例進行說明
首先導入torch這個包,import torch
接著通過dir函數進行打開torch這個包,dir(torch)
,返回一系列torch
包下的小包,其中就有cuda
小包
接著打開cuda小包,dir(torch.cuda)
,返回一系列cuda小包下的各種方法,其中就有__is_available__
方法
接著通過help函數查看該方法的詳細使用說明,help(torch.cuda.is_available)
,返回該方法的詳細說明信息
遇到所有的不明白如何使用的方法就可以通過這個兩個函數進行大牌使用,查看文檔進行使用學習
二、Dataset
例如:有散亂的三類數據 ▲(2個,標簽為1)、?(3個,標簽為0)、★(1個,標簽為2)
Dataset就可以將這三類數據進行整理,得出共有多少種類型數據和總共的數據有多少等信息
編號 | 數據 | 標簽 |
---|---|---|
0 | ? | 0 |
1 | ? | 0 |
2 | ? | 0 |
3 | ▲ | 1 |
4 | ▲ | 1 |
5 | ★ | 2 |
導入Dataset,from torch.utils.data import Dataset
可以通過help(Dataset)
,來進行查看其詳細說明
三、Dataloader
Dataset整理好數據后,送入模型中訓練,如何送,一次送入多少個?就有Dataloader進行控制
四、Dataset實戰
準備數據,文件夾為dataset,里面有a和b兩個文件夾,分別存放a和b類照片
import os
from torch.utils.data import Dataset
from PIL import Imageclass MyData(Dataset):def __init__(self, root_dir, label_dir):self.root_dir = root_dirself.label_dir = label_dirself.path = os.path.join(self.root_dir, self.label_dir)self.img_path = os.listdir(self.path)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_dirreturn img, labeldef __len__(self):return len(self.img_path)# dattset文件夾下有a和b兩個文件夾,分別存放a和b類照片root_dir = "dataset" # 數據集的路徑
a_label_dir = "a" # a類數據存放路徑
b_label_dir = "b" # b類數據存放路徑
a_dataset = MyData(root_dir, a_label_dir)#存放所有a類數據
b_dataset = MyData(root_dir, b_label_dir)#存放所有b類數據a_img, a_label = a_dataset[1]#a類數據中的第2張
b_img, b_label = b_dataset[0]#b類數據中的第1張a_img.show()
b_img.show()all_dataset = a_dataset + b_dataset#將a和b類數據進行整合,a類在前,b類在后
all_img, all_label = all_dataset[3]#整合后的第4張
all_img.show()#顯示下照片信息print(all_label)#因為a和b各有4張,aaaabbbb,第4張的label為a,故輸出a