keras框架的to_categorical方法

在阅读keras的中文文档时候,对于这里的代码不了解

y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)

这里应该拆分为两部分看待
第一个是np.random.randint()
查看numpy文档知道:

random.randint ( low , high = None , size = None , dtype = int ) ​
返回从低(包含)到高(不包含)的随机整数。1.返回“半开”区间 [ low , high )内指定 dtype 的“离散均匀”分布中的随机整数。注意,如果 high为 None (默认值),即不写high,则结果来自 [0, low )2.size:intint 元组,可选
表示给定形状。默认值为 None,在这种情况下返回单个值。可以使用元组表示多维,例如size=(2,2)就是形状为两行两列的矩阵3.dtype ,可选
结果所需的类型。默认值为 long

例如:
在这里插入图片描述
这里的3是输入给形参low的值,没有high,说明数值在[0,3)之间。
size=(10, 1)表示形状是10行一列的矩阵。我们看打印出来的数据,是一个10行1列矩阵,且每一个元素都是0或者1或者2。

第二个就是to_categorical(y, num_classesy, dtype)
其中:
y是待转换的标签数组。
num_class是标签中共有多少种类。
dtype则是转化的目标数据类型。

y_train = utils.to_categorical(rand, num_classes=10)

代码中,我们使用的数组为之前的rand,即一个10行1列的数组
dtype默认浮点型,不过我不知道是默认float32还是什么
而我们要了解num_class的应用。就必须要知道one-hot。

one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。其中种类从0开始编码

我们看一下官方文档的介绍,将整数转为二进制类矩阵
在这里插入图片描述
这里的类向量(整数)就是我们输入的rand里面的一个个元素。也就是说,num_class指定了多少种类,一般这里的种类是大于或者等于我们输入的数组y中整数的上限的。例如我们rand中设置了low=3,说明rand有三种取值,0,1,2。我们设置num_class=10,这个超过了3(取值种类),说明可以应用。我们使用代码y_train = utils.to_categorical(rand, num_classes=10)。会将rand矩阵扩展为num_class列,而行数不变的矩阵,其中每一行都会有num_class个元素,但是只有对应rand中元素数值的那位(位置)才是1,表示生效,其他都是0.
在这里插入图片描述
例如:我们输入矩阵,如下

[[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.][0. 0. 1. 0. 0. 0. 0. 0. 0. 0.][1. 0. 0. 0. 0. 0. 0. 0. 0. 0.][0. 1. 0. 0. 0. 0. 0. 0. 0. 0.][0. 0. 1. 0. 0. 0. 0. 0. 0. 0.][0. 1. 0. 0. 0. 0. 0. 0. 0. 0.][0. 0. 1. 0. 0. 0. 0. 0. 0. 0.][0. 0. 1. 0. 0. 0. 0. 0. 0. 0.][1. 0. 0. 0. 0. 0. 0. 0. 0. 0.][0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]]
第一行的2号位(下标从0开始)为1,说明整数为2,我们看rand:
[[2][2][0][1][2][1][2][2][0][1]]发现确实是2。接下来就以此类推即可

如果我们设置num_class过小会怎么样:
在这里插入图片描述
可以发现数组越界,毕竟我们需要至少三种类型,然而只提供了两种。显然不够表示的。即我们至少需要为num_class=3
在这里插入图片描述
这样才可以(这里数据我把rand的值换了)
新的rand如下,可以发现生效位置和数值一一对应。
在这里插入图片描述
综上,就是将待转化的整数(元素)转为向量,让其整数通过num_class控制转为one-hot生效编码。

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

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

相关文章

AWS DMS MySQL为源端,如何在更改分区的时候避免报错

问题描述: 文档[1]中描述MySQL compatible Databases作为DMS任务的源端,不支持MySQL 分区表的 DDL 更改。 在源端MySQL进行分区添加时,日志里会出现如下报错: [SOURCE_CAPTURE ]W: Cannot change partition in table members…

【表单组件】地址组件新增精简模式

07/17 主要更新模块概览 快速筛选 精简模式 触发条件 自定义域名 01 表单管理 1.1 【表单组件】-数据关联组件新增快速筛选功能 说明: 数据关联组件新增快速筛选功能,用户在数据关联组件选择数据时,可以通过快速筛选功能&#xff0…

萝卜快跑突然就火了,背后发生了什么?

近日,百度旗下的自动驾驶出行平台“萝卜快跑”突然在网络上火了起来,成为热门话题。那么,这背后到底发生了什么? 1. 数字误传引发热议 首先,一些误传的数字在传播中起到了推波助澜的作用。例如,百度在2023…

Camtasia Studio2024最新版本新功能,并深入学习它的使用教程

在视频创作和教学内容制作领域,Camtasia Studio 一直是备受青睐的工具。随着 2024 版本的推出,Camtasia Studio 带来了更多强大的功能和优化,为用户提供了更高效、更便捷的创作体验。接下来,让我们详细了解一下 Camtasia Studio 2…

只需三步,即可使用 Kafka 托管服务快速部署微服务架构应用

微服务架构的应用程序的特点是将其组件组织得能够独立地进行开发、测试、部署和扩展。DigitalOcean App Platform(应用平台)的目标是通过允许用户在同一应用上添加多个组件,简化这一架构模型,使其更加平滑和易于管理。 一个简单的…

【BUG】已解决:TypeError: expected string or bytes-like object

TypeError: expected string or bytes-like object 目录 TypeError: expected string or bytes-like object 【常见模块错误】 【解决方案】 常见原因及解决方法 示例代码 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰…

【BUG】已解决:libpng warning: iccp: known incorrect sRGB profile

已解决:libpng warning: iccp: known incorrect sRGB profile 目录 已解决:libpng warning: iccp: known incorrect sRGB profile 【常见模块错误】 错误原因: 原因分析 解决方案 具体步骤 欢迎来到英杰社区https://bbs.csdn.net/topics…

Vue3 对比 Vue2

相关信息简介2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王) 2 年多开发, 100位贡献者, 2600次提交, 600次 PR、30个RFC Vue3 支持 vue2 的大多数特性 可以更好的支持 Typescript,提供了完整的…

QT5.9.9+Android开发环境搭建

文章目录 1.安装准备1.1 下载地址1.2 安装前准备2.安装过程2.1 JDK安装2.1.1 安装2.1.2 环境变量配置2.2 SDK配置2.2.1 安装2.2.2 环境变量配置2.2.3 adb 错误解决2.2.4 其他SDK安装2.2.5 AVD虚拟机配置2.3 NDK配置2.4 QT 5.9.9安装配置2.4.1 QT安装2.4.2 配置安卓环境3.QT工程…

特斯拉:领先未来的电动汽车先锋

特斯拉(Tesla)作为全球电动汽车行业的领军者,以其创新技术和前瞻愿景在全球范围内赢得了广泛的认可和喜爱。由亿万富翁埃隆马斯克(Elon Musk)于2003年创立,特斯拉不仅仅是一家汽车制造公司,更是…

2024公认音质最好的蓝牙耳机推荐?四款高品质音质耳机精选盘点

在2024年,随着无线技术的不断进步和消费者对音质要求的日益提高,蓝牙耳机市场呈现出前所未有的繁荣,各大厂商纷纷推出具有卓越性能的新品,以满足音乐爱好者和专业人士的高标准需求,那么在2024公认音质最好的蓝牙耳机推…

【AI大模型】程序员AI的未来——Copilot还是Claude3.5 Sonnet?

近期,Anthropic发布了Claude 3.5 的“大杯”模型 —— Claude 3.5 Sonnet! 这次发布的 Sonnet 代表意大利的“十四行诗”,结构复杂,在智能水平、功能多样性和处理能力上都有所提升,能够应对更复杂的认知任务&#xff…

【文档智能 RAG】RAG新基建-RAG性能增强关键技术点及通用文档解析工具-TextIn

前言 在私有领域知识问答和企业知识管理领域,结合检索增强型生成模型(Retrieval-Augmented Generation, RAG)大模型(Large Language Model, LLM)已成为一种趋势。然而,在RAG系统的文档预处理阶段和检索阶段…

SpringBoot是如何简化Spring开发的,以及SpringBoot的特性以及源码分析

目录 1.什么是springboot 2.配置文件的优先级 2.1 配置文件的优先级 2.2 系统配置以及命令行配置 3.Bean对象的管理 3.1 如何获取对应的bean对象 3.2 bean的作用域 3.3 声明第三方bean Component 及衍生注解 与 Bean注解使用场景? 如何查看项目已有的bean对象&…

Nginx学习-相关概念

Nginx学习-相关概念 主要学习几个概念:Nginx,正向代理、反向代理、负载均衡、动静分离。–2020年05月29日 什么是Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 特点是占有内存少&…

动态住宅IP和静态住宅IP主要区别是什么?

在互联网连接的世界中,IP地址是我们识别和访问网络资源的关键。住宅IP地址,特别是动态住宅IP和静态住宅IP,是两种不同类型的IP分配方式,它们在使用和功能上存在显著差异。 1. IP地址的稳定性 动态住宅IP:这种IP地址是…

计算机组成原理面试知识点总结1

#ウルトラマンゼット(泽塔) 1 计算机发展历程 1.1 计算机的硬件发展 电子管时代晶体管时代中小规模集成电路时代超大规模集成点电路时代 元件更新变化: 摩尔定律:18 个月晶体管翻一倍半导体存储器不断发展微处理器不断发展 1.2…

html+css 实现简约社交分享按钮

效果 原理解析 1.事件是由a标签的hover触发的 2.动画效果是transition动画效果 上代码&#xff0c;可以直接复制使用 目录 html <!DOCTYPE html> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"…

环境变量配置文件中两种路径添加方式

环境变量配置文件中两种路径添加方式 文章目录 环境变量配置文件中两种路径添加方式代码示例区别和作用 代码示例 export HBASE_HOME/opt/software/hbase-2.3.5 export PATH$PATH:$HBASE_HOME/binexport SPARK_HOME/opt/software/spark-3.1.2 export PATH$SPARK_HOME/bin:$PAT…

抖音客户端一面

C | 字节抖音客户端一面 Http握手过程 1. 客户端问候(Client Hello) 客户端向服务器发送一个“问候”消息&#xff0c;其中包含客户端支持的SSL/TLS版本、加密算法、压缩方法以及一个随机数。 version 版本号,https也有版本号哦TLS 1.0、TLS 1.1、TLS 1.2等等 random 随机数…