dir():打开,看见,如dir(torch),dir(torch.xxxx)
Help():说明书
打开jupyter步骤 : conda activate Pytorch37---->jupyter notebook
一、pytorch加载数据
1.Dataset(提供一种方式去获取数据及其label)
- 如何获取每一个数据及其label
- 告诉我们总共有多少的数据
2.常用数据集存储形式:
(1)图片按类别分布在各文件夹中,文件夹名为类别名
(2)训练数据全部都存储在一个文件夹中,对应的种类txt文件存储在另一label文件夹中。
(3)图片名就是label名
3.self.xxx一个函数的变量无法传递给另外一个函数中的变量,而self可以把指定的一个变量给后面的一个变量,相当于一个大类,可以使变量变成全局变量。
代码笔记:
from torch.utils.data import Dataset
from PIL import Image #读取图片
import os #获取所有图片地址需要用到os库
#dir_path = 'dataset/shuju_tupian_01' #打开路径对应的文件夹
#img_path_list = os.listdir(dir_path) #dir_path对应的文件夹下的所有东西变成一个列表
class Mydata(Dataset):
#这个类里面要:提供全局变量
def __init__(self,root_dir,label_dir): #初始化 #为了getitem部分通过索引可以获取图片地址,
#获取路径
self.root_dir = root_dir #经self转换后变量可以变成全局变量 #例如:root_dir = 'dataset/train'
self.label_dir = label_dir #例如:label_dir = 'shuju_tupian_01'
self.path = os.path.join(self.root_dir,self.label_dir) # 对root_dir和label_dir两个路径进行拼接
self.img_path = os.listdir(self.path) #列出label标签文件夹路径下 所有图片地址
def __getitem__(self, idx): #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 = "dataset/train"
shuju_tupian_01_label_dir = "shuju_tupian_01"
shuju_tupian_02_label_dir = "shuju_tupian_02"
shuju_tupian_01_dataset = Mydata(root_dir,shuju_tupian_01_label_dir)
shuju_tupian_02_dataset = Mydata(root_dir,shuju_tupian_02_label_dir)
mix_dataset = shuju_tupian_01_dataset + shuju_tupian_01_dataset #将两个文件夹的数据集可以拼在一起
#img,label = shuju_tupian_01_dataset[2]
#img.show() shuju_tupian_01_dataset[2]位置的图片
#img.size 图片尺寸
#len(shuju_tupian_01_dataset) #shuju_tupian_01_dataset 数据集大小