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

深度学习——划分自定义数据集

深度学习——划分自定义数据集

以人脸表情数据集raf_db为例,初始目录如下:
在这里插入图片描述
需要经过处理后返回

train_images, train_label, val_images, val_label

定义 read_split_data(root: str, val_rate: float = 0.2) 方法来解决,代码如下:

# root:数据集所在路径
# val_rate:划分测试集的比例def read_split_data(root: str, val_rate: float = 0.2):random.seed(0)  # 保证随机结果可复现assert os.path.exists(root), "dataset root: {} does not exist.".format(root)# 遍历文件夹,一个文件夹对应一个类别file_class = [cla for cla in os.listdir(root) if os.path.isdir(os.path.join(root, cla))]# 排序,保证各平台顺序一致file_class.sort()# 生成类别名称以及对应的数字索引class_indices = dict((k, v) for v, k in enumerate(file_class))json_str = json.dumps(dict((val, key) for key, val in class_indices.items()), indent=4)with open('class_indices.json', 'w') as json_file:json_file.write(json_str)train_images = []  # 存储训练集的所有图片路径train_label = []  # 存储训练集图片对应索引信息val_images = []  # 存储验证集的所有图片路径val_label = []  # 存储验证集图片对应索引信息every_class_num = []  # 存储每个类别的样本总数supported = [".jpg", ".JPG", ".png", ".PNG"]  # 支持的文件后缀类型# 遍历每个文件夹下的文件for cla in file_class:cla_path = os.path.join(root, cla)# 遍历获取supported支持的所有文件路径images = [os.path.join(root, cla, i) for i in os.listdir(cla_path)if os.path.splitext(i)[-1] in supported]# 排序,保证各平台顺序一致images.sort()# 获取该类别对应的索引image_class = class_indices[cla]# 记录该类别的样本数量every_class_num.append(len(images))# 按比例随机采样验证样本val_path = random.sample(images, k=int(len(images) * val_rate))for img_path in images:if img_path in val_path:  # 如果该路径在采样的验证集样本中则存入验证集val_images.append(img_path)val_label.append(image_class)else:  # 否则存入训练集train_images.append(img_path)train_label.append(image_class)print("{} images were found in the dataset.".format(sum(every_class_num)))print("{} images for training.".format(len(train_images)))print("{} images for validation.".format(len(val_images)))assert len(train_images) > 0, "number of training images must greater than 0."assert len(val_images) > 0, "number of validation images must greater than 0."return train_images, train_label, val_images, val_label

此时可通过以下代码获得训练集和测试集数据:

train_images, train_label, val_images, val_label = read_split_data(data_path)

完结撒花。

相关文章:

深度学习——划分自定义数据集

深度学习——划分自定义数据集 以人脸表情数据集raf_db为例,初始目录如下: 需要经过处理后返回 train_images, train_label, val_images, val_label 定义 read_split_data(root: str, val_rate: float 0.2) 方法来解决,代码如下&#xff1a…...

Jmeter性能测试之正则表达式提取器

目录 前言 1. Jmeter正则表达式提取器 2. 入门实例 3. 进阶实例 前言 Jmeter正则表达式提取器属于Jmeter后置处理器(post processors)的一种,用于将取样器请求到的结果以正则表达式的方式读取出来。 1. Jmeter正则表达式提取器 1. 作用…...

浅谈Kubernetes中Service网络实现(服务发现)

目录 CoreDNS(Kube-DNS) Kube-proxy kube-proxy的三种实现模式 iptables模式 IPVS模式 之前的文章介绍了Kubernetes中基于service实现了集群内部的网络通信,这篇文章详细聊一下Kubernetes中的Service网络本身又是如何实现的。...

【重造轮子】golang实现可重入锁

造个可重入锁的轮子 介绍目标 正文sync.Mutexsync.Mutex介绍多协程计数器demo多协程计数器加锁 源码剖析Mutex数据结构Lock()加锁核心逻辑 UnLock() 重入锁与可重入锁魔改 sync.Mutex 参考文档 介绍 开新坑啦!! 从这篇文章开始,尝试造轮子&a…...

torch显存分析——对生成模型清除显存

torch显存分析——对生成模型清除显存 1. 问题介绍2. 应对方法 1. 问题介绍 本文主要针对生成场景下,如何方便快捷地清除当前进程占用的显存。文章的重点不止是对显存的管理,还包括怎样灵活的使用自定义组件来控制生成过程。 在之前的文章torch显存分析…...

electron+vue+ts窗口间通信

文章目录 一. 目的二.逻辑分析三. 代码示例 "types/node": "^20.3.1","vitejs/plugin-vue": "^4.1.0","vueuse/electron": "^10.2.1","electron": "^25.2.0","electron-packager":…...

基于Fringe-Projection环形投影技术的人脸三维形状提取算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................................................... figure; imshow(Im…...

如何使用Webman框架实现多语言支持和国际化功能?

如何使用Webman框架实现多语言支持和国际化功能? Webman是一款轻量级的PHP框架,提供了丰富的功能和扩展性,使得开发人员能够更加高效地开发Web应用程序。其中,多语言支持和国际化功能是Web应用程序中非常重要的一项功能&#xff…...

接受平庸,特别是程序员

目录 方向一:简述自己的感受 方向二:聊聊你想怎么做 方向三:如何调整自己的心态 虽然清楚知识需要靠时间沉淀,但在看到自己做不出来的题别人会做,自己写不出的代码别人会写时还是会感到焦虑怎么办? 你是…...

HTML兼容性

文章目录 一、兼容性二、兼容问题1. 在IE6下,子级的宽度会撑开父级设置好的宽度2. IE6中,元素浮动,如果宽度需要内容撑开,需要给里面的块元素都添加浮动才可以3. 在IE6、7下,元素要通过浮动排在同一排,就需…...

Java日期和时间处理入门指南

文章目录 1. 日期操作 - java.util.Date1.1 构造方法1.2 常用方法 2. 日期格式化 - java.text.SimpleDateFormat2.1 获取对象2.2 方法 3. 获取时间分量 - java.util.Calendar3.1 时间分量3.2 创建对象3.3 常用的时间分量3.4 获取时间分量3.5 设置时间分量 结语 引言&#xff1a…...

anndata k折交叉

如何将anndata拆分为k份 import scanpy as sc import anndata as adclass KSplitAnndata:staticmethoddef _base_split(data: object, k: int) -> list:adata data.copy()num adata.n_obs // kadata_list []for i in range(k):if num < adata.n_obs:adata_list.appen…...

深入解析项目管理中的用户流程图

介绍用户流程图 用户流程图的定义 用户流程图(User Flow Diagram)是一种可视化工具&#xff0c;它描绘了用户在应用或网站上完成任务的过程。这些任务可以是购物、注册账户、查找信息等&#xff0c;任何需要用户交互的动作都可以在用户流程图中找到。 用户流程图的重要性 用…...

Vue使用QrcodeVue生成二维码并下载

生成二维码 1、安装qrcode.vue组件 npm install --save qrcode.vue<template><div id"app"><qrcode-vue :valuevalue :sizesize></qrcode-vue><br /></div> </template><script> //导入组件 import QrcodeVue fro…...

“用户登录”测试用例总结

前言&#xff1a;作为测试工程师&#xff0c;你的目标是要保证系统在各种应用场景下的功能是符合设计要求的&#xff0c;所以你需要考虑的测试用例就需要更多、更全面。鉴于面试中经常会问“”如何测试用户登录“”&#xff0c;我们利用等价类划分、边界值分析等设计一些测试用…...

适应于Linux系统的三种安装包格式 .tar.gz、.deb、rpm

deb、rpm、tar.gz三种Linux软件包的区别 rpm包-在红帽LINUX、SUSE、Fedora可以直接进行安装&#xff0c;但在Ubuntu中却无法识别&#xff1b; deb包-是Ubuntu的专利&#xff0c;在Ubuntu中双击deb包就可以进入自动安装进程&#xff1b; tar.gz包-在所有的Linux版本中都能使用…...

Linux lvs负载均衡

LVS 介绍&#xff1a; Linux Virtual Server&#xff08;LVS&#xff09;是一个基于Linux内核的开源软件项目&#xff0c;用于构建高性能、高可用性的服务器群集。LVS通过将客户端请求分发到一组后端服务器上的不同节点来实现负载均衡&#xff0c;从而提高系统的可扩展性和可…...

Tomcat 创建https

打开CMD,按下列输入 keytool -genkeypair -alias www.bo.org -keyalg RSA -keystore d:\ambition.keystore -storetype pkcs12 输入密钥库口令:123456 再次输入新口令:123456 您的名字与姓氏是什么? [Unknown]: www.ambition.com 您的组织单位名称是什么? [Unknown…...

超导电性的基本现象和相关理论

超导体 Hg 超导电性的基本现象和相关理论 超导体的基本特性 低温零电阻突变&#xff08;< 10^{-23 \Omega/m}&#xff09; 良导体在 10^{-10} \Omega/m临界温度迈斯纳效应 完全排磁通效应&#xff08;完全抗磁性&#xff09; 超导体物体内部不存在电场 第一类超导体与第二类…...

在 PHP 中单引号(‘ ‘)和双引号(“ “)用法的区别

在 PHP 中&#xff0c;使用单引号&#xff08; &#xff09;和双引号&#xff08;" "&#xff09;可以创建字符串。这两种引号的用法有一些区别。 单引号&#xff1a; 单引号用于创建简单的字符串&#xff0c;其中的变量和转义字符将不会被解析。单引号中的任何内容…...

从MATLAB/Python代码实现反推Newmark-β法:理解线性加速度假设如何变成迭代算法

从代码实现反推Newmark-β法&#xff1a;线性加速度假设的工程实践指南 在结构动力学分析中&#xff0c;地震响应、风荷载等时程分析问题常需要求解二阶微分方程。Newmark-β法作为经典数值解法&#xff0c;通过线性加速度假设将连续问题离散化。但教科书往往止步于公式推导&am…...

西门子V90参数移植实战指南:从备份到验证的完整流程

1. 西门子V90参数移植的核心价值 当你面对生产线上的V90驱动器需要更换时&#xff0c;最头疼的问题莫过于如何让新设备"继承"旧设备的全部参数特性。我经历过三次完整的设备迭代&#xff0c;深刻理解参数移植的重要性——它直接关系到设备重启后的运行稳定性。不同于…...

ProfControl V8的介绍 阵列生成

作者&#xff1a;刘凌波链接&#xff1a;环野电子, profcontrolhttp://oa.profcontrol.cn/teaching_V8-7926f783c6.html来源&#xff1a;ProfControl阵列生成ProfControl支持基于仿射变换的阵列快速生成方式&#xff0c;ProfControl支持对各种对象进行阵列生产&#xff08;包括…...

UI设计入门指南——Figma新手必备操作全解析

1. Figma入门&#xff1a;从零到第一个设计稿 第一次打开Figma时&#xff0c;很多人会被满屏的英文界面和复杂工具栏吓到。其实我刚接触时也一样&#xff0c;但现在回头看&#xff0c;掌握基础操作只需要30分钟。Figma作为目前最流行的UI设计工具&#xff0c;最大的优势就是零门…...

PyTorch 2.8镜像真实效果:量子计算电路→量子态演化视频模拟

PyTorch 2.8镜像真实效果&#xff1a;量子计算电路→量子态演化视频模拟 1. 量子计算模拟效果展示 量子计算作为前沿计算领域&#xff0c;其可视化一直是教学和研究的难点。我们使用PyTorch 2.8镜像实现了从量子电路到量子态演化的完整视频模拟流程&#xff0c;以下是关键效果…...

DLSS Swapper实战手册:游戏性能调优与版本管理深度解析

DLSS Swapper实战手册&#xff1a;游戏性能调优与版本管理深度解析 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏中的DLSS版本过时而烦恼吗&#xff1f;DLSS Swapper为您提供了一套完整的解决方案&#xf…...

终极指南:快速掌握OpenNI2深度相机开发框架

终极指南&#xff1a;快速掌握OpenNI2深度相机开发框架 【免费下载链接】OpenNI2 项目地址: https://gitcode.com/gh_mirrors/op/OpenNI2 OpenNI2是一个功能强大的开源跨平台框架&#xff0c;专门用于深度相机和传感器设备的驱动开发与应用程序构建。这个完整的自然交互…...

智能化时代的数据集成技术革新

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

从GC停顿2.3s到零暂停:Java函数GraalVM Native Image迁移全周期复盘(含12个兼容性雷区)

第一章&#xff1a;从GC停顿2.3s到零暂停&#xff1a;Java函数GraalVM Native Image迁移全周期复盘&#xff08;含12个兼容性雷区&#xff09;在高吞吐、低延迟的Serverless函数场景中&#xff0c;一个Spring Boot微服务因频繁Full GC导致单次停顿高达2.3秒&#xff0c;严重违反…...

当AI学会“越狱“与“签名“:大模型 安全的攻与防

当AI学会"越狱"与"签名"&#xff1a;大模型安全的攻与防引言2023年以来&#xff0c;以ChatGPT、GPT-4、LLaMA、Qwen为代表的大语言模型&#xff08;Large Language Models, LLMs&#xff09;席卷了几乎所有行业。然而&#xff0c;能力越大&#xff0c;风险…...