keras框架的to_categorical方法

news2024/11/15 17:52:04

在阅读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.coloradmin.cn/o/1946127.html

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

相关文章

设计模式--创建型

实现 #include <iostream> #include <memory>// 抽象产品类 class Product {public:virtual void Operation() const 0; };// 具体产品 类A class ConcreteProductA : public Product {public:virtual void Operation() const override {std::cout << &quo…

Tomcat部署、优化、压力测试

目录 Tomcat概念 核心组件 Web容器 Web服务器之间解析请求的区别 Apache HTTP Server Nginx Tomcat Servlet容器 JSP容器 字节码文件 Tomcat表面处理请求的过程 Tomcat底层处理请求的过程 内部结构 Tomcat部署 JRE环境配置 PATH冒号位置的区别 安装Tomcat 目…

连接Redis异常:JedisMovedDataException

redis.clients.jedis.exceptions.JedisMovedDataException: MOVED 5798 192.168.187.138:6379 在使用JAVA API连接redis的时候&#xff0c;出现了异常&#xff1a; 问题的原因 JAVA API实现是redis集群实现方式&#xff0c;而在配置文中就配置的是单结点的方式。 Moved表示使…

MySQL的高可用(MHA)

高可用模式下的故障切换&#xff0c;基于主从复制。 单点故障和主从复制不能切换的问题。 至少需要三台。 故障切换过程0-30秒 vip地址&#xff0c;根据vip地址所在的主机&#xff0c;确定主备。 主 vip 备 vip 主和备不是优先级确定的&#xff0c;主从复制的时候就确定…

使用infercnv对单细胞转录组进行拷贝数变异推断(上,原理)

InferCNV 是一个专门设计用于鉴定肿瘤样本中拷贝数变异&#xff08;Copy Number Variations, CNVs&#xff09;的R包&#xff0c;特别是在单细胞RNA测序&#xff08;scRNA-seq&#xff09;数据分析领域。它通过比较肿瘤细胞与正常细胞&#xff08;或参照细胞&#xff09;的基因…

【Leetcode】十八、动态规划:不同路径 + 全1的最大正方形

文章目录 1、动态规划2、leetcode509&#xff1a;斐波那契数列3、leetcode62&#xff1a;不同路径4、leetcode121&#xff1a;买卖股票的最佳时机5、leetcode70&#xff1a;爬楼梯6、leetcode279&#xff1a;完全平方数7、leetcode221&#xff1a;最大正方形 1、动态规划 只能…

CTFSHOW 萌新 web5 解题思路和方法

点击题目链接&#xff0c;发现页面代码&#xff0c;根据最后一行的提示当id1000时返回flag值&#xff0c;但是前面if判断intval(id)的值不得超过999&#xff0c;故需要对其进行绕过。 我们发现题目中相比前几题中过滤条件更为严格&#xff0c;但是没有过滤取反运算符。此时我们…

matlab 绘制参数方程

matlab 绘制参数方程 绘制参数方程绘制结果 绘制参数方程 clc; clear; close all;axis_length 100;% 定义参数t的范围 t 0:0.01:100;% 计算x和y的值 x t.^2 1; y 4*t - t.^2;% 绘制函数图像 plot(x, y); xlabel(x); ylabel(y); title(Plot of the curve xt^21, y4t-t^2…

运维朋友最喜欢的一集:trzsz-ssh!!【送源码】

软件介绍 trzsz-ssh&#xff08;tssh&#xff09;是一个替代openssh的SSH客户端软件&#xff0c;支持trzsz、批量登录、密码记忆、zmodem等功能。可实现方便的本地与远程服务器文件传输&#xff0c;支持多系统跨平台运行&#xff0c;提供良好的交互体验和进度显示。优势包括tmu…

普发Pfeiffer真空TSH071TSU261TSH521泵站电路图安装操作使用说明

普发Pfeiffer真空TSH071TSU261TSH521泵站电路图安装操作使用说明

0724, 大型补作业现场

sock编程 struct sockaddr struct sockaddr_in --> struct in_addr struct hostent htonl() htons() ntohl() ntohs() int inet_aton(const char* cp,struct in_addr * inp); in_addr_t inet_addr(const char* cp); const char* inet_ntop…

深入理解算数表达式求值:后缀表达式的转换与计算

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd;没人会嘲笑竭尽全力的人&#xff01; 前…

软件渗透测试包括的内容和作用简析

在当今信息技术迅速发展的时代&#xff0c;软件安全已成为企业和用户关注的重中之重。尤其是渗透测试作为一种专业的安全测试方法&#xff0c;日益受到企业们的重视。   软件渗透测试是一种模拟恶意攻击者的方式&#xff0c;对软件及其相关系统进行评估&#xff0c;以发现可能…

html基础及python web开发

1.标签 ①p标签 段落标签&#xff0c;分隔段与段。 <p>...</p> ②h标签 标题标签h1-6&#xff0c;大小依次减小 <h1>...</h1> <h2>...</h2> <h3>...</h3> <h4>...</h4> <h5>...</h5> <h6>.…

数据结构的概念和术语

目录 一.前言 二.数据结构的基本概念 三.数据结构的术语 一.前言 数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。数据结构的基本数据结构包括两部分&#xff0c;线性结构跟非线性结构。 二.数据结构的基本概念 数据结构主要包括…

MarkTool集合篇

MarkTool目前包含以下几种工具 1、TCP客户端 2、TCP服务端 3、UDP客户端 4、Web客户端 5、Web服务端 6、串口网口 7、PLC 8、获取本机设备 9、Log 10、密钥 11、系统设置 11-1、基本设置 11-2、角色设置 11-3、用户设置 11-4、log记录 开启软件需要找我解密&#…

怎样做好仓库管理工作?如何利用仓库管理系统进行有效管理?

我前前后后跑遍了十几家仓储设备公司&#xff0c;跟那些制造业的朋友们聊了个痛快&#xff0c;从他们那儿学到了不少仓库管理的实践方法。 回来自己整理了一套仓库管理更高效的实用方法&#xff0c;现在就来跟大家伙儿聊聊仓库管理中那些常见问题&#xff0c;以及我是怎么琢磨…

(前缀和) LeetCode 238. 除自身以外数组的乘积

一. 题目描述 原题链接 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&…

HarmonyOS网络请求的简单用法,HttpUtil简单封装

请求网络获取数据 点击按钮发送一个post请求&#xff0c;发送一条string由于此处的返回result.data本身就是一个string&#xff0c;因此不需要转换类型 Button(请求网络).margin({ top: 10 }).fontSize(24).fontWeight(FontWeight.Bold).onClick(() > {httpRequestPost(http…

算法从零到精通 (一) ~ 快慢双指针

1. 前言 快慢双指针是一种常用的算法技巧&#xff0c;通常用于解决涉及链表或数组的问题。它的基本思想是使用两个指针&#xff0c;一个移动速度快&#xff08;快指针&#xff09;&#xff0c;一个移动速度慢&#xff08;慢指针&#xff09;&#xff0c;来解决特定的问题。这两…