【PyTorch】深度学习PyTorch加载数据

系列文章目录

【PyTorch】深度学习PyTorch环境配置及安装【详细清晰】


文章目录


前言

pytorch的数据加载中关于如何操作数据主要涉及DatasetDataLoader两个类,Dataset主要告诉Dataloader如何获取数据,DataLoader主要用于加载数据和为网络提供数据。打个比方,假如我们面前有一堆垃圾,要对其进行回收。这时候我们要告诉垃圾回收器两个重要信息,如何获取可回收的垃圾(如何获取数据Dataset)和可回收的垃圾数量有多少(知道什么时候算一轮)。


一、Dataset与Dataloader

Dataset

假设我现在这里有一堆垃圾(相当于一堆数据),分别有红黄蓝三种颜色,我需要将这些垃圾分类出来,就能用到Dataset,Dataset能够分别将不同种颜色的垃圾归成各自的一类(获取数据),蓝色为蓝色的一类,红色为红色归为一类,并将它们标注编号,例如0、1、2、3、4...等等,同时还能获取到相应的label(图中的黑色)。

Dataloader

对获取到的数据进行打包,比如说要将数据送进网络的时候,不会是一个一个送进去,而是进行打包成几个几个送入,例如将编号0、1、2、3打包进入网络输送。

二、使用步骤

Dataset类的使用

我们需要导入这个类,使用from torch.utils.data import Dataset。utils意为工具的意思,主要是从torch这个大工具箱中挑选实用(经常用)的工具区,从这个工具区中挑选跟数据(data)有关的工具。Dataset是干嘛的呢?我们可以采用help(Dataset)或者在jupyter中使用Dataset??,就会出现一段英文用来描述Dataset的相关信息,大概意思就是所有的子类应该继承Dataset这个抽象类,同时应该重写__getitem____len__方法。
__getitem__:提供方式去获取数据;__len__:提供这个数据集的数量有多少


通过下面数据来写代码

点击下载数据集:https://download.csdn.net/download/Q20011102/89607569,这是一个分类蚂蚁和蜜蜂的数据集

下载完毕,看数据的组织结构,首先分为训练数据集和测试数据集,然后每个数据集下面有ants/bees两类。ants/bees文件夹中有对应的图片。这时候,我们需要确定,如何去获取数据集的输入数据和真实label,对于这个数据集,输入数据就是每一个图片,真实的label就是图片对应的动物名称。

2.读入数据

python 复制代码
from torch.utils.data import Dataset
from PIL import Image
import os


class Mydata(Dataset):

    def __init__(self, root_dir, label_dir):
        self.root_dir = root_dir #只有用self变量才会变成全局变量
        self.label_dir = label_dir 
        self.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_dir
        return img, label

    def __len__(self):
        return len(self.img_path)


root_dir = "dataset/train"
ants_label_dir = "ants"
bees_label_dir = "bees"
ants_dataset = Mydata(root_dir, ants_label_dir)
bees_dataset = Mydata(root_dir, bees_label_dir)


train_dataset=ants_dataset+bees_dataset
相关推荐
小鸡吃米…1 小时前
机器学习 - K - 中心聚类
人工智能·机器学习·聚类
好奇龙猫1 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
沈浩(种子思维作者)2 小时前
真的能精准医疗吗?癌症能提前发现吗?
人工智能·python·网络安全·健康医疗·量子计算
minhuan2 小时前
大模型应用:大模型越大越好?模型参数量与效果的边际效益分析.51
人工智能·大模型参数评估·边际效益分析·大模型参数选择
Cherry的跨界思维2 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
MM_MS2 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
ASF1231415sd2 小时前
【基于YOLOv10n-CSP-PTB的大豆花朵检测与识别系统详解】
人工智能·yolo·目标跟踪
水如烟3 小时前
孤能子视角:“意识“的阶段性回顾,“感质“假说
人工智能
Carl_奕然3 小时前
【数据挖掘】数据挖掘必会技能之:A/B测试
人工智能·python·数据挖掘·数据分析
旅途中的宽~3 小时前
《European Radiology》:2024血管瘤分割—基于MRI T1序列的分割算法
人工智能·计算机视觉·mri·sci一区top·血管瘤·t1