当前位置: 首页 > news >正文

深度学习(PyTorch)——加载数据初认识与实战操作

B站UP主“我是土堆”视频内容

pytorch中涉及到读取和加载数据的两个类分别是Dataset和Dataloader。

下图中,不同颜色的圈圈假设为垃圾(数据),不同颜色为不同的垃圾数据

Dataset主要作用是提取出可回收垃圾(我们需要的数据),并且给每一个具体垃圾(数据)进行编号,同时可以获取该数据的标签。 

Dataloader可以对Dataset里的可回收垃圾进行打包,比如送进网络时候,不是一个一个送进去,而是有一个batch_size的批量大小送进去网络训练。比如下图中,对Dataset里的0123数据进行打包。

实战操作如下:

打开pycharm,输入from torch.utils.data import Dataset,相当于从torch这个大工具箱里面的常用工具区里取出需要的工具,用help(Dataset)查看一下官方文档解释

Dataset是一个抽象类,所有的数据集都需要去继承这个类,所有的子类都须重写__getitem__方法,这个方法主要是获取每个数据及其对应的标签,还可以选择去重写__len__方法,可以获得数据集的大小。

如何获取图片的绝对地址和相对地址?看下图

copy path是复制数据的绝对路径,copy relative path是复制数据的相对路径,一般情况下用相对路径比较多一些

 在window下,绝对路径需要用2个斜杠(\),如下图所示

img=Image.open(img_path)可以获取该路径img_path下的数据信息,img.size可以查看图片的大小,如下图所示 

img.show()可以展示该图片

os.listdir(dir_path)是把该路径下的文件名变成一个列表 ,如下图所示

 os.path.join()可以把输入的上下级路径拼接起来

类当中使用self的意义:一个函数当中的变量是不能传递给另一个函数的,而使用self的话,可以把该函数的变量给当前类其他函数使用,相当于指定了一个类当中的全局变量,例如self.root_dir=root_dir,此时的self.root_dir便是当前类的全局变量

train_dataset = ants_dataset + bees_dataset表示蚂蚁数据集加上蜜蜂数据集,可以把两个小的数据集进行拼接,单独运行该程序可以得到如下结果

0~123均为蚂蚁数据,其余的为蜜蜂数据

程序如下:

from torch.utils.data import Dataset
import os
from PIL import Image

class MyData(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, idx):
        img_name =self.img_path[idx]
        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/train"
ant_label_dir="ants"
bees_label_dir="bees"
ants_dataset = MyData(root_dir,ant_label_dir)
bees_dataset = MyData(root_dir,bees_label_dir)

train_dataset = ants_dataset + bees_dataset

相关文章:

  • MIKE水动力笔记15_数字化海图4之制作xyz水深数据
  • flex布局(理论+案例解释)
  • 如何选择合适的渠道与客户建立联系
  • 08c++呵呵老师【给子弹添加爆炸效果】
  • 【C++】泛型编程
  • JavaScript进阶(三)
  • Spring常见问题解决 - Required request body is missing
  • C++学习笔记——02
  • CREO图文教程:三维设计案例之风扇叶制作图文教程之详细攻略
  • 【写在中秋时刻】硬件冷钱包、软件冷钱包、多签(Multisig)钱包多视角比较分析
  • Java项目:SSM农业信息管理系统
  • Web安全—Web漏扫工具NetSparker安装与使用
  • 【Git】Git的使用与学习
  • centos7之service文件详解及systemctl命令使用
  • ROS1云课→13三维可视化工具rviz
  • Elasticsearch 参考指南(升级前重新索引)
  • java2019面试题北京
  • Javascript弹出层-初探
  • Java面向对象及其三大特征
  • node 版本过低
  • spring boot 整合mybatis 无法输出sql的问题
  • yii2中session跨域名的问题
  • 阿里云Kubernetes容器服务上体验Knative
  • 精彩代码 vue.js
  • 如何在 Tornado 中实现 Middleware
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 算法-图和图算法
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 异步
  • 用jquery写贪吃蛇
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 最近的计划
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #WEB前端(HTML属性)
  • $L^p$ 调和函数恒为零
  • (vue)页面文件上传获取:action地址
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (全注解开发)学习Spring-MVC的第三天
  • (学习日记)2024.01.09
  • (一) springboot详细介绍
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)jQuery 基础
  • (转)四层和七层负载均衡的区别
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .skip() 和 .only() 的使用
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @TableLogic注解说明,以及对增删改查的影响
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [BSGS算法]纯水斐波那契数列