3.Dataset类实战

Dataset类
  • Dataset类是数据加载的核心组件之一。它是一个抽象类,用户需要通过继承这个类并实现其中的两个方法:__len____getitem__

1. 数据集结构

  • 数据分为训练集和测试集,训练集和测试集中分别有两个文件夹,文件夹名称为数据的类别,每个类别文件夹下有多个数据

    image-20240609145544954

2. 搭建框架

  • 需要继承 torch.utils.data中的Dataset类,并重写两个魔法方法__getitem__ __len__

    image-20240609150010882

3.__init__

  • 在初始化函数中完成对图像数据名称的获取,用于对后期数据的加载

    image-20240609150940663

4.__getitem__

  • getitem要根据给定的索引返回一个样本。通常会包含数据、标签,必要时还会应用数据变换

    image-20240609170102291

5.__len__

  • len方法用于返回加载的数据集中有多少个数据

    image-20240609171026297

完整代码
from torch.utils.data import Dataset
import os
from PIL import Image
class Mydata(Dataset):
    def __init__(self, root_dir, label_dir):
        self.root_dit = root_dir # 根目录  ./data/traim
        self.label_dir = label_dir # 类别 ants
        self.image_path = os.path.join(self.root_dit, self.label_dir) # './data/train/ants 
        self.image_path_list = os.listdir(self.image_path) # 获取ants下的所有文件的名称
    
    def __getitem__(self, index):
        image = self.image_path_list[index] # 通过编号获取图像的名称
        image_item_path = os.path.join(self.image_path, image) # 拼接出图像的具体路径
        img = Image.open(image_item_path)
        label = self.label_dir
        return img, label  # 返回图像数据、标签
        
    def __len__(self):
        return len(self.image_path_list)
两个Dataset实例求和的数据集
  • Dataset类的实例化支持求和操作,首先需要设置len方法,两个Dataset的实例的求和是将__len__方法中的返回的计算长度的列表作为数据集相加,从而得到新的数据集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥都想学的大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值