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

pytorch深度学习——dataset(附数据集下载)

在学习深度学习的时候,我们需要考虑如何去处理数据去训练我们的模型,pytorch为我们提供了Dataset和DataLoader两个类来对数据进行处理,前者作用是提供了一种方式来获取数据及其label,后者的作用是为网络提供不同的数据形式。本文主要讲第一个类——Dataaet.

一、Dataset的作用

如图,我们举个例子,我们这里有很多和数据(左边每一个图形代表一个数据),其中我们需要获取圆形的数据,通过Dataset,我们可以将所有的圆拿出来,放到我们的数据集当中,并且每一个数据都有自己的label,比如说红色、绿色。并且数据集会将每一个数据进行编号,所以我们可以归纳出Dataset的作用:

1.获取每一个数据以及其label

2.告诉我们在数据集中有多少个数据

 二、Dataset的使用

1.数据集下载

在使用Dataset之前,建议大家先去下载一个数据集,下面提供一个国内的数据集下载地址:

数据集下载icon-default.png?t=N7T8https://aistudio.baidu.com/datasetoverview/2/1

下载解压后放在项目文件夹下就行。

2.类的定义

我们创建一个新文件,起名为demo1.py

导入工具:

from torch.utils.data import Dataset
from PIL import Image
import os

我们通过查看文档可知,所有的数据集都应该继承Dataset类,并且子类都必须重写__getitem__方法,该方法的主要作用是获取每一个数据以及其label,也可以选择性重写__len__方法,获取数据集的大小。

所以我们定义一个类MyData

MyData(Dataset):
#构造方法,将文件夹名称以及子文件夹传入def __init__(self,root_dir,label_dir):self.root_dir = root_dirself.label_dir=label_dirself.path=os.path.join(self.root_dir+self.label_dir)self.Img_path=os.listdir(self.path)#获取数据集中第idx个数据以及其label,我们可以通过索引获取数据对象def __getitem__(self, inx):Img_name = self.Img_path[inx]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,label#获取数据集的长度def __len__(self):return len(self.Img_path)

3.测试

我们通过以下代码来进行演示:

在我的项目中,有flowers这个数据集,然后下面又分了几个文件夹代码不同的花的数据集 

我们想获取第4张雏菊的照片,我们的根数据集是flowers,我们就可以创建daisy_label数据集对象。

root_dir = "folwers\\"#表示根目录为flowers,这里用两杠是因为要构成转义字符
daisy_dir = "daisy" #表示我们需要的数据在“daisy”文件夹下面
daisy_dataset = MyData(root_dir,daisy_dir)

然后,我们获取第4个数据和它的label并将其展现出来

img,lebel = daisy_dataset.__getitem__(4)
img.show()
print(lebel)

我们得到以下运行结果:

成功获取到了目标数据和它的label。

三、源码展示

MyData(Dataset):
#构造方法,将文件夹名称以及子文件夹传入def __init__(self,root_dir,label_dir):self.root_dir = root_dirself.label_dir=label_dirself.path=os.path.join(self.root_dir+self.label_dir)self.Img_path=os.listdir(self.path)#获取数据集中第idx个数据以及其label,我们可以通过索引获取数据对象def __getitem__(self, inx):Img_name = self.Img_path[inx]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,label#获取数据集的长度def __len__(self):return len(self.Img_path)root_dir = "flowers\\"
daisy_label_dir = "daisy"
daisy_dataset = MyDate(root_dir,flowers_label_dir)img,lebel = daisy_dataset.__getitem__(4)
img.show()
print(lebel)

相关文章:

pytorch深度学习——dataset(附数据集下载)

在学习深度学习的时候,我们需要考虑如何去处理数据去训练我们的模型,pytorch为我们提供了Dataset和DataLoader两个类来对数据进行处理,前者作用是提供了一种方式来获取数据及其label,后者的作用是为网络提供不同的数据形式。本文主…...

springboot+vue考试管理系统

基于springboot和vue的考试管理系统 001 springboot vue前后端分离项目 本文设计了一个基于Springbootvue的前后端分离的在线考试管理系统,采用M(model)V(view)C(controller)三层体系结构&…...

自动驾驶建图--道路边缘生成方案探讨

自动驾驶建图–道路边缘生成方案探讨 一、背景 对于自动驾驶来说,建图是必不可少的,目前主流厂商技术都在从HD到"无图"进行过渡筹备中,不过想要最终实现真正的"无图"还是有很长的一段路要走。 对于建图来说,…...

图片编辑器中实现文件上传的三种方式和二进制流及文件头校验文件类型

背景 最近在 vue-design-editor 开源项目中实现 psd 等多种文件格式上传解析成模板过程中, 发现搞定设计文件上传没有使用 input 实现文件上传, 所以我研究了一下相关技术, 总结了以下三种文件上传方法 input 文件选择window.showOpenFilePicker 和 window.showDirectoryPicke…...

深度学习,CRNN+CTC和Attention OCR你更青睐哪一种?

深度学习在OCR领域的应用已经取得了瞩目的成果,而选择合适的算法对于提升OCR的识别准确率至关重要。在众多算法中,CRNN和Attention OCR犹如两颗璀璨的明珠,备受瞩目。 CRNN,这位结合了卷积神经网络(CNN)和…...

飞桨AI应用@riscv OpenKylin

在riscv编译安装飞桨PaddlePaddle参见: 算能RISC-V通用云编译飞桨paddlepaddleopenKylin留档_在riscv下进行paddlelite源码编译-CSDN博客 安装好飞桨,就可以用飞桨进行推理了。刚开始计划用ONNX推理,但是在算能云没有装上,所以最…...

在MongoDB建模1对N关系的基本方法

“我在 SQL 和规范化数据库方面拥有丰富的经验,但我只是 MongoDB 的初学者。如何建立一对 N 关系模型?” 这是我从参加 MongoDB 分享日活动的用户那里得到的最常见问题之一。 我对这个问题没有简短的答案,因为方法不只有一种,还有…...

C++基础之运算符重载(十一)

首先为什么要对运算符进行重载&#xff1f;因为C内置的运算符只能作用于一些基本数据类型&#xff0c;而对类和结构体这种自定义数据类型是不管用的。所以这时我们需要对运算符进行重新定义满足一定的运算规则。 运算符重载的三种形式 1.以普通的函数进行重载 #include <…...

初始Java篇(JavaSE基础语法)(2)(逻辑控制)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 目录 逻辑控制 顺序结构 分支结构 if语句 switch 语句 循环结构 while 循环 for 循环 do while 循环 输入输出 输出到控制台 从键盘输入 …...

家用路由器和企业路由器的区别?

一、家用路由器 家用路由器路由器交换机 它只有一个WAN口和一个LAN口&#xff0c;WAN口接公网一个地址&#xff0c;LAN口接你电脑一个IP地址&#xff0c;完全符合路由器的设计&#xff0c;而因为家里如果用了&#xff0c;说明要接多个电脑&#xff0c;那么如果还需要对每个接口…...

Gin简介(Go web基础知识)

Gin简介 https://geektutu.com/post/quick-go-gin.html我是从这个网站上面摘录的&#xff0c;就是做个笔记&#xff0c;仅分享。膜拜极客兔兔大佬 Go特性&#xff1a; 快速&#xff1a;路由不使用反射&#xff0c;基于Radix树&#xff0c;内存占用少。 中间件&#xff1a;HT…...

HBase的Bulk Load流程

目录 1. 数据准备 2. 文件移动 3. 加载数据 4. Region处理 5. 元数据更新 6. 完成加载 7. 清理 8. 异常处理 LoadIncrementalHFiles&#xff08;也称为Bulk Load&#xff09;是HBase中一种将大量数据高效导入到HBase表的机制。以下是LoadIncrementalHFiles的主要流程步…...

vue中图片替换 遇到问题

问题&#xff1a; 在img标签里动态绑定路径&#xff1a;<img v-bind:src"imgSrc" /> data里这样写是错误的&#xff1a;imgSrc:xx/xx.png 这样渲染的路径会有问题&#xff0c;导致出不来图片 解决了 是这样的 data(){return(){imgSrc:require("../…...

Android 观察者模式

在Android中&#xff0c;观察者模式&#xff08;Observer Pattern&#xff09;是一种常用的设计模式&#xff0c;用于在对象之间建立一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。在Android开发中&#xff0…...

阿里云部署MySQL、Redis、RocketMQ、Nacos集群

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容MySQL集群配置云服务器选购CPU选择内存选择云盘选择ESSD AutoPL云盘块存储性能&#xff08;ESSD&#xff09; 镜像选择带宽选择密码配置注意事项 安装docker和docker-compose部署MySQL三主六从半同步集群一主二从同步集群规…...

day05-店铺营业状态设置

1. Redis入门 1.1 Redis简介 Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 官网&#xff1a; https://redis.io 中文网&#xff1a; https://www.redis.net.cn/ 主要特点&#xff1a; 基于内存存储&#xff0c;读写性能高…...

哈希表(c++)

1、介绍 哈希表&#xff0c;也称为散列表&#xff0c;是一种非常高效的数据结构。它通过将键&#xff08;Key&#xff09;映射到数组的特定位置来快速查找、插入和删除数据。这个映射过程由哈希函数&#xff08;Hash Function&#xff09;完成&#xff0c;该函数将键转化为一个…...

C#基础-标识符命名规则

目录 1、标识符定义 2、遵循规则 3、标识符的例子 4、MSDN中英文解释 英文...

Zabbix Web界面中文汉化

要想达到上图的效果&#xff0c;第一步先查看 /usr/share/zabbix/assets/fonts/ [rootservice yum.repos.d]# ll /usr/share/zabbix/assets/fonts/ 总用量 0 lrwxrwxrwx. 1 root root 33 3月 23 16:58 graphfont.ttf -> /etc/alternatives/zabbix-web-font 继续查看graph…...

esp32CAM环境搭建(arduino+MicroPython+thonny+固件)

arduino ide 开发工具 arduino版本&#xff1a;1.8.19 arduino ide 中文设置&#xff1a;​ file >> preferences >> ​ arduino IDE 获取 ESP32 开发环境&#xff1a;打开 Arduino IDE &#xff0c;找到 文件>首选项 ,将 ESP32 的配置链接填入附加开发板管理网…...

Sentinel-3B OLCI 3 级全球分箱地球观测降分辨率(ERR)叶绿素(CHL)数据,版本 2022.0

Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) Data, version 2022.0 简介 叶绿素 a 数据集提供全球网格化的表层叶绿素 a 浓度&#xff08;浮游植物生物量的替代指标&#xff09;合成数据。CHL 支持时间序列和气候…...

Hitboxer:开源SOCD清理工具,3分钟提升游戏操作精准度

Hitboxer&#xff1a;开源SOCD清理工具&#xff0c;3分钟提升游戏操作精准度 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否在激烈的游戏对抗中经历过这样的挫败&#xff1a;同时按下左右方向键时角色卡…...

【CP-05】RTE运行时环境 - SWC的操作系统接口

CP-05_RTE运行时环境【CP-05】RTE运行时环境 - SWC的“操作系统接口”前言在AUTOSAR架构中&#xff0c;RTE&#xff08;Runtime Environment&#xff0c;运行时环境&#xff09;是一个常被提及却难以理解的概念。它像是应用层软件组件&#xff08;SW-C&#xff09;与底层基础软…...

ZMJS,把 JavaScript 解释器放进 SAP ABAP 应用服务器之后,很多扩展思路会变得不一样

我今天看这个 oisee/zmjs 仓库时,最吸引人的不是它把 JavaScript 语法做进了 ABAP,而是它选择了一条非常 SAP 的路线,纯 ABAP、无外部依赖、无 Kernel Module、以类和接口的形式运行在 SAP 应用服务器内部。仓库自己的定位很直接,ZMJS 是一个面向 SAP ABAP 的 Mini JavaScr…...

别再只用递归了!用C语言栈实现非递归快速排序,内存效率提升实战

从递归到迭代&#xff1a;C语言栈实现非递归快速排序的工程实践 在嵌入式开发和大规模数据处理场景中&#xff0c;递归实现的快速排序常常面临栈溢出风险。当排序10万个元素的数组时&#xff0c;递归深度可能达到log₂100000≈17层&#xff0c;在仅有2KB栈空间的STM32F103上极易…...

3步零基础掌握星露谷物语SMAPI模组加载器:高效管理你的模组世界

3步零基础掌握星露谷物语SMAPI模组加载器&#xff1a;高效管理你的模组世界 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI SMAPI&#xff08;Stardew Valley Modding API&#xff09;是星露谷物语官…...

8大网盘文件直链一键获取:LinkSwift让你的下载速度突破限速瓶颈

8大网盘文件直链一键获取&#xff1a;LinkSwift让你的下载速度突破限速瓶颈 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云…...

Hyper-V离散设备分配图形化解决方案:企业级虚拟化性能优化实践

Hyper-V离散设备分配图形化解决方案&#xff1a;企业级虚拟化性能优化实践 【免费下载链接】DDA 实现Hyper-V离散设备分配功能的图形界面工具。A GUI Tool For Hyper-Vs Discrete Device Assignment(DDA). 项目地址: https://gitcode.com/gh_mirrors/dd/DDA 在数字化转…...

代码跑偏白盒补漏:判定节点覆盖全路径测试

位于程序逻辑分叉处&#xff0c;起着关键开通作用的判定节点&#xff0c;意义无比重大。于程序运行进程里&#xff0c;每一条if语句、else语句以及switch语句背后&#xff0c;事实上都暗藏着一条独具特色且彼此独立的执行回路。而测试覆盖的核心使命&#xff0c;就是要把这些回…...

后端开发者体验 AI 前端:用 TinyVue 做一个智能业务表单 Demo

摘要 作为 Java 后端开发者&#xff0c;我平时更多关注接口、SQL 和业务逻辑&#xff0c;但后台系统里也绕不开表单、列表和报表页面。本文结合 OpenTiny NEXT 学习体验&#xff0c;用 TinyVue 做一个智能业务表单 Demo&#xff0c;聊聊 AI 前端对后端开发者到底有没有实际帮助…...