一、常用的两个函数
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