Pytorch使用Dataset加载数据
1、前言:
在阅读之前,需要配置好对应pytorch版本。
对于一般学习,使用cpu版本的即可。参考教程点我
导入pytorch包,使用如下命令即可。
import torch # 注意虽然叫pytorch,但是在引用时是引用torch
2、神经网络获取数据
神经网络获取数据主要用到Dataset和Dataloader两个方法
Dataset主要用于获取数据以及对应的真实label
Dataloader主要为后面的网络提供不同的数据形式
在torch.utils.data包内提供了DataSet类,可在Pytorch官网看到对应的描述
class Dataset(Generic[T_co]):r"""An abstract class representing a :class:`Dataset`.All datasets that represent a map from keys to data samples should subclassit. All subclasses should overwrite :meth:`__getitem__`, supporting fetching adata sample for a given key. Subclasses could also optionally overwrite:meth:`__len__`, which is expected to return the size of the dataset by many:class:`~torch.utils.data.Sampler` implementations and the default optionsof :class:`~torch.utils.data.DataLoader`. Subclasses could alsooptionally implement :meth:`__getitems__`, for speedup batched samplesloading. This method accepts list of indices of samples of batch and returnslist of samples... note:::class:`~torch.utils.data.DataLoader` by default constructs an indexsampler that yields integral indices. To make it work with a map-styledataset with non-integral indices/keys, a custom sampler must be provided."""def __getitem__(self, index) -> T_co:raise NotImplementedError("Subclasses of Dataset should implement __getitem__.")# def __getitems__(self, indices: List) -> List[T_co]:# Not implemented to prevent false-positives in fetcher check in# torch.utils.data._utils.fetch._MapDatasetFetcherdef __add__(self, other: "Dataset[T_co]") -> "ConcatDataset[T_co]":return ConcatDataset([self, other])# No `def __len__(self)` default?# See NOTE [ Lack of Default `__len__` in Python Abstract Base Classes ]# in pytorch/torch/utils/data/sampler.py
根据上述描述可知,Dataset是一个抽象类,用于表示数据集。你可以通过继承这个类并实现以下方法来自定义数据集:
__len__(self): 返回数据集的大小,即数据集中有多少个样本。
__getitem__(self, idx): 根据索引 idx 返回数据集中的一个样本和对应的标签。
3、案例
使用Dataset读取文件夹E:\Python_learning\Deep_learning\dataset\hymenoptera_data\train\ants下所有图片。并获取对应的label,该数据集的文件夹的名字为对应的标签,而文件夹内为对应的训练集的图片。
import os
from torch.utils.data import Dataset
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transformsclass MyDataset(Dataset):def __init__(self, root_path, label):self.root_path = root_pathself.label = labelself.img_path = os.path.join(root_path, label) # 拼接路径print(f"图片路径: {self.img_path}") # 打印路径以进行调试try:self.img_path_list = os.listdir(self.img_path) # 列出文件夹中的文件print(f"图片列表: {self.img_path_list}") # 打印图片列表以进行调试except PermissionError as e:print(f"权限错误: {e}")except FileNotFoundError as e:print(f"文件未找到错误: {e}")def __getitem__(self, index):img_index = self.img_path_list[index]img_path = os.path.join(self.img_path, img_index)try:img = Image.open(img_path)except Exception as e:print(f"读取图片时出错: {e}, 图片路径: {img_path}")raise elabel = self.labelreturn img, labeldef __len__(self):return len(self.img_path_list)# 实例化这个类
my_data = MyDataset(root_path=r'E:\Python_learning\Deep_learning\dataset\hymenoptera_data\train', label='ants')
writer = SummaryWriter('logs')
for i in range(my_data.__len__()):img, label = my_data[i] # 依次获取对应的图片# 此处img为PIL Image, 使用transforms中的ToTensor方法转化为tensor格式writer.add_image(tag=label, img_tensor=transforms.ToTensor()(img), global_step=i)
writer.close()
print(f"当前文件夹下{i + 1}张图片已读取完毕,请在Tensorboard中查看")

在控制台输入tensorboard --logdir='E:\Python_learning\Deep_learning\note\logs'打开tensorboard查看


相关文章:
Pytorch使用Dataset加载数据
1、前言: 在阅读之前,需要配置好对应pytorch版本。 对于一般学习,使用cpu版本的即可。参考教程点我 导入pytorch包,使用如下命令即可。 import torch # 注意虽然叫pytorch,但是在引用时是引用torch2、神经网络获取…...
【nginx】nginx的优点
目录 一、高性能1.1 高并发处理1.2 低内存消耗1.3 快速响应 二、高扩展性2.1 模块化设计2.2 动态模块扩展 三、高可靠性3.1 核心框架稳定3.2 进程管理3.3 负载均衡与健康检查3.4 热部署 四、功能丰富4.1 反向代理4.2 HTTP缓存4.3 安全功能 五、易于配置和管理5.1 配置文件简单5…...
K8S ingress 初体验 - ingress-ngnix 的安装与使用
准备环境 先把 google 的vm 跑起来… gatemanMoreFine-S500:~/projects/coding/k8s-s/service-case/cloud-user$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 124d v1.23.6 k8s-no…...
qt 获取父控件
在 Qt 中,你可以通过调用 QWidget 的 parentWidget() 方法来获取一个控件的父控件。这个方法会返回一个指向父控件的指针,如果该控件没有父控件,则返回 nullptr。 以下是一个简单的示例,展示了如何获取一个按钮的父控件ÿ…...
flask基础配置详情
前言 一个简单的应用 app Flask(__name__) app.route("/") def hello_world():return "<p>Hello,World!"运行Flask应用 #flask命令运行flask --app hello run#使用Python命令进行运行python -m flask # 作为一个捷径,如果文件名为 app…...
单相整流-TI视频课笔记
目录 1、单相半波整流 1.1、单相半波----电容滤波---超轻负载 1.2、单相半波----电容滤波---轻负载 1.3、单相半波----电容滤波---重负载 2、全波整流 2.1、全波整流的仿真 2.2、半波与全波滤波的对比 3、全桥整流电路 3.1、全波和全桥整流对比 3.2、半波全波和全桥…...
用GPT 4o提高效率
**GPT-4o可以通过提高编程效率、优化工作流程、增强文档管理和知识分享等多方面帮助用户提升工作效率**。具体如下: 1. **代码生成与优化** - **快速原型开发**:程序员可以通过向GPT-4o描述需求或功能来生成初步的代码框架或关键函数,从而节省…...
20240711每日消息队列-------------MQ消息的积压的折磨
目标 解决MQ消息的积压 背景 菜馆系统----------- 系统读取消息,处理业务逻辑,持久化订单和菜品数据,然后将其显示在菜品管理客户端上。 最初我们的用户基数很小,上线后的一段时间内,MQ消息通信还算顺利。 随着用户…...
推荐一个比 Jenkins 使用更简单的项目构建和部署工具
最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具,完全可以满足个人以及一些小企业的需求,分享一下。 项目介绍 Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。 日常开发中,Jpom 可以解…...
java 在pdf中根据关键字位置插入图片(公章、签名等)
java 在pdf中根据关键字位置插入图片(公章、签名等) 1.使用依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.12</version><type>pom</type>…...
施耐德EOCR系列电机保护器全面升级后無端子型
一、施耐德数码型产品升级背景 施耐德电气作为一家全球领先的能源管理和自动化解决方案提供商,其产品线包括各种电动机保护器等数码型产品。随着技术的不断发展和市场需求的变化,施耐德会对其产品进行定期升级和优化。在升级过程中,产品的设…...
27.数码管的驱动,使用74HC595移位寄存器芯片
PS:升腾A7pro系列FPGA没有数码管外设,因此以AC620FPGA为例展开实验。 (1)共阳极数码管和共阴极数码管示意图: AC620中的数码管属于共阳极数码管,段选端口(dp,g,f,e,d,c,b,a)低电平即可点亮led。人眼的视觉…...
TCP/IP 原理、实现方式与优缺点
TCP/IP(传输控制协议/网际协议) 是互联网的核心协议套件,主要用于在不同计算机之间进行通信。它包括多个层次的协议,每层协议负责不同的功能。TCP/IP 的四个层次模型如下: 网络接口层:负责在特定的物理网络…...
利率债与信用债的区别及其与债券型基金的关系
利率债与信用债的定义及其区别 定义 利率债: 定义:利率债是指由主权或类主权主体(如中华人民共和国财政部、国家开发银行等)发行的债券。这些债券通常被认为没有信用风险,因为它们由国家信用背书。特点:由…...
linux下解压命令
在Linux下,解压缩文件通常涉及多种命令,具体取决于文件的压缩格式。以下是一些常用的解压缩命令: tar.gz / .tgz 如果文件扩展名为 .tar.gz 或 .tgz,你可以使用 tar 命令来解压缩: tar -xzf filename.tar.gz这里的 -x …...
Vulnhub靶场DC-3-2练习
目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. joomla漏洞查找2. SQL注入漏洞3. 破解hash4. 上传一句话木马5. 蚁剑连接shell6. 反弹shell7. 提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-3-2.zip 介绍&#…...
Swift入门笔记
Swift入门笔记 简单值控制流函数和闭包对象和类枚举和结构体并发协议和扩展错误处理泛型 简单值 // 声明变量 var myVariable 42 myVariable 50// 声明常量 let myConstant 42// 声明类型 let implicitInteger 70 let implicitDouble 70.0 let explicitDouble: Double 7…...
【提交ACM出版 | EIScopus检索稳定 | 高录用】第五届大数据与社会科学国际学术会议(ICBDSS 2024,8月16-18)
第五届大数据与社会科学国际学术会议(ICBDSS 2024)将于2024年08月16-18日在中国-上海隆重举行。 ICBDSS会议在各专家教授的支持下,去年已成功举办了四届会议。为了让更多的学者有机会参与会议分享交流经验。本次会议主要围绕“大数据”、“社…...
Postman与世界相连:集成第三方服务的全面指南
🔌 Postman与世界相连:集成第三方服务的全面指南 Postman不仅是API开发和测试的强大工具,还支持与多种第三方服务的集成,从而扩展其功能,提高开发和测试的效率。本文将深入探讨如何在Postman中集成第三方服务…...
Perl 语言开发(十四):数据库操作
目录 1. 数据库连接 2. 基本数据库操作 2.1 插入数据 2.2 查询数据 2.3 更新数据 2.4 删除数据 3. 高级查询 3.1 多表连接 3.2 子查询 3.3 聚合查询 4. 事务处理 5. 数据库连接池 6. 常见的数据库模块 7. 综合实例 结论 数据库操作是大多数软件系统的核心部分。…...
Hogan.js Lambda功能详解:高级模板替换技术终极指南
Hogan.js Lambda功能详解:高级模板替换技术终极指南 【免费下载链接】hogan.js A compiler for the Mustache templating language 项目地址: https://gitcode.com/gh_mirrors/ho/hogan.js Hogan.js是一个高效的Mustache模板引擎编译器,它提供了强…...
NSSM保姆级教程:除了FRP,你的这些Windows命令行工具也能开机自启
NSSM终极指南:让任意Windows命令行工具化身系统服务 每次重启电脑后手动启动爬虫脚本、数据同步工具或是游戏服务器,是不是已经让你精疲力尽?作为Windows高级用户,我们需要的不仅是简单的开机自启,而是像系统服务一样可…...
OpenClaw健康管理助手:Qwen2.5-VL-7B解析体检报告生成健康建议
OpenClaw健康管理助手:Qwen2.5-VL-7B解析体检报告生成健康建议 1. 为什么需要AI健康管理助手 去年体检后,我面对十几页的体检报告陷入了困惑。那些医学术语和密密麻麻的数值让我无从下手,直到发现关键指标异常才匆忙就医。这种经历促使我思…...
免费AI创作+零跳转!影刀6.0在百家号当前页全自动发文
免费AI创作零跳转!影刀6.0在百家号当前页全自动发文百家号创作者的福音来啦🥳人已经坐在百家号创作页面里了不用自己费脑想标题、写正文,影刀RPA直接调用免费AI大模型,一键搞定爆款创作不用切页、不用手动输入,AI自动贴…...
ST-Link固件升级全攻略:从Keil MDK到STM32CubeIDE,解决“检测不到芯片”的玄学问题
ST-Link固件升级实战指南:跨越IDE差异的稳定调试之道 当红色LED灯开始不规则闪烁,调试窗口弹出"Device not detected"的瞬间,每个STM32开发者都经历过这种挫败感。固件版本不匹配、IDE兼容性问题、时好时坏的连接状态——这些看似…...
Phi-4-mini-reasoning模型微调入门:使用自有数据提升领域推理能力
Phi-4-mini-reasoning模型微调入门:使用自有数据提升领域推理能力 1. 为什么需要微调推理模型 在实际业务场景中,通用大模型虽然具备强大的推理能力,但在特定领域的表现往往不尽如人意。比如在法律条文解读或医疗诊断建议这类专业领域&…...
软件测试新方法:利用Lingbot-Depth-Pretrain-ViTL-14进行GUI界面立体元素测试
软件测试新方法:利用Lingbot-Depth-Pretrain-ViTL-14进行GUI界面立体元素测试 你有没有遇到过这种情况?一个软件界面看起来功能都正常,按钮能点,输入框能输,但用起来就是感觉“不对劲”。比如,一个弹窗好像…...
EcomGPT开源模型应用案例:某东南亚跨境服务商集成EcomGPT构建SaaS工具
EcomGPT开源模型应用案例:某东南亚跨境服务商集成EcomGPT构建SaaS工具 1. 引言:当跨境电商遇上AI大模型 想象一下这个场景:一家东南亚的跨境服务商,每天要处理成千上万个来自不同国家的商品信息。他们的客户是那些想把商品卖到全…...
快速验证科研工具想法:用快马AI十分钟搭建中科院分区查询原型
作为一名科研工作者,我经常需要查询期刊的中科院分区信息。传统方式要么是手动查阅PDF表格,要么依赖第三方收费工具,效率很低。最近尝试用InsCode(快马)平台快速搭建了一个查询原型,整个过程比想象中简单很多。 需求分析 首先明确…...
探索16极18槽轴向磁通永磁电机:基于Maxwell的模型解析
基于maxwell的16极18槽轴向磁通永磁电机模型,功率1500w,外径190mm。 输出转矩3.7Nm.可用于轴向电机设计学习。 大致参数波形见图。最近在研究轴向磁通永磁电机,今天和大家分享基于Maxwell搭建的一款16极18槽轴向磁通永磁电机模型,这款电机功率…...
