首页 > 编程语言 >Pytorch深度学习入门基础(三):python 加载数据初认识

Pytorch深度学习入门基础(三):python 加载数据初认识

时间:2024-08-09 14:23:43浏览次数:17  
标签:python label Pytorch 文件夹 加载 数据 我们 dir 图片

目录

 一、 导入

二、数据集中数据和 label 的组成形式

三、 Dataset 读入数据

四、Dataset 类代码实战

4.1 创建函数

4.2  设置初始化函数

4.3 读取每一个图片

4.4 设置获取数据长度函数

4.5 创建实例

4.5.1 单个图片数据集

4.5.2 多个图片数据集


       现在来开一个专栏,关于学习Pytorch深度学习的入门基础,分为好几期,我会慢慢更新,希望大家可以互相支持一下,相互学习,相互进步!下面是这个专栏的所有内容,大家可以点击下面链接跳转,我会持续更新。

Pytorch深度学习入门基础(一):环境安装配置anaconda安装及pytorch安装icon-default.png?t=N7T8https://blog.csdn.net/weixin_51971381/article/details/141034980?spm=1001.2014.3001.5501Pytorch深度学习入门基础(二):python 编辑器的选择、 安装及配置( pycharm、 jupyter)icon-default.png?t=N7T8https://blog.csdn.net/weixin_51971381/article/details/141048774        这一节我们来讲一下数据加载,在神经网络深度学习当中,加载数据集是训练模型的第一步,我们需要讲数据集加载进来进而来实现后面学习的过程。

 一、 导入

       假设我们有一堆垃圾, 我们想对这些垃圾进行分类处理, 这里我们引进一个Dataset, 它可以用来将垃圾进行分类, 并且对垃圾进行编号, 其次还可以获取垃圾对应的 label, 也就是可以提供一种方式去获取数据及其 label。
       除此之外,我们还需要把分类好的垃圾送进一个网络里面训练, 我们不会选择一个一个垃圾放进去训练, 我们会选择将一些垃圾打包送进网络里面, 这里我们就引一个 Dataloader, 为后面的网络提供不同的数据形式。


二、数据集中数据和 label 的组成形式

        接下来我们来实践一下, 我们先下载好一个数据集, 如下图所示, 在 train文件夹里面有两个物体的图片分别是 ants 和 bees, 每个文件夹里面的都说该文件夹名称对应的小动物, 因此, 在这里我们可以把图片当成数据, 把文件夹的名字当成数据对应的 label。

         还有另外的一种数据集文件的形式, 如下图所示, 训练的图片都在同一个文件夹里面( train_images) , 而训练图片对应的标签是在另外一个文件夹里面( train_labels)。
 

三、 Dataset 读入数据

首先我们先创建一个文件: read_data.py

from torch.utils.data import Dataset

从这句代码中表示的是从torch的常用工具区( utils) 的关于数据区( data) 导入 Dataset。------也就是导入一个库。

四、Dataset 类代码实战

4.1 创建函数

①先创建一个 MyData 的类, 在类里面继承 Dataset, 然后在里面先进行初始化, 就是为了创建的 class 类里面的全局变量。
②接下来我们重写 getitem 函数, 函数的参数 idx 表示的是图片的序号, 在这个函数里面我们需要用 opencv 或者从 PIL 导入 Image 来进行读取图片的绝对路径。
然后我们将数据集放到项目相同的路径下
 

接下来我们在 python 控制台来使用一下 Image 读取图片
 

        接下来如果我们要获取到所有图片的地址, 这里我们导入 os 包, 我们在将使用文件夹的相对地址, 并且将文件夹下的图片名称全部转换成一个列表, 如下图所示:

4.2  设置初始化函数

        ①我们在初始化函数当中, 设置两个参数, 第一个是 root_dir 表示的是文件夹的路径, 第二个是 label_dir, 表示的是图片的 label。
       在这里我们在介绍一下 os 的 join 函数, 如下图所示, 我们的 train 文件夹下有两个子文件夹, 分别是 ants 和 bees

       然后我们创建 root_dir 为 train 文件夹的相对路径, 把 label_dir 设置为子文件夹的名称, 接下来我们在使用 os.path.join()函数, 就可以实现将 root_dir 和label_dir 进行加起来, 实现获得 ants 或者 bees 的相对路径。 如下图所示:
 

       ②我们在初始化当中写入全局变量, 一般在初始化函数当中我们会使用 self, 它的作用是可以把 self 指定的变量给后面的变量使用, 相当于指定了该 class 里的全局变量, 这样在该 class 下的函数都是可以使用的。
       在该部分我们设置全局变量 root_dir 和 label_dir, 并且设置全局变量 path,该变量是使用 os.path.join()将 root_dir 和 label_dir 合并在一起的路径。
       除此之外我们还需要获取所有图片名称返回来的列表, 因此我们设置全局变量 img_path, 该变量使用 os.listdir()来获取。
 

4.3 读取每一个图片

       我们设置 img_name 变量, 该变量从全局变量 self.img_path 中, 通过索引( idx)获取图片的名称

接下来我们将通过 os.path.join()函数将图片的相对路径给构建出来

我们来通过 python 控制台来演示一下: 设置 idx=0, 获取到第一张图片的相对路径, 如下图所示

最后我们进行读取图片, 通过使用 PIL 中的 Image 来读取, 如下图所示:

       而在这个数据集当中, 文件夹名称就是我们的 labe, 而且在初始化当中我们已经设置了关于 label 的全局变量, 因此, 这里我们就直接把全局变量赋值给 label,最后这个函数我们需要返回 image 和 label, 如下图所示

4.4 设置获取数据长度函数

可以直接返回我们获取到图片路径的列表长度, 如下图所示:

4.5 创建实例

在我们调用前面使用的 class 的时候, pycharm 会自动告诉我们需要填写哪些参数。
 

4.5.1 单个图片数据集

       由上图可知我们需要创建一个 root_dir 和 label_dir, 因此我们设置好参数后,如下图所示:

       通过 python 控制台运行我们上方的所有代码, 可以发现我们创建的ant_dataset 调用的是 MyData, 因此会返回图片和 label 的信息:
 

4.5.2 多个图片数据集

上面我们只使用了 ants 数据集里面的图片, 接下来我们将 bees 的数据集图片也加进来:

我们将 ants 数据集和 bees 数据集合并成一个 train 训练集, 则可以直接相加,如下图所示:

如果我们需要通过窗口显示出图片, 可以使用以下代码, 我们以查看索引为1 的图片为例

OK,本期分享就到这,下一期我们继续讲解。感谢大家的阅读本文,接下来我还会持续学习并且分享更多的学习经验哦!

标签:python,label,Pytorch,文件夹,加载,数据,我们,dir,图片
From: https://blog.csdn.net/weixin_51971381/article/details/141060190

相关文章

  • python多版本共存和虚拟环境
    多版本共存1.调用方式"py-3.10",即可使用对应版本的python虚拟环境1.vscode底部切到CMD,敲"py-3.8-mvenv.venv"(虚拟环境文件夹名,通常用".venv")2.点击vscode右下角,选择虚拟环境作为解释器注:以"."开头的文件在计算机系统中通常被称为隐藏文件。这些文件在许多操作系统中默认是不......
  • Python练习:数据类型篇
    一、逻辑推理练习  1、在不运行下面程序的前提下,说出答案。 1.4.0==42."4.0"==43.bool("1")4.bool("0")5.str(32)6.int(6.26)7.float(32)8.float("3.21")9.int("434")10.int("3.42")11.bool(-1)12......
  • MySQL——使用Python操作MySQL
    文章目录安装PyMySQL使用PyMySQL操作MySQL在Python中操作MySQL数据库时,我们使用较多的库是PyMySQL,如果你选择使用PyMySQL库,那么首先需要通过pip安装它。pipinstallpymysql命令就是用来安装PyMySQL的。安装PyMySQL1.打开你的命令行工具(如cmd、PowerShell、......
  • Python按条件删除Excel表格数据的方法
      本文介绍基于Python语言,读取Excel表格文件,基于我们给定的规则,对其中的数据加以筛选,将不在指定数据范围内的数据剔除,保留符合我们需要的数据的方法。  首先,我们来明确一下本文的具体需求。现有一个Excel表格文件(在本文中我们就以.csv格式的文件为例),如下图所示。  其中,Ex......
  • Python 提取出SQL语句中Where的值的方法
    1.方法一:使用sqlparse库的方法为了提取SQL语句中WHERE子句的值,我们可以利用Python的sqlparse库,这是一个专门用于解析SQL语句的库。以下是一个示例代码,演示如何使用sqlparse来提取WHERE子句中的条件。首先,确保安装了sqlparse库。如果未安装,可以使用pip安装:bash复制代码pipins......
  • 12-python函数的传参——形参、实参、装包 *args和**kwargs
    函数的参数1形参和实参函数的参数:在定义函数时,可以再函数名后()中定义数量不等的形参,注意可以有也可以没有,可有一个也可有多个,多个形参之间用逗号隔开形参(形式参数):定义形参就相当于在函数内部声明了变量,但是并不赋值实参(实际参数):在函数定义时指定了形参,在调用的时......
  • 《信息学奥赛一本通编程启蒙》3031-3050(Scratch、C、C++、python)
    3031:练7.3买图书(C、C++、python)3031:练7.3买图书(C、C++、python)-CSDN博客3032:练7.4梯形面积(C、C++、python)3032:练7.4梯形面积(C、C++、python)-CSDN博客3033:【例8.1】人民币支付(Scratch、C、C++、python)3033:【例8.1】人民币支付(Scratch、C、C++、python)-CSDN博客3......
  • Python酷库之旅-第三方库Pandas(074)
    目录一、用法精讲301、pandas.Series.dt.components属性301-1、语法301-2、参数301-3、功能301-4、返回值301-5、说明301-6、用法301-6-1、数据准备301-6-2、代码示例301-6-3、结果输出302、pandas.Series.dt.to_pytimedelta方法302-1、语法302-2、参数302-3、......
  • python-docx 将文档根据标题二拆分为多个docx文件
    python-docx将文档根据标题二拆分为多个docx文件时隔好久,又开始搞文档了感觉搞来搞去还不如手动复制粘贴得了……只是文本内容–>简单文本内容自定义样式保持不变(有点难度)提取文档中的图片、表格(简单)按照顺序还原图片、表格到文档中,并且不改变样式(累了,毁灭吧)题注、......
  • 【Python版本】气象局天气数据采集
    分析寻找数据url经过详细的分析,发现网络请求中有一个get请求是返回全国天气最新数据。接口是这个:https://weather.cma.cn/api/map/weather/1?t=1723174351500查看请求的类型从请求头信息中发现:连接+请求方式是get查看数据从这里我们可以看到返回数据的时间于更新时......