PyTorch入门教学——加载数据(Dataset)

1、简介

  • PyTorch中如何读取数据主要涉及到两个类,分别为Dataset和Dataloader。
    • Dataset:创建可被Pytorch使用的数据集
    • Dataloader:向模型传递数据
  • 本文主要讲解Dataset的使用方法。

2、Dataset

2.1、查看使用方法

  • 打开Anaconda Prompt,进入pytorch虚拟环境(conda activate pytorch),输入下面命令,打开Jupyter。(使用Jupyter输出的结果更加清晰)
  • 新建一个文件(可自行选择创建位置)。
  • 输入下面指令,按Shift+回车运行。
    • 也可以输入下列指令。
  • 有下列描述可知,Dataset是一个抽象类,所有的数据集都需要继承这个类。并且所有子类都需要重写__getitem__方法来获取每一个数据的标签。

2.2、应用

  • 使用PyCharm打开pytorch项目。如果没有,请参考:PyTorch入门教学——使用PyCharm创建一个PyTorch项目-CSDN博客,创建一个。
  • 新建一个python文件。
  • 数据集下载:https://download.pytorch.org/tutorial/hymenoptera_data.zip,将下好的数据集放入pytorch项目中。
    • 该数据集分为训练数据集和验证数据集。
    • 两个数据集中包含了蚂蚁和蜜蜂的图片,可以用来做二分分类,识别图片为蚂蚁还是蜜蜂。
  • 打开read_data.py,写入下列代码。
    • from torch.utils.data import Dataset
      from PIL import Image  # 获取图片
      import os  # 提供一些方法
      
      
      class MyData(Dataset):  # 继承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, item):
              img_name = self.img_path[item]  # 获取每一个图片名称
              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/ReadData/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  # 整个训练数据集
      # 图片展示
      img1, label1 = train_dataset[123]  
      img1.show()  # 展示蚂蚁图片
      img2, label1 = train_dataset[124]
      img2.show()  # 展示蜜蜂图片
    • 分别将蚂蚁和蜜蜂的图片提取并展示出来。 
      •  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/199433.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

双十二有什么好物是值得推荐?智能家居好物推荐

都知十一月份跟十二月份都有两个大促的时间,那就是双十一跟双十二,距离双十一过去已经半个月了,是不是还有很多朋友在双十一的时候也没有买尽兴,别慌!错过了双十一咱还有双十二,双十二的优惠力度也不会低于…

mysql 性能排查

mysql 下常见遇到的问题有,mysql连接池耗尽,死锁、慢查、未提交的事务。等等我们可能需要看;我们想要查看的可能有 1.当前连接池连接了哪些客户端,进行了哪些操作 2.当前造成死锁的语句有哪些,是哪个客户端上的&#x…

链接共享平台LinkStack

什么是 LinkStack ? LinkStack 是一个独特的平台,为在线管理和共享链接提供了高效的解决方案。平台提供了一个类似于 Linktree 的网站,它可以让用户克服社交媒体平台上只能添加一个链接的限制。借助 LinkStack,用户可以轻松链接到…

Labview Lite Note

目录 001十六进制字符串转浮点数002浮点数转十六进制字符串 001十六进制字符串转浮点数 002浮点数转十六进制字符串

使用elasticsearch-head插件修改elasticsearch数据

1、先使用elasticsearch-head插件基本查询功能找到要修改的数据,看看是否存在 2、切换到elasticsearch-head复合查询界面,输入数据修改地址: http://es的ip地址:端口号/索引名称/文档类型(没特殊设置过就是_doc)/文档…

jenkins pipeline 运行超时后强制停止

在Jenkins中,Pipeline是一种用于定义持续集成/持续交付(CI/CD)流程的工具。有时候,Pipeline的执行可能会超时,需要强制停止。 要在Jenkins Pipeline中设置超时,并在超时后强制停止运行,可以使用…

AntDB数据库:从海量数据处理,到5G计费商用核心

AntDB数据库自2008年研发面世以来,首先被应用于运营商的核心系统,满足运营商海量数据处理的需求。随着数字科技的不断发展,AntDB也在不断地更新迭代,逐渐地为更多行业与客户提供更全面的服务。5G时代来临,AntDB抓住发展…

uniapp设置手机通知权限

提醒用户开启通知权限,与unipush功能联用 效果图: 方法: 直接使用即可,在真机或模拟器运行 setPermissions() {// #ifdef APP-PLUS if (plus.os.name Android) { // 判断是Androidvar main plus.android.runtimeMainActivity…

【人工智能】人工智能的技术研究与安全问题的深入讨论

前言 人工智能(Artificial Intelligence),英文缩写为AI。 它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是新一轮科技革命和产业变革的重要驱动力量。 📕作者简介&#x…

【专题】支持向量机(Support Vector Machines,SVM)

​​​​​ ​​ 支持向量机(Support Vector Machines,SVM)是一种强大的监督学习模型,常用于分类、回归和异常值检测任务。它的核心思想是通过构建一个最大间隔超平面来有效地分隔不同类别的数据点。 在SVM中,数据点…

心大数据结构题型

选择题 2021 数据处理的单位:数据元素 矩阵压缩存储 2022 ①单链表头插法选择 ②矩阵压缩存储,行优先 ③删除链表节点的时间复杂度 ④稀疏矩阵存储 ⑤平衡二叉树时间复杂度 ⑥栈和队列的出队,问栈的大小至少多少 ⑦拓扑排序 ⑧参考书 360…

力扣142. 环形链表 II

文章目录 力扣142. 环形链表 II示例代码实现总结收获 力扣142. 环形链表 II 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达&#xff0c…

VT-VRPA2-1-1X/V0/T5控制4WRE6比例方向阀放大板

带阀芯位移反馈不带集成式放大器比例方向阀控制放大器,替代力士乐同型号产品,可以完全互换使用;适用于控制力士乐系列带电位置反馈的4WRE6通径和4WRE10通径2X系列比例方向阀;0~10V、4~20mA指令控制信号任意可选;直接安…

【算法刷题】Day8

文章目录 202. 快乐数解法: 11. 盛最多水的容器解法: 202. 快乐数 原题链接 拿到题,我们先看题干 把一个整数替换为每个位置上的数字平方和,有两种情况: 重复这个过程始终不到 1(无限死循环)结…

基于Java SSM框架+Vue实现药品保健品购物网站项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现药品保健品购物网站演示 摘要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 ssm药源购物网站,主要的模块包括两个用户,管理员权限:用…

盘点67个Android系统源码安卓爱好者不容错过

盘点67个Android系统源码安卓爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 源码下载链接:https://pan.baidu.com/s/1zOSFwPJwDJLFfoeRJy9llg?pwd8888 提取码:8888 项目名称 Accelera…

C# datagridview控件 绑定数据库中表中数据的方式-3

1.如下图所示,为数据库中的一张表结构,注意该表中共有11个字段 2.首先在窗体后台代码中拖入一个datagridview控件,并在窗体加载时,给datagridview控件添加列,添加的方式如下所示:请注意,每个列…

Zip压缩包密码如何取消?有密码?无密码?

Zip压缩包可以进行加密,相信大家都很了解,那么zip压缩包取消密码,大家了解多少呢?有密码的情况下,有哪些方法可以取消密码?无密码又该如何取消密码?今天将方法总结分享给大家。 最原始的方法&a…

Vim多行编辑

Vim多行编辑 Ctrlq进入多行编辑模式,然后上下选择要编辑的行 按下I或者Shifti,进入编辑模式 编辑的时候多行不会同时变化,不要担心,确实是多行编辑 编辑完成,想要结束多行编辑,按下Esc,此时…

Vue基本使用(一)

📑前言 本文主要是【Vue】——Vue基本使用的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&#x…