1.pytorch加载收数据(B站小土堆)

2024-05-05 17:20
文章标签 数据 加载 pytorch 土堆

本文主要是介绍1.pytorch加载收数据(B站小土堆),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据的加载主要有两个函数:

1.dataset整体收集数据:提供一种方法去获取数据及其label,告诉我们一共有多少数据(就是自开始把要的数据和标签都收进来)

2.dataloader后面传入模型时候,每次录入数据的方法

※想使用这两个函数,要引入pytorch库,并且从torch“工具箱”utils的data模块中拿出函数

import pytorch
from torch.utils.data import Dataset,DataLoader#其他下面要用的
from PIL import Image   
import os   #os.path.join(A,B); os.listdir(转换成列表的文件夹)



Dataset

1.官网解释:

2.准备工作/相关工作解释:

1.安装opencv

(注意要安装opencv,怎么安装?)

无论是opencv还是tensorflow啥的,都要先进入虚拟化环境

(anconda创建虚拟环境:conda create --name ×× python=3.8)

 (激活、进入环境:conda activate ××

安装opencv:conda install ××(这里是opencv-python)

注:什么是opencv,opencv和pillow(PIL):

OpenCV(Open Source Computer Vision Library)和 PIL(Python Imaging Library)都是用于图像处理和计算机视觉任务的库(本质上是同级的关系,但是opencv适用于更复杂的图像处理),但它们有一些区别和各自的优势:

  1. 功能特点

    • PIL 主要专注于基本的图像处理任务,如图像加载、保存、调整大小、旋转、裁剪等,以及一些简单的滤波和颜色空间转换。
    • OpenCV 不仅提供了图像处理功能,还提供了更多复杂的计算机视觉算法,如特征检测、目标识别、摄像头捕获、视频处理等。
  2. 性能

    • OpenCV 通常在处理大型图像和实时视频时表现更优,因为它经过了高度优化,采用了底层优化的C/C++代码实现,并且支持多线程处理。
    • PIL 在一些简单的图像处理任务上可能更轻量级和简单,但对于复杂的任务和大规模数据处理,性能可能不如 OpenCV。
  3. 语法和接口

    • PIL 的语法相对简单易懂,适合初学者和快速开发。
    • OpenCV 的 API 更庞大和复杂,但也更灵活,可以进行更多种类的图像处理和计算机视觉任务。
  4. 应用场景

    • 如果只需要进行简单的图像处理,如调整大小、转换格式等,而且希望代码简单易懂,可以选择使用 PIL。
    • 如果需要进行复杂的计算机视觉任务,如目标检测、特征提取、实时视频处理等,或者需要高性能和灵活性,可以选择使用 OpenCV。

2.对图片的操作——PIL库的image模块(控制台写代码就是一步一步的看运行的效果,在总面板上就是写完整个完整代码,然后看运行结果)

1.为方便,将图片文件引入改代码文件夹(文件夹 直接操作即可)

2.在控制台中引入pillow库(PIL)中的Image模块 。“from PIL import Image”

3.写入图片路径,用变量"img_path"接收,注意路径的写法:  如:“  img_path="D:\\demo\\images\\0.jpg"          ”

复制后写入控制台,然后将单斜杠“\”都写成“\\”

4.打开此路径 “img=Image.open(img_path)

5.对图片进行相应的操作,如img.size  ;img.show()等

▨这个PIL库很常用到,基本上涉及图片就会引入

并且,这个库中的open函数与是常用的

from PIL import Image``````
path=“xx/xx/xx.jpg”img=Image.open(path)`````

▨绝对地址要改双杠,相对地址直接单杠

3.将图片名称写成列表(总体获取图片名称)

1.引入os库:import os

2.写入图片文件夹地址

这里不用变双斜杠root="D:\demo..."

3.用os中的listdir将该文件夹下的路径都变为列表形式     img_list=os.listdir(root)

4.直接用用列表名查看对应的名称即可 img_list[0]

4.将路径和“标签”进行拼接 ——os.path.join(A,B)

1.写入标签 img_label="plant diseases"(不过一般这里是所存在的文件夹名称,因为后序很可能用到相应的操作,如果单纯随意出来的一个名称,后序可能无法执行)

2.拼接(注意,拼接的是标签和文件夹,不是上面图片路径的列表) lastpath=os.path.join(root,img_label)

常见的写法是:root=“D:\demo\cnn\AgriculturalDisease_trainingset”或者用

                        label_dir=“image”

例2:拼接出具体图片地址用列表w)

3.整个dataset函数:

总训练集可以直接用+来拼接,但是使用加号的的前提是,在mydataset函数中正确写入——len——函数,注意这个len函数是图像列表的长度,不是某一图像名称的长度

控制台看效果:

具体实例化:



其他:

1.打开jupyter notebook的方法:

(base) PS C:\Users\WZS-CN> conda activate pytorch_learn
(pytorch_learn) PS C:\Users\WZS-CN> jupyter notebook

2.函数中变量写法——“self.××”是啥意思

就是本质上函数里面定义的变量是局部变量,不可以跨函数使用,但是我需要库函数使用,让她类似于一个函数内部定义的全局变量,那么就用“self.××”

在总面板上写的代码,可以在控制台一步一步写出然后运行,但是相应的变量名中不会有self出现,这种在控制台进行验证会方便我们观察,相当于就是在def中写函数,在控制台写相应的具体实现来验证函数

这篇关于1.pytorch加载收数据(B站小土堆)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962243

相关文章

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很