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

news2024/12/23 10:38:26

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()  # 展示蜜蜂图片
    • 分别将蚂蚁和蜜蜂的图片提取并展示出来。 
      •  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在表格中显示字典的内容(根据后端返回的数据)vue3

进入页面,调接口,后端返回数据,indexType为0或者1,要用这个数据显示字典的内容 用插槽拿到数据 写一个函数,在模板中使用 const { proxy } getCurrentInstance(); // 字典-指标类型 const { index_type } proxy.u…

java:jpa、Hibernate、Spring Data JPA、ORM以及和mybatis的区别

文章目录 Java连接数据库几种方式JPAHibernate和Spring Data JPAORM框架jpa和mybatis区别Spring Boot JPA使用例子1、创建库和表2、添加依赖3、配置数据源和Hibernate属性4、配置实体类5、创建一个继承JpaRepository的接口:6、创建一个控制器(Controller…

混合云案例:利用 Databend Cloud 高效加速私有 Databend 的策略与实施

背景 Databend 是一款基于对象存储的存算分离湖仓产品,已成为云上大数据分析中高效且低成本的首选解决方案。目前,Databend 在多个用户场景中得到广泛应用,包括: 新媒体行业数据分析及大屏数据展示云上 CDH 替代以减少本地磁盘和…

DDD 系统间的七种关系梳理与实践

系统间的七种关系 本节将根据耦合度从高到低逐一探讨这些关系。耦合度高有时并不是坏事,它能够让团队内部的系统更加内聚,而不是无法整合的碎块。我们应该根据具体情况进行选择。 因为系统间关系往往也是组织架构的反映,此处每种关系除了描…

9.Spring 整合 Redis

引入依赖:spring-boot-starter-data-redis配置 Redis:配置数据库参数、编写配置类,构造 RedisTemplate访问 Redis: redisTemplate.opsForValue() redisTemplate.opsForHash() redisTemplate.opsForList() redisTemplate.opsForSe…

vue3默认插槽、具名插槽以及作用域插槽实现父子组件通信

默认插槽与具名插槽 父组件 <template><div><h1>我是父组件</h1><child><div style"color: red">我是从父元素插入的值(默认插槽)</div><template #juming><div style"color: green">我是从父元素…

2023亚马逊云科技re:Invent,在开发者板块探究如何利用技术重塑业务

美国当地时间11月27日&#xff0c;一年一度的亚马逊云科技re:Invent大会在美国拉斯维加斯盛大开幕。这场全球云计算领域的前沿盛会&#xff0c;已连续12年成为引领行业的风向标。那么本次2023亚马逊云科技re:Invent大会又有哪些可玩、可看的新项目&#xff0c;下面就一起来瞧一…

评价体系如何构建?

本文将针对权重计算的一些常见问题进行说明&#xff1a;如组合赋权法的综合权重值如何计算&#xff1f;多层级权重如何计算&#xff1f;用多种方法计算得到的权重如何合并为综合权重用于之后的分析&#xff1f;常见的不同权重计算方法的搭配方式&#xff1f; 一、九种权重计算…

(2)(2.1) Lightware SF40/C(360度)

文章目录 前言 1 安装SF40c 2 连接自动驾驶仪 3 通过地面站进行配置 4 参数说明 前言 Lightware SF40/C 360 度激光雷达(Lightware SF40/C 360degree lidar)可在 Copter-3.4 及更高版本的 Loiter 模式下用于物体回避。 &#xff01;Warning 该功能尚未在各种情况下进行过…

网络运维与网络安全 学习笔记2023.11.28

网络运维与网络安全 学习笔记 第二十九天 今日目标 OSPF汇总之域间路由、OSPF汇总之外部路由、OSPF链路认证 OSPF安全认证之区域认证、OSPF虚链路 OSPF汇总指域间路由 项目背景 企业内网运行多区域的OSPF网络&#xff0c;在R1 上存在多个不稳定的链路 R1上的不稳定链路&a…

如何与LEONI建立EDI连接?

莱尼LEONI是一家为汽车及其他行业提供能源数据管理产品、解决方案及服务的全球供应商。供应链范围从研发生产标准化电缆、特种电缆和数据电缆到高度复杂的布线系统和相关组件。本文将介绍如何与莱尼LEONI建立EDI连接。 什么是EDI&#xff1f; EDI全称Electronic Data Interch…

linux(2)之buildroot使用手册

Linux(2)之buildroot配置toolchain Author&#xff1a;Onceday Date&#xff1a;2023年11月27日 漫漫长路&#xff0c;才刚刚开始… 参考文档&#xff1a; Buildroot - Making Embedded Linux Easy 文章目录 Linux(2)之buildroot配置toolchain1. 构建配置1.1 配置config生成…

Spring之AOP理解与应用(更新中)

1. AOP的认识 面向切面编程&#xff1a;基于OOP基础之上新的编程思想&#xff0c;OOP面向的主要对象是类&#xff0c;而AOP面向的主要对象是切面&#xff0c;在处理日志、安全管理、事务管理等方面有非常重要的作用。AOP是Spring中重要的核心点&#xff0c;AOP提供了非常强…

【Python小游戏】推荐8款自由的Python游戏项目

推荐8款自由的Python游戏项目 今天给大家推荐8款不错的Python小游戏&#xff0c;这些小游戏所有项目文件&#xff08;包括所需的所有代码、图像和音频文件&#xff09;&#xff0c;给大家已经放到平台的下载频道&#xff0c;需要的可以注意一下文末的链接地址。 下面给大家简单…

Matlab进阶绘图第34期—双三角热图

在《Matlab进阶绘图第29期—三角热图》中&#xff0c;我分享过三角热图的绘制模板。 然而&#xff0c;有的时候&#xff0c;为了节省版面或者方便对比等&#xff0c;需要在一张图上绘制两个三角热图的组合形式&#xff0c;且每个三角热图使用不同的配色方案&#xff0c; 由于…

C++ 红黑树的封装

一.map/set的封装 在实现了红黑树的部分功能后&#xff0c;我们可以便可以将红黑树作为底层结构来封装map 和 set &#xff0c;但是问题也随之而来。我们都知道map是k-v的数据模型&#xff0c;而set是k的数据模型&#xff0c;我们难道要去使用两棵红黑树来封装吗&#xff1f;显…

2023年汉字小达人市级比赛最后一天的整体复习建议和5个提醒

今天是2023年11月29日&#xff0c;明天&#xff08;11月30日&#xff0c;星期四&#xff09;就是2023年汉字小达人市级活动&#xff08;市级比赛&#xff09;比赛的日子了。从孩子今天16点30放学&#xff0c;到明天16点开始比赛&#xff0c;除去生活时间、写学校作业&#xff0…

echarts图表滚动条带动页面窗口滚动条的问题

网上搜了很多方法不管用&#xff0c;后来发现每次滚动echarts或者左右滑动echarts下方都会报错&#xff0c;报错提示如下&#xff0c;看看你们的图表是否这样报错&#xff1a; 报错信息如下&#xff1a;Unable to preventDefault inside passive event listener invocation 原…

什么是Geo Trust OV证书

一、GeoTrust OV证书的介绍 GeoTrust OV证书是由GeoTrust公司提供的SSL证书&#xff0c;它是一种支持OpenSSL的数字证书&#xff0c;具有更高的安全性和可信度。GeoTrust是全球领先的网络安全解决方案提供商&#xff0c;为各类用户提供SSL证书和信任管理服务。GeoTrust OV证书…