第T10周:数据增强

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

在这里插入图片描述
从 tensorflow.keras 中导入 layers 模块,包含了常用的神经网络层,用来搭建模型结构。
检查并列出系统中可用的物理 GPU 设备,返回一个 GPU 列表。
在这里插入图片描述
img_height, img_width:图片统一 resize 成 224x224。
batch_size:每个训练 batch 中的样本数为 32。
validation_split=0.3:把 30% 数据预留为验证用;
subset=“training”:表示当前提取的是训练数据;
seed=12:用于保证训练/验证划分一致;
自动读取所有图像并打标签,resize 到指定大小,分成批次。输出:总共 600 张图像,420 用于训练。
subset=“validation”:这次提取的是验证集;同样参数以确保训练验证划分方式一致。
输出:验证集为 180 张图像。
cardinality():获取 val_ds 中 batch 的总数(为 5);val_ds.take(n):取前 n 个 batch 作为 test_ds;val_ds.skip(n):剩余部分留作 val_ds。相当于把验证集的 20% 再切出来当 test 集(180 张图中约 36 张是测试集,剩余 144 张继续作验证集)。
每个 batch 有 32 张图像。
获取类别名称,[‘cat’, ‘dog’]。
在这里插入图片描述
自定义预处理函数:
把图像像素值归一化到 [0, 1](原始值是 0~255);保留原标签。
map():将上面定义的预处理函数应用到数据集中每个元素;num_parallel_calls=AUTOTUNE:启用多线程并行处理。
.cache():将数据缓存到内存中,加快读取速度;
.prefetch():训练时提前准备好下一个 batch,减少训练等待时间。
take(1):从训练集中取出 1 个 batch(共 32 张图);迭代取出其中的图像和标签。
只显示前 8 张图片;plt.subplot(5, 8, i + 1):在 5x8 的网格中放置图像;plt.imshow():显示图片;plt.title():显示类别;plt.axis(“off”):隐藏坐标轴。
在这里插入图片描述
RandomFlip(“horizontal_and_vertical”)
随机水平 & 垂直翻转图像。
RandomRotation(0.2)
随机将图像旋转 ±20% 的角度。
images[i] 是单张图像的张量,形状是 [height, width, channels];模型要求输入带有 batch 维度,即 [1, height, width, channels];所以expand_dims(…, 0) 在最前加了一个维度,构成一个 batch。
创建一个 3x3 网格画布;每次对同一张图 image 进行数据增强;用 plt.imshow() 显示增强后的图像;隐藏坐标轴。
使用 Keras 增强层对图像进行随机翻转和旋转,并将同一张原始图片经过 9 次增强后的结果可视化。
在这里插入图片描述
data_augmentation表示训练时自动进行数据增强;Conv2D(16, 3, …):卷积层,16 个 3x3 的卷积核,激活函数 ReLU;MaxPooling2D():池化层,降低特征图空间维度。将数据增强模块嵌入训练数据集(用 training=True 激活增强);map() 函数在 TensorFlow Dataset 中遍历每个样本 (x, y);设置 num_parallel_calls=AUTOTUNE 自动调节线程数。train_ds 数据会自动带数据增强。
Conv2D + ReLU,三层卷积提取空间特征;MaxPooling2D,每层后面做降采样,减小计算量;Flatten,将多维张量展平,连接到全连接层;Dense(128),全连接隐藏层,128 个神经元,ReLU 激活;Dense(len(class_names)), 输出层,单元个数 = 类别数,未加激活函数。
使用 Adam 优化器;SparseCategoricalCrossentropy:适用于标签是整数编码;from_logits=True:表示最后一层未经过 softmax,loss 会自动处理;指标使用 accuracy 来评估性能。
在这里插入图片描述
在这里插入图片描述
用 train_ds 训练,val_ds 验证;总共训练了 20 轮(epoch);
每一轮都输出了:
accuracy:训练集准确率;
loss:训练损失;
val_accuracy:验证集准确率;
val_loss:验证损失。
初始 val_accuracy 为 59.4%,逐轮提升,最终达到 92.5%;
loss 和 val_loss 都稳定下降,没有过拟合;从第 10 轮开始准确率就提升很高。
用分离出来的测试集 test_ds 评估最终模型性能,表示模型在从未见过的数据上仍能达到 87.5% 的分类准确率。
使用 stateless_random_contrast:给图像加入对比度增强;使用固定种子 (seed, 0):可以控制随机性、实现复现。
将训练图像 [3] 乘回 255,还原为原始像素;使用 expand_dims 添加 batch 维;打印最小/最大像素值:表明增强后图像仍保持合理亮度范围,没有过度偏暗或偏亮。
在这里插入图片描述
创建一个新的图像窗口,大小为 8x8 英寸。
对同一张图像 image 进行 9 次增强;每次调用 aug_img() 函数,使用tf.image.stateless_random_contrast() 添加随机对比度。
创建一个 3x3 网格的子图,把当前增强图像放在第 i+1 个位置。
augmented_image 的 shape 是 [1, h, w, c],取出 [0] 表示取出图像本身;
.numpy():将 Tensor 转为 NumPy 数组;.astype(“uint8”):把图像像素转回标准的 8-bit 整数格式,然后去除坐标轴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 支付宝小程序自定义 navbar 无效解决方案

如图: uniapp编译到支付宝小程序隐藏默认的导航栏失效了 解决方案: 在 pages.json 文件中找到 globalStyle 中加入以下代码: "mp-alipay": {"transparentTitle": "always","titlePenetrate":…

vue2 el-element中el-select选中值,数据已经改变但选择框中不显示值,需要其他输入框输入值才显示这个选择框才会显示刚才选中的值

项目场景&#xff1a; <el-table-column label"税率" prop"TaxRate" width"180" align"center" show-overflow-tooltip><template slot-scope"{row, $index}"><el-form-item :prop"InquiryItemList. …

centos7 离线安装python3 保留python2

一、事前准备&#xff1a; &#xff08;1&#xff09;查看centos具体版本 cat /etc/redhat-releaseCentOS Linux release 7.4.1708 (Core) &#xff08;2&#xff09;查看linux中当前python版本 centos7 默认安装python2.7.5 &#xff08;3&#xff09;查看python3的依赖&#…

十三种通信接口芯片——《器件手册--通信接口芯片》

目录 通信接口芯片 简述 基本功能 常见类型 应用场景 详尽阐述 1 RS485/RS422芯片 1. RS485和RS422标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6. 选型建议 2 RS232芯片 1. RS232标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6…

2025年RAG技术发展现状分析

2025年&#xff0c;大模型RAG&#xff08;检索增强生成&#xff09;技术经历了快速迭代与深度应用&#xff0c;逐渐从技术探索走向行业落地&#xff0c;同时也面临安全性和实用性的新挑战。以下是其发展现状的综合分析&#xff1a; 一、技术架构的持续演进 从单一到模块化架构 …

case和字符串操作

使用if选择结构 if [];then elif [];then #注意这个地方,java是else if else ; fi 使用for循环结构 使用for循环&#xff0c;语法结构如下所示&#xff1a; for 变量名 in 值1 值2 值3 #值的数量决定循环任务的次数 do命令序列 done#循环输出1到10 for i in {1..10} #注…

Stm32 烧录 Micropython

目录 前言 准备工作 开始操作 问题回顾 后记 前言 去年曾经尝试Pico制作openmv固件&#xff0c;由于知识储备不够最后失败了&#xff0c;留了一个大坑&#xff0c;有了前几天的基础&#xff0c;慢慢补齐知识&#xff0c;最近这一周一直在学习如何编译Stm固件并烧录到单片机…

盐化行业数字化转型规划详细方案(124页PPT)(文末有下载方式)

资料解读&#xff1a;《盐化行业数字化转型规划详细解决方案》 详细资料请看本解读文章的最后内容。 该文档聚焦盐化行业数字化转型&#xff0c;全面阐述了盐化企业信息化建设的规划方案&#xff0c;涵盖战略、架构、实施计划、风险及效益等多个方面&#xff0c;旨在通过数字化…

2025年人工智能火爆技术总结

2025年人工智能火爆技术总结&#xff1a; 生成式人工智能 生成式人工智能可生成高质量的图像、视频、音频和文本等多种内容。如昆仑万维的SkyReels-V2能生成无限时长电影&#xff0c;其基于扩散强迫框架&#xff0c;结合多模态大语言模型和强化学习等技术&#xff0c;在运动动…

边缘计算革命:大模型轻量化部署全栈实战指南

当ResNet-152模型能在树莓派4B上实现每秒27帧实时推理时&#xff0c;边缘智能时代真正到来。本文解析从模型压缩到硬件加速的完整技术栈&#xff0c;实测Transformer类模型在移动端的部署时延可压缩至16ms&#xff0c;揭示ARM芯片实现INT4量化的工程秘诀与十种典型场景优化方案…

边缘计算:数字世界的”末梢神经系统”解析-优雅草卓伊凡

边缘计算&#xff1a;数字世界的”末梢神经系统”解析-优雅草卓伊凡 一、边缘计算深度解析 1.1 边缘计算的定义与架构 边缘计算&#xff08;Edge Computing&#xff09;是一种分布式计算范式&#xff0c;它将数据处理能力从传统的集中式云数据中心推向网络边缘&#xff0c;更…

面试手撕——迭代法中序遍历二叉树

思路 访问顺序和处理顺序不一致导致迭代法难写&#xff0c;体现在总要先遍历根节点&#xff0c;才能访问左右孩子&#xff0c;用null标记&#xff0c;null标记的节点表示已经访问过了&#xff0c;下一次可以处理&#xff0c;所以在当前栈顶节点不是null的时候&#xff0c;都要…

AD系列:Windows Server 2025 安装AD CS角色和颁发证书

什么是 Active Directory 证书服务&#xff1f; Active Directory 证书服务 (AD CS) 是一个 Windows Server 角色&#xff0c;负责颁发和管理在安全通信和身份验证协议中使用的公钥基础结构 (PKI) 证书。 颁发和管理证书 数字证书可用于对电子文档和消息进行加密和数字签名&…

kubernetes》》k8s》》Service 、Ingress 区别

K8S>>Service 资料 K8S >>Ingress 资料 Ingress VS Service 物理层数据链路层网络层传输层会话层表示层应用层 Ingress是一种用于暴露HTTP和HTTPS路由的资源&#xff0c;它提供了七层&#xff08;应用层&#xff09;的负载均衡功能。Ingress可以根据主机名、…

【java WEB】恢复补充说明

Server 出现javax.servlet.http.HttpServlet", according to the project’s Dynamic Web Module facet version (3.0), was not found on the Java Build Path. 右键项目 > Properties > Project Facets。Dynamic Web Module facet version选4.0即可 还需要在serv…

VMware 创建虚拟机+简易安装Ubuntu的详细操作步骤

VMware 创建虚拟机安装Ubuntu的详细操作步骤 一、创建虚拟机1.1 点击创建新的虚拟机1.2 选择自定义创建虚拟机1.3 选择虚拟机的硬件兼容性1.4 安装客户机操作系统1.5 简易安装信息1.6 命名虚拟机名称1.7 处理器配置1.8 虚拟机内核选择1.9 网络类型1.9 选择I/O 控制器类型1.10 选…

GCC-C语言“自定义段”

一、起因 事情的起因是这样的,在看别人代码时,发现了一种很有意思的写法,因为本人主要是以应用层开发为主,所以对这种写法还是比较少见的,所以研究了一下,就牵扯出了一些知识点,这里先卖个关子,继续往下看。 二、经过 发现了一串这样的代码 static void do_mac(mcmd_…

【信息系统项目管理师-论文真题】2021上半年论文详解(包括解题思路和写作要点)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题1:论信息系统项目的合同管理1、写作要点2、解题思路项目合同管理的过程项目合同主要的条款内容试题2:论信息系统项目的范围管理1、写作要点2、解题思路项目范围管理的过程核心范围对应的需求跟踪矩阵项目…

python2反编译部分

文章目录 1、所需环境2、确认打包工具&#xff08;没成功&#xff09;3、 解包.exe文件&#xff08;以PyInstaller为例&#xff09; - useful【***总的来说这一步对我有用】4、定位关键文件 - useful5、 修复.pyc文件头&#xff08;关键步骤&#xff01;&#xff09;- maybe-ig…

基于STM32的中点圆算法,画空心圆的函数

中点圆算法(Midpoint Circle Algorithm)是一种高效绘制圆的算法&#xff0c;它利用圆的对称性和整数运算来避免浮点计算&#xff0c;非常适合嵌入式系统使用。 空心圆绘制函数实现 /*** brief 使用中点圆算法绘制空心圆* param x0: 圆心x坐标* param y0: 圆心y坐标* param…