• 二、PyTorch加载数据


    一、常用的两个函数

    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就可以将这三类数据进行整理,得出共有多少种类型数据和总共的数据有多少等信息

    编号数据标签
    00
    10
    20
    31
    41
    52

    导入Dataset,from torch.utils.data import Dataset
    可以通过help(Dataset),来进行查看其详细说明

    三、Dataloader

    Dataset整理好数据后,送入模型中训练,如何送,一次送入多少个?就有Dataloader进行控制

    四、Dataset实战

    准备数据,文件夹为dataset,里面有ab两个文件夹,分别存放a和b类照片
    在这里插入图片描述

    import os
    from torch.utils.data import Dataset
    from PIL import Image
    
    
    class MyData(Dataset):
        def __init__(self, root_dir, label_dir):
            self.root_dir = root_dir
            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)
    
        # 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    统计学习笔记第 1 部分:Hoeffding 的不等式推导与模拟
    nginx四层tcp负载均衡及主备、四层udp负载均衡及主备、7层http负载均衡及主备配置(wndows系统主备、负载均衡)
    整数反转1
    springboot-统一打印内容
    eclipse 或 sts 安装 antlr 插件
    如何限制文件只能通过USB打印机打印,限制打印次数和时限并且无法在打印前查看或编辑内容
    D-star Lite算法及相关思考
    基于时序行为的协同过滤推荐算法(Python)
    Nginx 前端 安装,打包,发布项目到服务 流程
    Linux内核版本号
  • 原文地址:https://blog.csdn.net/qq_41264055/article/details/126412593