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

CIFAR10图像分类学习笔记(三)---数据加载load_cifar10

新创建一个load_cifar10源文件

需要导入的包

import glob
from torchvision import transforms
from torch.utils.data import DataLoader ,Dataset
import os
#读取工具
from PIL import Image
import numpy as np

 01同样定义10个类别的标签名数组

label_name = ["airplane","automobile","bird","cat","deer","dog","frog","horse","ship","truck"]

02将类别存放到字典label_dict中,并将本来对应的10个分类的字符串airplane、bird等一一对应顺序递增的从0开始递增的数字

#将类别存到字典中
label_dict={}
#将字符串全部转换成数字
for idx, name in enumerate(label_name):label_dict[name] = idx

 03自定义一个数据集加载的类

class MyDataset(Dataset):

类中有一个init初始化方法和两个方法,一个用于读取数据并根据transform判断是否应该对训练的数据进行数据增强,如图片的旋转、颜色增强、灰度增强等;另一个用于获取图片总共的数量

init函数:

    def __init__(self,im_list,transforms=None,loader = default_loader):#入参是所有文件列表,传入数据增强的函数super(MyDataset,self).__init__()#图像列表imgs = []for im_item in im_list:#"E:\CIFAR10\TRAIN\airplane\aeroplane_s_000037.png"im_label_name=im_item.split("\\")[-2]#倒数第二个就是标签名#新列表imgs[]imgs.append([im_item,label_dict[im_label_name]])#路径im_item,ID#类内变量self.imgs=imgs#每一个图片元素self.transform=transforms#数据增强方法self.loader=loader#数据加载(读取)方法

这其中自定义的默认default_loader如下

def default_loader(path):#采用PRL完成对图像数据的读取return Image.open(path).convert("RGB")

 getitem函数:

     #定义对数据的读取以及数据的增强,返回图片的数据和分类(label)def __getitem__(self,index):#根据索引值im_path,im_label=self.imgs[index]im_data=self.loader(im_path)#如果没有数据增强if self.transform is not None:im_data=self.transform(im_data)#主要定义的是训练数据集的数据增强return im_data,im_label

 len函数:

    def __len__(self):return len(self.imgs)

04拿到训练、测试数据的列表

#拿到训练数据的列表
im_train_list=glob.glob("E:/CIFAR10/TRAIN/**/*.png")#斜杠要变成这种正的原因是\是反斜杠有可能出现转义的问题
#测试数据的列表
im_test_list=glob.glob("E:/CIFAR10/TEST/**/*.png")

 05拿到训练、测试数据的数据集,并对数据集进行读取

train_dataset = MyDataset(im_train_list,transforms = train_transform)
test_dataset=MyDataset(im_test_list,transforms.ToTensor)#不进行数据增强
#对数据集读取
train_dataloader=DataLoader(dataset=train_dataset,batch_size=6,shuffle=True,num_workers=4)
test_dataloader=DataLoader(dataset=test_dataset,batch_size=6,shuffle=False,num_workers=4)

这其中的方法要自己组合定义如下:

train_transform=transforms.Compose([transforms.RandomResizedCrop((28,28)),#调用完这个方法尺寸会变小到28,28,原来是32*32transforms.RandomHorizontalFlip(),#默认概率0.5transforms.RandomVerticalFlip(),#翻转后数据label会发生变化,需要修改相应的labeltransforms.RandomRotation(90),#旋转角度在-90和90之间transforms.RandomGrayscale(0.1),#随机转换成灰度,概率为0.1transforms.ColorJitter(0.3,0.3,0.3,0.3),#颜色增强#将PRL的数据转换为网络输入的数据transforms.ToTensor()
])

06最后输出打印训练集和测试集的数量

print("训练集数量",len(train_dataset))
print("测试集数量",len(test_dataset))

得到的结果是:

相关文章:

CIFAR10图像分类学习笔记(三)---数据加载load_cifar10

新创建一个load_cifar10源文件 需要导入的包 import glob from torchvision import transforms from torch.utils.data import DataLoader ,Dataset import os #读取工具 from PIL import Image import numpy as np 01同样定义10个类别的标签名数组 label_name ["airpl…...

计算机视觉cv入门之答题卡自动批阅

前边我们已经讲解了使用cv2进行图像预处理与边缘检测等方面的知识,这里我们以答题卡自动批阅这一案例来实操一下。 大致思路 答题卡自动批阅的大致流程可以分为这五步:图像预处理-寻找考试信息区域与涂卡区域-考生信息区域OCR识别-涂卡区域填涂答案判断…...

Java学习手册:JSON 数据格式基础知识

1. JSON 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。它最初来源于 JavaScript,但如今已被许多语言所采用,包括 Java、Python、C 等。JSON 以…...

【Python爬虫详解】第四篇:使用解析库提取网页数据——BeautifuSoup

在前一篇文章中,我们学习了如何编写第一个爬虫程序,成功获取了网页的HTML内容。然而,原始HTML通常包含大量我们不需要的信息,真正有价值的数据往往隐藏在HTML的标签和属性中。这一篇,我们将学习如何使用Python的解析库…...

《重塑AI应用架构》系列: Serverless与MCP融合创新,构建AI应用全新智能中枢

在人工智能飞速发展的今天,数据孤岛和工具碎片化问题一直是阻碍AI应用高效发展的两大难题。由于缺乏统一的标准,AI应用难以无缝地获取和充分利用数据价值。 为了解决这些问题,2024年AI领域提出了MCP(Model Context Protocol模型上…...

深度图可视化

import cv2# 1.读取一张深度图 depth_img cv2.imread("Dataset_depth/images/train/1112_0-rgb.png", cv2.IMREAD_UNCHANGED) print(depth_img.shape) cv2.imshow("depth", depth_img) # (960, 1280) print(depth_img)# 读取一张rgb的图片做对比 input_p…...

【调优】log日志海量数据分表后查询速度调优

原始实现 使用pagehelper实现分页 // 提取开始时间的年份和月份&#xff0c;拼装成表名List<String> timeBetween getTimeBetween(condition);List<String> fullTableName getFullTableName(Constants.LOG_TABLE_NAME, timeBetween);PageHelperUtil.startPage(c…...

hive默认的建表格式

在 Hive 中创建表时&#xff0c;默认的建表语法格式如下&#xff1a; CREATE TABLE table_name (column1_type,column2_type,... ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE;在这个语法中&#xff1a; CREATE TABLE table_name&#xff1a;指定要创建…...

sass 变量

基本使用 如果分配给变量的值后面添加了 !default 标志 &#xff0c;这意味着该变量如果已经赋值&#xff0c;那么它不会被重新赋值&#xff0c;但是&#xff0c;如果它尚未赋值&#xff0c;那么它会被赋予新的给定值。 如果在此之前变量已经赋值&#xff0c;那就不使用默认值…...

微软Edge浏览器字体设置

前言 时间&#xff1a;2025年4月 自2025年4月起&#xff0c;微软Edge浏览器的默认字体被微软从微软雅黑替换成了Noto Sans&#xff0c;如下图。Noto Sans字体与微软雅黑风格差不多&#xff0c;但在4K以下分辨率的显示器上较微软雅黑更模糊&#xff0c;因此低分辨率的显示器建议…...

Vue生命周期详细解析

前言 Vue.js作为当前最流行的前端框架之一&#xff0c;其生命周期钩子函数是每个Vue开发者必须掌握的核心概念。本文将全面解析Vue的生命周期&#xff0c;帮助开发者更好地理解Vue实例的创建、更新和销毁过程。 一、Vue生命周期概述 Vue实例从创建到销毁的整个过程被称为Vue…...

基于c#,wpf,ef框架,sql server数据库,音乐播放器

详细视频: 【基于c#,wpf,ef框架,sql server数据库&#xff0c;音乐播放器。-哔哩哔哩】 https://b23.tv/ZqmOKJ5...

前端项目搭建集锦:vite、vue、react、antd、vant、ts、sass、eslint、prettier、浏览器扩展,开箱即用,附带项目搭建教程

前端项目搭建集锦&#xff1a;vite、vue、react、antd、vant、ts、sass、eslint、prettier、浏览器扩展&#xff0c;开箱即用&#xff0c;附带项目搭建教程 前言&#xff1a;一、Vue项目下载快速通道二、React项目下载快速通道三、BrowserPlugins项目下载快速通道四、项目搭建教…...

【C++游戏引擎开发】第21篇:基于物理渲染(PBR)——统计学解构材质与光影

引言 宏观现象:人眼观察到的材质表面特性(如金属的高光锐利、石膏的漫反射柔和),本质上是微观结构对光线的统计平均结果。 微观真相:任何看似平整的表面在放大后都呈现崎岖的微观几何。每个微表面(Microfacet)均为完美镜面,但大量微表面以不同朝向分布时,宏观上会表…...

什么是Maven

Maven的概念 Maven是一个一键式的自动化的构建工具。Maven 是 Apache 软件基金会组织维护的一款自动化构建工具&#xff0c;专注服务于Java 平台的项目构建和依赖管理。Maven 这个单词的本意是&#xff1a;专家&#xff0c;内行。Maven 是目前最流行的自动化构建工具&#xff0…...

强化学习复习,价值函数的推导——北大pdf p41(ppt75)(动手学也有)

我们经常看到强化学习中有求汇报期望 E E E&#xff0c;转化为价值函数(value function) V V V&#xff0c;策略的状态价值函数(State-Value function) V π V_π Vπ​和动作价值函数&#xff08;action-value function&#xff09; Q π Q_π Qπ​。还有提到通过将期望将消除…...

neo4j中节点内的名称显示不全解决办法(如何让label在节点上自动换行)

因为节点过多而且想让节点中所有文字都显示出来而放大节点尺寸 从neo4j中导出png,再转成PDF来查看时&#xff0c;要看清节点里面的文字就得放大5倍才行 在网上看了很多让里面文字换行的办法都不行 然后找到一个比较靠谱的办法是在要显示的标签内加换行符 但是我的节点上显示的是…...

day 32 学习笔记

文章目录 前言一、模版匹配的概念二、模版匹配方法 前言 通过今天的学习&#xff0c;我掌握了OpenCV中有关模版匹配和模版匹配方法的相关原理和操作 一、模版匹配的概念 模板匹配就是用模板图&#xff08;通常是一个小图&#xff09;在目标图像&#xff08;通常是一个比模板图…...

【GIT】github中的仓库如何删除?

你可以按照以下步骤删除 GitHub 上的仓库&#xff08;repository&#xff09;&#xff1a; &#x1f6a8; 注意事项&#xff1a; ❗️删除仓库是不可恢复的操作&#xff0c;所有代码、issue、pull request、release 等内容都会被永久删除。 &#x1f9ed; 删除 GitHub 仓库步骤…...

使用Python将YOLO的XML标注文件转换为TXT文件格式

使用Python将YOLO的XML标注文件转换为TXT文件格式&#xff0c;并划分数据集 import xml.etree.ElementTree as ET import os from os import listdir, getcwd from os.path import join import random from shutil import copyfile from PIL import Image# 只要改下面的CLASSE…...

docker容器监控自动恢复

关于实现对docker容器监控以及自动恢复&#xff0c;这里介绍两种实现方案。 方案1&#xff1a; 实现思路&#xff1a; 找到&#xff08;根据正则表达式&#xff09;所有待监控的docker容器&#xff0c;此处筛选逻辑根据docker运行状态找到已停止&#xff08;Exit&#xff09;类…...

【农气项目】基于适宜度的产量预报

直接上干货&#xff08;复制到开发工具即可运行的代码&#xff09; 1. 适宜度模型及作物適宜度计算方法 2. 产量分离 3. 基于适宜度计算产量预报 1. 适宜度模型及作物適宜度计算方法 // 三基点温度配置private final double tempMin;private final double tempOpt;private f…...

1、AI及LLM基础:Python语法入门教程

Python语法入门教程 ​ 这是一份全面的Python语法入门教程,涵盖了注释、变量类型与操作符、逻辑运算、list和字符串、变量与集合、控制流和迭代、模块、类、继承、进阶等内容,通过详细的代码示例和解释,帮助大家快速熟悉Python语法。 文章目录 Python语法入门教程一、注释二…...

3台CentOS虚拟机部署 StarRocks 1 FE+ 3 BE集群

背景&#xff1a;公司最近业务数据量上去了&#xff0c;需要做一个漏斗分析功能&#xff0c;实时性要求较高&#xff0c;mysql已经已经不在适用&#xff0c;做了个大数据技术栈选型调研后&#xff0c;决定使用StarRocks StarRocks官网&#xff1a;StarRocks | A High-Performa…...

服务器上安装node

1.安装 下载安装包 https://nodejs.org/en/download 解压安装包 将安装包上传到/opt/software目录下 cd /opt/software tar -xzvf node-v16.14.2-linux-x64.tar.gz 将解压的文件夹移动到安装目录(/opt/nodejs)下 mv /opt/software/node-v16.14.2-linux-x64 /opt/nodejs …...

精益数据分析(20/126):解析经典数据分析框架,助力创业增长

精益数据分析&#xff08;20/126&#xff09;&#xff1a;解析经典数据分析框架&#xff0c;助力创业增长 在创业和数据分析的学习道路上&#xff0c;每一次深入探索都可能为我们带来新的启发。今天&#xff0c;依旧带着和大家共同进步的想法&#xff0c;我们一起深入研读《精…...

9.策略模式:思考与解读

原文地址:策略模式&#xff1a;思考与解读 更多内容请关注&#xff1a;7.深入思考与解读设计模式 引言 你是否曾遇到过这样的情况&#xff1a;在一个系统中&#xff0c;有许多算法或策略&#xff0c;每种策略的实现逻辑相似&#xff0c;但在某些情况下需要进行替换和扩展&am…...

【HCIA】简易的两个VLAN分别使用DHCP分配IP

前言 之前我们通过 静态ip地址实现了Vlan间通信 &#xff0c;现在我们添加一个常用的DHCP功能。 文章目录 前言1. 配置交换机2. 接口模式3. 全局模式后记修改记录 1. 配置交换机 首先&#xff0c;使用DHCP&#xff0c;需要先启动DHCP服务&#xff1a; [Huawei]dhcp enable I…...

【设计模式-4】深入理解设计模式:工厂模式详解

在软件开发中&#xff0c;对象的创建是一个基础但至关重要的环节。随着系统复杂度的增加&#xff0c;直接使用new关键字实例化对象会带来诸多问题&#xff0c;如代码耦合度高、难以扩展和维护等。工厂模式&#xff08;Factory Pattern&#xff09;作为一种创建型设计模式&#…...

Spring Boot 整合 JavaFX 核心知识点详解

1. 架构设计与集成模式 1.1 Spring Boot 与 JavaFX 的分层架构设计 Spring Boot 与 JavaFX 的整合需要精心设计的分层架构,以充分利用两个框架的优势。 标准分层架构 ┌────────────────────────────────────────────────…...