【Pytorch】1.读取训练数据集

导入Dataset类

from torch.utils.data import Dataset
# 注意是Dataset(大写)的才是类

通过jupyter我们可以阅读一下Dataset类的具体使用方法

help(Dataset)
# 或者直接
Dataset??

在这里插入图片描述
我们可以看到具体对Dataset类的解释
从蓝色字体我们可以得出

  • 所有的代表map的数据集应该继承这个类
  • 所有继承的子类都重写__getitem__这个方法,这个方法支持获取数据样本中的指定键
  • 同时子类也要重写__len__这个方法返回数据集大小
  • 子类可以重写__getitem__,来加速样本生成
    也就是说我们要重写__getitem__方法与__len__方法

其他导入包

from PIL import Image  # 主要用于图像的操作
import os  # 文件操作

Image用于将目标路径的文件转化为可以打开的图片变量
os用于文件操作

  • listdir对目标文件夹中的文件名称列成列表
  • os.path.join用于将两个地址进行拼接

MyData类的定义

class MyData(Dataset):  # 创建一个MyData类,同时继承Dataset类def __init__(self, root_dir, label_dir):  # 类似于c++的构造函数# root_dir 一般设置为训练集文件夹的地址(train)# label_dir 一般设置为分类文件夹的地址(ants)self.root_dir = root_dirself.label_dir = label_dirself.path = os.path.join(root_dir, label_dir)  # 这个函数的作用是将root_dir的地址与label_dir的地址拼接起来self.img_path = os.listdir(self.path)  # 将特定文件夹地址(path)中的所有文件列成一个listdef __getitem__(self, index):  # 重写父类的方法img_name = self.img_path[index]  # 获取对应下标的图片名img_item_path = os.path.join(self.path, img_name)  # 获取图片路径img = Image.open(img_item_path)  # 根据图片路径打开图片# img.show()    展示图片label = self.label_dirreturn img, labeldef __len__(self):return len(self.img_path)

类的实例化

# root_dir 一般设置为训练集文件夹的地址(train)
# label_dir 一般设置为分类文件夹的地址(ants)
root_dir = "hymenoptera_data/train"
ant_label_dir = "ants"
bee_label_dir = "bees"
# 生成对应训练集的图片、标签列表
ants_dataset = MyData(root_dir, ant_label_dir)
bees_dataset = MyData(root_dir, bee_label_dir)# 列表相加,前提是必须重载__len__方法
train_dataset = ants_dataset + bees_dataset

在这里插入图片描述

源码链接

github

参考资料

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】

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

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

相关文章

QT QUICK 2 : QML与后端C++组建类MVVM结构工程最小化实现

一、采用QT对方法提供的宏进行结构MVVM的构建 1.打开QT &#xff0c;并创建QT-QUICK 工程&#xff0c;建议QT5.15及以上 2.准备 类 MyObject 其实这个类就可以作为VM使用 myobject.h #ifndef MYOBJECT_H #define MYOBJECT_H#include <QObject>class MyObject : publi…

释放创造力,低成本实现您的梦想应用 —— 尽在我们的开源低代码平台!

在数字化时代&#xff0c;每个企业都渴望拥有自己的专属应用&#xff0c;但传统开发模式的高成本和技术壁垒让许多梦想搁浅。现在&#xff0c;我们为您带来了革命性的解决方案 —— 一个开源、免费、且功能强大的低代码开发平台&#xff01; 为什么选择我们的低代码平台&#…

任务修复实例(9)

Quest Name Breaking the Chain | 斩断链条 Quest ID 25167 -- Delete Creature Spawned DELETE FROM world.creature WHERE id IN (39251,39245,39249); -- Adjust Creature States UPDATE world.creature_template SET npcflag 16777216, AIName SmartAI WHERE entry …

在线教育系统怎么运营,教育机构转化模型分析

做增长的都会明白&#xff0c;付费用户的增长才是关键&#xff0c;而且还是规模化的增长&#xff0c;毕竟拉新只是第一步&#xff0c;最重要的一步还在于如何转化。况且&#xff0c;很多人会选择尝试付费推广&#xff0c;这部分渠道用户要怎么引导购买产品&#xff0c;才能抵消…

QGraphicsView实现简易地图12『平移与偏移』

前文链接&#xff1a;QGraphicsView实现简易地图11『指定层级-定位坐标』 提供地图平移与偏移功能。地图平移是指将地图的中心点更改为给定的点&#xff0c;即移动地图到指定位置。地图偏移是指将当前视口内的地图向上/下/左/右/进行微调&#xff0c;这里偏移视口宽/高的四分之…

【C++】GNU Debugger (GDB) 使用示例

文章目录 GDB 使用示例GDB的常用命令示例 GDB 使用示例 GDB的常用命令 GDB&#xff08;GNU Debugger&#xff09;是一种Unix下的程序调试工具&#xff0c;用于调试C、C等编程语言编写的程序。以下是一些GDB的常用命令&#xff1a; 启动和退出&#xff1a; run 或 r&#xf…

【ArcGIS 脚本工具】格式化简单渲染图层或图层组

CAD加GIS是规划人的黄金搭档&#xff0c;不可偏废。 小编通常直接在ArcPro中加载CAD查看&#xff0c;这样可以保证CAD修改之后GIS能同步更新显示。 但是CAD在ArcPro中的显示多少有点水土不服。 比如湘源地块在ArcPro3.0中显示时会自动加上透明度&#xff0c;虽然这样可以看到…

汇集全球顶级AI的自助平台

1、介绍:此平台以其开放和便捷的特性,为用户提供了一个无需月费的 AI 服务入口。咱可以根据自己的需求,灵活选择和付费使用平台上的 AI 技术。 该平台强调的核心优势在于 “零门槛” 和 “按需付费”,意味着用户不需要进行大额预付或者承担长期的固定费用,而是可以根据实际…

利用爬虫解决数据采集难题

文章目录 安装为什么选择 BeautifulSoup 和 requests&#xff1f;安装 BeautifulSoup 和 requests解决安装问题 示例总结 在现代信息时代&#xff0c;数据是企业决策和发展的关键。然而&#xff0c;许多有用的数据分散在网络上&#xff0c;且以各种格式和结构存在&#xff0c;因…

设计模式学习(八)——《大话设计模式》

设计模式学习&#xff08;八&#xff09;——《大话设计模式》 单一职责原则 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;是软件开发中 SOLID 原则之一&#xff0c;由罗伯特C马丁&#xff08;Robert C. Martin&#xff09;提出。它指的是一个类…

Could not find the Qt platform plugin “dxcb“ in ““、 重点:是dxcb

这个重点就在于是dxcb不是xcb&#xff0c;让我一顿好找。 https://bugs.launchpad.net/ubuntu/source/deepin-qt5dxcb-plugin/bug/1826629 这篇文章描述了应该是deepin系统的一个问题&#xff0c;应该已经修复了不知道为什么我还会遇到。 不过知道是dxcb后直接去qtcreater里的系…

ROS 2边学边练(45)-- 构建一个能动的机器人模型

前言 在上篇中我们搭建了一个机器人模型(其由各个关节&#xff08;joint&#xff09;和连杆&#xff08;link&#xff09;组成)&#xff0c;此篇我们会通过设置关节类型来实现机器人的活动。 在ROS中&#xff0c;关节一般有无限旋转&#xff08;continuous&#xff09;,有限旋转…

Android 注解

自定义注解 注解原理 注解本质是一个接口&#xff0c;Java中所有注解都是继承了Annotation接口的 注解(…)&#xff1a;其实就是一个实现类对象&#xff0c;实现了该注解以及Annotation接口。

TB交易开拓者旗舰版自动交易的设置

本文针对TB交易开拓者旗舰版V6.0.7.0(期货程序化交易软件下载 - 交易开拓者),目前网上没有自动交易设置的完整教程&#xff0c;特写此篇。 1. 设置期货账户的自动登录和登出。点击菜单“文件/系统设置”&#xff0c;然后在“安全”tab做如下设置&#xff1a; 2 设置你的期货账…

C++向函数传递对象

C语言中&#xff0c;对象作为函数的参数和返回值的传递方式有 3 种&#xff1a;值传递、指针传递和引用传递。 1. 对象作为函数参数 把实参对象的值复制给形参对象&#xff0c;这种传递是单向的&#xff0c;只从实参到形参。因此&#xff0c;函数对形参值做的改变不会影响到实…

Sybase数据库分页查询(指定起始位置)

针对单表数据量过大的场景&#xff0c;分页查询必不可少。针对sybase数据库分页查询的案例全网稀少&#xff0c;特别是指定起始页的分页查询实现。 本文依靠实际开发场景&#xff0c;特此总结Sybase数据库分页查询&#xff08;指定起始位置&#xff09;。 目录 一、 SQL实现分…

视频号小店不直播怎么出单?这里面的秘密,一篇文章全曝光!

大家好&#xff0c;我是电商糖果 这两年关于视频号搞电商的话题度非常高&#xff0c;也吸引了很多商家入驻。 视频号因为背后巨大的私域流量池扶持&#xff0c;所以它的转化率非常高。 根据官方发出来的战报&#xff0c;我们也可以看出它的数据是翻倍增长。 在2024微信公开…

git对远程和本地分支进行重命名

要同时对Git的远程和本地分支进行重命名&#xff0c;你需要分几个步骤操作&#xff1a; 重命名本地分支 切换到其他分支&#xff1a;在重命名当前分支之前&#xff0c;确保你不在你想要重命名的那个分支上。你可以通过以下命令切换到另一个分支&#xff08;比如切换到master分…

5.06号模拟前端面试8问

5.06号模拟前端面试8问 1.promise如何实现then处理 在JavaScript中&#xff0c;Promise 是一个代表异步操作最终完成或失败的对象。它有三种状态&#xff1a;pending&#xff08;等待&#xff09;&#xff0c;fulfilled&#xff08;完成&#xff09;&#xff0c;rejected&…

红日靶场ATTCK攻击合集

工作繁忙&#xff0c;笔记更新的有比较慢&#xff0c;转到CSDN同步更新很麻烦&#xff0c;直接看原始的笔记吧。不足之处欢迎多多指点。 已经打完的靶场如下&#xff1a; 红日靶场ATT&CK1&#xff1a;https://blog.csdn.net/weixin_44288604/article/details/108172737红…