深度学习21天 —— 卷积神经网络(CNN):识别验证码( 第12天)

目录

一、前期准备

1.1 标签数字化

1.2 加载数据

1.3 配置数据

二、其他

2.1 损失函数 categorical_crossentropy

2.2 plt.legend(loc=' ')

2.3 history.history


 活动地址:CSDN21天学习挑战赛

学习:深度学习100例-卷积神经网络(CNN)识别验证码 | 第12天_K同学啊的博客-CSDN博客

一、前期准备

1.1 标签数字化

number   = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
char_set       = number + alphabet
char_set_len   = len(char_set)
label_name_len = len(all_label_names[0])# 将字符串数字化
def text2vec(text):vector = np.zeros([label_name_len, char_set_len])for i, c in enumerate(text):idx = char_set.index(c)vector[i][idx] = 1.0return vectorall_labels = [text2vec(i) for i in all_label_names]

text 为 all_label_names 即标签名称的值,假设标签是 677g3,则一次输入进函数 text2vec:6、7、7、g、3

enumerate(text) 返回了text的 索引和值 给 i 和 c ,idx 为在 char_set 里找到的 c的索引值,所以新构建了一个全0 的二维数组,行数为标签的长度,列数为字符集合 char_set 的长度,转化结果即为,每i行的对应标签名称的第i个值对应的索引为1,其余为0

1.2 加载数据

AUTOTUNE = tf.data.experimental.AUTOTUNEpath_ds  = tf.data.Dataset.from_tensor_slices(all_image_paths)
image_ds = path_ds.map(load_and_preprocess_image, num_parallel_calls=AUTOTUNE)
label_ds = tf.data.Dataset.from_tensor_slices(all_labels)image_label_ds = tf.data.Dataset.zip((image_ds, label_ds))
image_label_ds

tf.data.Dataset.from_tensor_slices_方如一的博客-CSDN博客

与 prefetch()使用类似,Dataset.map() 也可以利用多 GPU 资源,并行化地对数据项进行变换,从而提高效率。以前节的 MNIST 数据集为例,假设用于训练的计算机具有 2 核的 CPU,我们希望充分利用多核心的优势对数据进行并行化变换(比如 前节 的旋转 90 度函数 rot90 ),可以使用以下代码:
如代码:

1mnist_dataset = mnist_dataset.map(map_func=rot90, num_parallel_calls=2)

参考:TensorFlow 2.0 常用模块3:tf.data 流水线加速_zk_one的博客-CSDN博客

1.3 配置数据

prefetch() 功能详细介绍:CPU正在准备数据时,加速器处于空闲状态。相反,当加速器正在训练模型时,CPU处于空闲状态。因此,训练所用的时间是CPU预处理时间和加速器训练时间的总和。prefetch() 将训练步骤的预处理和模型执行过程重叠到一起。当加速器正在执行第N个训练步时,CPU正在准备第N+1步的数据。这样做不仅可以最大限度地缩短训练的单步用时(而不是总用时),而且可以缩短提取和转换数据所需的时间。如果不使用prefetch() , CPU和GPU/TPU在大部分时间都处于空闲状态:

BATCH_SIZE = 16train_ds = train_ds.batch(BATCH_SIZE)
train_ds = train_ds.prefetch(buffer_size=AUTOTUNE)val_ds = val_ds.batch(BATCH_SIZE)
val_ds = val_ds.prefetch(buffer_size=AUTOTUNE)
val_ds

二、其他

2.1 损失函数 categorical_crossentropy

model.compile(optimizer="adam",loss='categorical_crossentropy',metrics=['accuracy'])

根据公式我们可以发现,因为yi,要么是0,要么是1。而当yi等于0时,结果就是0,当且仅当yi等于1时,才会有结果。也就是说categorical_crossentropy只专注与一个结果,因而它一般配合softmax做单标签分类。

详情参考:损失函数:categorical_crossentropy_Stealers的博客-CSDN博客_categorical_crossentropy

2.2 plt.legend(loc=' ')

plt.legend(loc=' '):设置图例的位置

plt.plot(),plt.scatter(),plt.legend函数的用法介绍_Sunny.T的博客-CSDN博客_plt.legend

plt.legend(loc='lower right')
plt.legend(loc='upper right')

2.3 history.history

plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])

history:历史查看命令,可用来绘制训练过程中的损失和准确率

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

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

相关文章

通过 SFP 接口实现千兆光纤以太网通信2

Tri Mode Ethernet MAC IP 核结构 时钟网络 IP 核内部时钟网络结构如下图所示。其中,tx_mac_aclk 为 AXI-Stream 发送接口的同步时钟, rx_mac_aclk 为 AXI-Stream 接收接口的同步时钟。由于在设计中没有使用 MDIO 接口,所以不存在时钟信号 …

二人订单共享结束制:终身受益的新模式

在当今快速发展的互联网时代,一个创新的商业模式总能引起广泛关注。其中,“二人订单共享结束制”以其独特的魅力,吸引了众多消费者和创业者的目光。这一模式不仅为消费者带来了实惠,更为创业者提供了一个全新的平台。 只需购买一…

Android的刷机模式

高通为例子。不看不知道,一看原来这么多。想以前做博通方案,就是一个web刷机包刷到死。到底是技术进步了还是以前太浅薄?!。。。 基本参考这篇:https://www.cnblogs.com/bluestorm/p/18129830 常用的应该就是OTA&…

OpenHarmony及鸿蒙应用的屏幕亮度获取以及设置

目录 一.前置知识 二.具体实现 一.前置知识 对应的OpenHarmony版本:V3.2 查找资料发现V3.2版本的OpenHarmony没有获屏幕亮度的接口,只有设置屏幕亮度的接口,这个就很奇怪,所以我最终的方案是获取屏幕亮度使用老的接口,设置屏幕亮度使用新的接口,这样就完成了这个需求…

C/C++中的 extern 和extern“C“关键字详解(通俗易懂)

前言 1、C/C extern关键字用法 2、extern "C"用法 正文 1、extern关键字 extern其实就是一个声明,明确指出一个语句是声明,比如extern int i ;这是声明变量i,而不是定义i,定义i则是int i(声明不开辟内存空…

网络数据库后端框架相关面试题

面试是工作的第一步,面试中面试官所提出的问题千奇百怪,其中关于网络数据库后端框架面试题汇总如下: 1,关系型数据库和非关系型数据库的区别 关系型数据库主要有 MYsql Iracle SQLSever等 相对于非关系型数据库的优势为查询效率…

【C++集群聊天服务器(一)】|Linux平台资源受限下boost库和muduo网络库源码编译安装

本人使用的服务器是2G2核 ubuntu22.04 前置工作 muduo库源码github仓库地址: muduo WIndows和Linux平台的boost源码包下载(zip是Windows版,tar.gz是Linux版,你也可以去boost官网下载最新版本) Boost C Libraries 由于muduo网络库是基于boo…

C语言| 输出*三角形

分析: ① 输入三角形主要分为两部分, 即输出空格和输出星号,要将它们分开,不用考虑空格数和星号个数之间的关系。 ② 从每行输出的空格个数来看,若总共输出n行,则第i行首先要输出n - i个空格,然…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统(二) 资源…

网络原理-TCP/IP --传输层(UDP)

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 目录 端口号UDP协议 端口号 我们在学习套接字的时候,涉及到两个概念:IP地址和端口号 IP地址是用来确定主机,这是网络层提供的概念 而端口号就是用来确定主机上的应用程序,就是传输层的概念的…

std::scoped_lock

scope--范围 当创建一个 std::scoped_lock 对象时,它尝试取得其所给互斥量的所有权,即上锁。当控制权离开创建 scoped_lock 对象的作用域时,scoped_lock 会被析构,互斥量随之被释放。 链接

代码随想录35期Day54-JavaScript

Day54题目 ### LeetCode739每日温度 核心思想:今天主要是学会单调栈的使用.找到比元素更大的下一个元素,如果比栈顶元素小就入栈,否则就出栈顶元素,当前元素就是比栈顶元素大的"下一个更大的元素". /*** param {number[]} temperatures* return {number[]}*/ var …

Linuxftp服务003虚拟用户登入

如果基于Vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全管理,鉴于此,为了能更加的安全使用Vsftpd,需使用Vsftpd虚拟用户方式。 虚拟用户原理: 虚拟用户就是没有实际的真实系统…

CANDela studio新建和编辑服务

服务定义和编辑只能够在CDDT里面进行,思路分为三步: 1、Protocol Services里面添加服务,定义服务的格式、请求和正负响应。 2、根据服务的功能归类到Diagnostic Class Tenplates 3、Variant里面的Supported Diagnostic Classes勾选 然后我…

题目:回答结果(结构体变量传递)

题目:回答结果(结构体变量传递) There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about …

【2023百度之星初赛】跑步,夏日漫步,糖果促销,第五维度,公园,新材料,星际航行,蛋糕划分

目录 题目:跑步 思路: 题目:夏日漫步 思路: 题目:糖果促销 思路: 题目:第五维度 思路: 题目:公园 思路: 新材料 思路: 星际航行 思路…

Ubuntu基础使用

快捷键: 命令行打开快捷方式:Ctrl Alt T Ctrl l 清屏 截屏: LinuxOS命令: 显示当前工作目录所有内容:ls (-a -l、-lh) -a 输入全部内容(包括隐藏文件) -l 竖向展示…

CompassArena 司南大模型测评--代码编写

测试角度 要说测试模型,对咱们程序员来说,那自然是写代码的能力强不强比较重要了。那么下面我们以 leetcode 中的一道表面上是困难题的题目来考考各家大模型,看看哪个才应该是咱们日常写程序的帮手。 部分模型回答 问题部分如下截图&#…

GUI与Web前端:深入剖析与比较

GUI与Web前端:深入剖析与比较 在数字化时代的浪潮下,图形用户界面(GUI)和Web前端作为人机交互的两大关键领域,各自承载着不同的功能与价值。本文将从四个方面、五个方面、六个方面和七个方面,对GUI和Web前…

Linux前奏-预热版本

一、操作系统概述 1.1 了解操作系统的作用 我们所熟知的计算机,也就是电脑,就是由硬件和软件来组成的 硬件:计算机系统中由电子机械,和各种光电元件等组成的各种物理装置的总称 软件是什么呢? 软件:用…