pytorch数据读取深入理解

news2024/12/23 0:12:24

来源:投稿 作者:小灰灰
编辑:学姐

了解数据

Q:我现在什么基础也没有,我要学习深度学习,学习cv,学习nlp。

A:首先我们知道,深度学习是建立在数据集的基础上。现在呢,我要有数据,数据可以选择官网下载,或者自己手机上随便找些数据。

假设我有下图人民币数据,有100张一元人民币和一百张100元人民币,总共200张,使用代码划分为训练,验证,测试集比例为8:1:1

现在我有数据啦,但怎么训练呢,就要了解epochiterationbatchsize

Epoch:是整个训练集数据样本都输入到模型里面了,称为一个epoch。

iteration:是一批样本输入到模型中,就称为一个iteration。

batchsize:是批大小,假设我们有一个数据集,里面包含80张图片,我把batchsize设置为8,那么我们需要10个iteration才能训练完整个数据集,就是一个epoch。

代码加载数据

现在我们知道了数据集,那么用代码怎样实现加载呢,就会用到pytorch框架里面的dataset,dataloader,或者tensorflow,mxnet框架里面的数据加载的方法。 我们要设置读取数据集的硬盘路径,

接下来构建dataset和dataloader

#构建MyDataset实例

train_data = RMBDataset(data_dir=train_dir, transform=train_transform)

valid_data = RMBDataset(data_dir=valid_dir, transform=valid_transform)
#构建DataLoder

train_loader = DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)

valid_loader = DataLoader(dataset=valid_data, batch_size=BATCH_SIZE)

上面是准备工作,具体的开始在

for i, data in enumerate(train_loader):
    #print(data)
    # forward
    inputs, labels = data

    outputs = net(inputs)

可以看到train_loader里面会调用RMBDataset,那么下图就是这个类,最主要的就是__getitem__函数的编写。输入框架中随机打乱的index,得到数据和标签。因此,pytorch会从dataset里面shuffle=True的条件下,随机打乱形成index,复写__getittem__函数,将下标index输入,实现自己的功能。

因此最终获取数据出来的结果为:获取到图片的路径,然后用image读取出来。

我们现在开始训练,拿到train_loader里面的值,就可以了。

数据预处理

当然上面的步骤只是单独的获取到了数据集,如果我们想要提高模型的泛化能力,就得使用transforms,对图片进行数据中心化,缩放,裁剪,填充等的一些操作,当然pytorch下的torchvision里面已经做好了基本的一些数据增强的操作。

那么我们就要知道,在框架中应该怎么写,根据上图RMBDataset这个类,在创建mydataset的时候就已经传进去框架里面指定好的数据增强类型。

# 构建MyDataset实例

train_data = RMBDataset(data_dir=train_dir, transform=train_transform)

valid_data = RMBDataset(data_dir=valid_dir, transform=valid_transform)

那么我们就需要知道,到底框架哪里执行transforms运算。

根据第二步,我们在getitem中获取到数据,下一步就是数据增强。

这里的self.transform就会根据写的数据增强进行运算。

以上就是对数据进行处理的过程,那么对每一步数据增强,我们都可以进行可视化,看效果是否与自己一样。

点击下方卡片关注《学姐带你玩AI》🚀🚀🚀

回复“环境搭建”免费领取AI开发环境搭建视频教程

码字不易,欢迎大家点赞评论收藏!

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

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

相关文章

【C++】C++11 ~ 右值引用和移动语义

🌈欢迎来到C专栏~~右值引用和移动语义 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一…

mongodb 使用密钥文件身份验证部署副本集

一 副本集介绍 集群中每个节点有心跳检测 如果由于资源限制,可以部署一主一从一仲裁 副本集集群可以实现主从的自动切换 Read Preference 在客户端连接中,可以实现读取优先,就是连接器会自动判断,把读取请求发送到副本集中的…

whois命令常见用法

whois命令常见用法whois命令简介安装whoisWindows使用whoisLinux安装whoiswhois常见用法Linux下whois查询域名注册信息whois命令简介 whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。…

分析第一个安卓项目

整体分析 .gradle和.idea 这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去手动编辑。 app 项目中的代码、资源等内容几乎都是放置在这个目录下的。 gradle 这个目录下包含了gradle wrapper的配置文件,使…

flowable流程设计器的几个bug修改记录

今天根据客户反馈开源项目宁波阿成 (nbacheng) - Gitee.com 有一些bug,主要是前端的,所以今天修正一下 1、对于第一个节点是发起人,后面是多人选择的时候,approval数据被清空了 就是上面的流程,发现有问题 对这种情…

实例13:体育竞技分析

高手过招,胜负只在毫厘之间 计算思维:抽象自动化 模拟:抽象比赛过程自动化执行N场比赛 当N越大时,比赛结果分析会越科学 自顶向下:解决复杂问题的有效方法,将总问题拆分为小问题,分而治之自底向…

【微服务】分布式搜索引擎elasticsearch(3)

分布式搜索引擎elasticsearch(3)1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric聚合语法1.2.5.小结1.3.RestAPI实现聚合1.3.1.API语法1.3.2.业务需求1.3.3.业务实现2.自动补全2.1.拼音分…

微信小程序 java php校园快递物流取件及上门服务

系统分为用户和管理员两个角色 用户的主要功能有: 1.用户注册和登陆系统 2.用户查看系统的公告信息 3.用户在线快递下单,支付订单,在线订购快递取件 4.用户在线预约快递,填写快递预约信息 5.用户个人中心在线充值 6.用户个人中心修…

若依配置教程(七)Excel预览功能实现

实现效果及源码 实现效果如下图所示: 实现思路: 1.动态表格:定义表头数组,表格遍历表头生成表格列 2.读取excel文件内容,封装表头,绑定表格数据 代码修改 首先参考若依官网,先实现excel导入功…

浅析综合型大厦视频监控平台建设的必要性和重点功能

一、方案背景随着现代科学技术的发展,监控系统已成为综合型大厦安全防范必不可少的一部分。为了保障整个大厦的安全管理,借助安防监控系统能够迅速而有效地全面管理、禁止或处理突发性事件。因此建设一套优良的监控系统对于大厦各方面的管理都显得尤为重…

从零开始配置vim(31)——git 配置

很抱歉又拖更了这么久了,在这个新公司我想快速度过试用期,所以大部分的精力主要花在日常工作上面。但是这个系列还是得更新下去,平时只能抽有限的业余时间来准备。这就导致我写这些文章就慢了一些。 废话不多说,咱们正式开始有关g…

【Leetcode】面试题 01.06. 字符串压缩、面试题 05.07. 配对交换

作者:一个喜欢猫咪的的程序员 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 面试题 01.06. 字符串压缩: 面试题 05.07. 配对交换 面试题…

【贪心数学困难题】1739. 放置盒子

⭐️前面的话⭐️ 本篇文章介绍【贪心数学困难题】1739. 放置盒子题解,展示语言java。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由未见花闻原创&am…

20份可视化大屏模板,直接套用真香(文末附源码)

最近有不少小伙伴问我:有没有数据可视化大屏模板,而且要B格很高的。 这不,立马安排。特地给大家准备了20张精美、炫酷而且十分实用的可视化大屏模板,涉及机械、加工、零售、银行、交通等行业。 只要你有数据就能够迅速套用到模板…

Spring-IOC/DI配置管理第三方bean

Spring-IOC/DI配置管理第三方bean 1,IOC/DI配置管理第三方bean 1.1 案例:数据源对象管理 本次案例将使用咱们前面提到过的数据源Druid(德鲁伊)和C3P0来配置学习下。 1.1.1 环境准备 学习之前,先来准备下案例环境: 创建一个Maven项目 pom.xml添加依…

代码随想录day52 动态规划

代码随想录day52 动态规划 题1143.最长公共子序列 1,本题和最长重复子数组的区别在于本题不要求连续,那么当遇到元素不相同时不能重头开始累计,而应该取前面情况中的最大值。 2,dp数组依然为dp[i][j]:长度为[0, i -…

提取页码去重再编号

实例需求:A列为档号数据,由多段数字组成,使用减号作为分隔符,最后一段数字代表页数,注意页数是不连续的,倒数第二段数字是代表档案中的第几本,每个档案都是从1开始。现在需要在B列创建“卷内顺序…

A股level2行情数据接口可以获取可转债数据吗?

可以的,究竟如何通过level2行情获取可转债数据? level2行情数据接口数据包括每只股票每3秒的快照数据,每10秒的快照数据毫秒级差别推送数据,收集多个逐笔成交数据和逐笔委托数据。 通过数据提供商获取即时收集数据和盘后数据。数…

七、请求和响应

请求和响应 web框架本质就是处理用户发起的请求,然后返回响应结果。请求,和响应就是框架中的数据流。 请求 当页面被请求时,django会创建一个HttpRequest对象,该对象包含关于请求的元数据。然后django加载适当的视图&#xff0…

[NOI Online 2021 入门组] 切蛋糕

题目描述: Alice、Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕。 三个人的需求量分别为 a,b,c现在请你帮他们切蛋糕,规则如下: 每次切蛋糕可以选择蛋糕的任意一条直径,并沿这条直径切一刀(注意…