#Pytorch学习
文章目录
前言。。
首先深度学习需要数据集,而数据集的处理离不开Dataset类和DataLoader类。
简单的区别一下Dataset和Dataloader:
Dataset是一个需要我们实现的抽象类,通过我们相关实现,表示数据集,实现数据集的具体功能。
而Dataloader,我们一般直接调用,调用来加载数据集。
先说一下常见的数据组成形式:
- 一个文件夹对应一个类,data根据类被分成不同的文件夹
- 一个图片文件对应名称为标签,
- 两个文件夹,一个文件夹存图片,另一个存标签。有的标签过于复杂,适合单独存放,而不放入名字里
一、Dataset
1.Dataset 是torch.utils.data.dataset包里一个抽象类,可以用来创建数据集,我们需要重写子类来完成数据集的创建。
2.其中最重要的两个方法就是len和getitem,也是子类必须要重写的方法,len函数返回数据集长度,getitem用来查找数据和标签
1.针对不同的文件夹存放不同的类数据
这里图片的名字并没有很大的意义。
代码实现:
from torch.utils.data import Dataset
from PIL import Image #这里用来读取图片数据
import os
class MyData(Dataset): # 这里定义了一个MyData类继承Dataset读取数据
def __init__(self, root_dir, label_dir): #进行初始化数据
self.root_dir = root_dir #比如 "data/train" 相对路径
self.label_dir = label_dir #这里可以是 "ant"
self.path = os.path.join(self.root_dir