当前位置: 首页 > news >正文

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

系列文章目录

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


文章目录

  • 系列文章目录
  • 前言
  • 一、Dataset与Dataloader
    • Dataset
    • Dataloader
  • 二、使用步骤
    • Dataset类的使用
    • 2.读入数据


前言

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.读入数据

在这里插入图片描述

from torch.utils.data import Dataset
from PIL import Image
import osclass 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_dirreturn img, labeldef __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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 区块链国赛第六套样题(关于运维)
  • Java基础——自学习使用(多态)
  • TCP与UDP传输的学习
  • GraphQL:API开发的未来,重塑数据交互的艺术
  • 发条朋友圈赚900,这钱太好赚了吧?
  • 照片逼真肖像动画的音频驱动合成——AniPortrait翻译与调试
  • 【YOLO5 项目实战】(7)YOLO5 手势识别
  • 45+用户占比近30%,网文产业如何赋能IP长链?
  • 如何使用gewe开发微信机器人
  • 010 OSS文件上传
  • 自动化开发流程:使用 GitHub Actions 进行 CI/CD
  • 使用 Dify 和 AI 大模型理解视频内容:Qwen 2 VL 72B
  • React+Vis.js(05):vis.js的节点的点击事件
  • 主机安全-网络攻击监测
  • 观测云对接 Pinpoint 最佳实践
  • Angular 响应式表单之下拉框
  • axios 和 cookie 的那些事
  • canvas 五子棋游戏
  • create-react-app做的留言板
  • DataBase in Android
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HTML5新特性总结
  • Node项目之评分系统(二)- 数据库设计
  • text-decoration与color属性
  • Vue组件定义
  • 当SetTimeout遇到了字符串
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 关于springcloud Gateway中的限流
  • 简析gRPC client 连接管理
  • 今年的LC3大会没了?
  • 利用jquery编写加法运算验证码
  • 如何借助 NoSQL 提高 JPA 应用性能
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #07【面试问题整理】嵌入式软件工程师
  • #1015 : KMP算法
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #微信小程序(布局、渲染层基础知识)
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (C语言)二分查找 超详细
  • (pojstep1.1.2)2654(直叙式模拟)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (第30天)二叉树阶段总结
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET大文件上传知识整理
  • .Net的DataSet直接与SQL2005交互
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .net项目IIS、VS 附加进程调试
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @private @protected @public
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性