TensorFlow入门(十九、softmax算法处理分类问题)

news2024/9/22 10:08:05

softmax是什么?

        Sigmoid、Tanh、ReLU等激活函数,输出值只有两种(0、1,或-1、1或0、x),而实际现实生活中往往需要对某一问题进行多种分类。例如之前识别图片中模糊手写数字的例子,这个时候就需要使用softmax算法。

softmax的算法逻辑

         如果判断输入属于某一个类的概率大于属于其他类的概率,那么这个类对应的值就逼近于1,其他类的值就逼近于0。它能将一个含任意实数的K维向量"压缩"到另一个K维向量中,使得每一个元素的范围都在0~1之间,并且使所有元素的和为1。同时,它可以将分类结果归一化,形成一个概率分布。

        softmax算法主要应用于多分类,而且是互斥的,即只能属于其中的一个类。而像Sigmoid这些一般的激活函数只能分两类,因此可以把softmax理解为是Sigmoid类的激活函数的扩展。

        其算法公式:

                即把所有值用e的n次方计算出来,求和后算每个值占的比率,保证总和为1,一般就可以认为softmax得出的就是概率。这里的exp(logits)指的就是e^logits。

                注意 : 对于要生成的多个类任务中不是互斥关系的任务,一般会使用多个二分类来组成。

softmax的原理

        以下为一个简单的softmax网络模型图:

                

        如图所示,输入的是x1和x2,识别输出的为y1、y2和y3三个类。

        对于属于y1类的概率,可以转化成输入x1满足某个条件的概率,与x2满足某个条件的概率的乘积,即y1 = (x1*w11)*(x2*w12)。在网络模型里把等式两边都取ln,ln后的属于y1类的概率就可以转化成,ln后的x1满足某个条件的概率加上ln后的x2满足某个条件的概率,即y1 = x1*w11+x2*w12等于ln后y1的概率。这也是softmax公式中要进行一次e的logits次方的原因。

        注意 : 等式两边取ln是神经网络中常用的技巧,主要用来将概率的乘法转变成加法,即ln(x*y) = lnx + lny。然后在后续计算中再将其转为e的x次方,还原成原来的值。

        举例 : 

                假设三个数值A=5,B=1,C=-1,那么他们的softmax占比为:

                        P(A)=(e^5)/(e^5 + e + e^-1)

                        P(B)=(e^1)/(e^5 + e + e^-1)

                        P(C)=(e^-1)/(e^5 + e + e^-1)

                计算结果为 : P(A) = 0.9817        P(B) = 0.0180        P(C) = 0.0003

                                     P(A) + P(B) + P(C) = 1

                因为P(A)值最大,因此取最大的值A为最终的分类。

softmax的一些特性

        ①归一化 : 每一个分类的概率之和为1,每一个分类都是一个小于1的数值。

        ②具有放大效果,比如上面例子中单纯从数值来看,5和1的差距并不大,但是通过指数运算后有明显的放大效果,5的占比能到98%以上。

        ③具有散列性质,每一个比率虽然最后都会进行归一化,但是他们放大之前的数值是可以相互不干扰的。

        基于上述这些特征,softmax在机器学习中的应用非常广泛,比如之前识别MNIST中每张图片中的数字是哪一个数字,就是一个使用softmax回归(softmax regression)模型的经典案例。

        注意 : 在实际使用中,softmax伴随的分类标签都为one_hot编码,而且这里还有个技巧,在softmax时需要将目标分成几类,就在最后这层放几个节点。

常用的分类函数

        TensorFlow中常用的分类函数主要有两个:

                ①tf.nn.softmax(logits,axis = None,name = None)

                        tf.nn.softmax函数最终返回的是一个tensor,与参数logits具有相同的类型和shape,这个tensor代表向量各个位置的得分(即概率)。所以通过tf.nn.softmax函数将logistic的预测二分类的概率的问题推广到了n分类的概率的问题。

                ②tf.nn.log_softmax(logits,axis = None,name = None)

                        tf.nn.log_softmax函数是对tf.nn.softmax函数的结果取对数,即把softmax函数的结果再进行log计算一遍。使用它可以使得计算速度变快,数据更加稳定。同时,也可以直接用于计算softmax的交叉熵loss。

        每个参数的意义如下:

                logits代表一个非空的tensor。类型必须是float32或float64

                axis表示在哪个维度上执行softmax计算。默认值为-1,表示最后一个维度

                name为操作的名称

如何使用softmax函数

        示例代码如下:

import tensorflow as tf

var = tf.constant([2,3,6,10,4,5,1],dtype = tf.float32)
pr = tf.nn.softmax(var)

print(pr)
#tf.argmax()函数用于找到张量(Tensor)中指定维度上的最大值的索引。它返回的是最大值所在位置的索引值
print(tf.argmax(pr))

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

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

相关文章

NginxWebUI runCmd 远程命令执行漏洞复现 [附POC]

文章目录 NginxWebUI runCmd 远程命令执行漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 NginxWebUI runCmd 远程命令执行漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相…

web入门---tomcat请求响应

Tomcat 介绍 Web 服务器是一个软件程序,对 HTTP协议的操作进行封装,使得不必直接对协议进行操作,让 web 开发更加便捷。主要功能是“提供网上信息浏览服务”。 下载 tomcat 演示说明 这里有一个示例直接双击打开 index.html但是这个“打开…

ai智能写作MAX:一款强大的AI写作工具

在数字时代的今天,人们对高质量内容的需求越来越迫切。无论是企业宣传、网站推广还是个人创作,优质的文案都能为你带来更多的曝光和转化率。然而,写作并非每个人的强项,许多人遇到了创作瓶颈和写作困境。这时候,AI智能…

Web自动化测试工具哪家强? Selenium与Cypress的比较

随着互联网技术在全球范围内的迅速发展,各种基于浏览器的Web应用程序也已成为当今软件开发的主流。围绕如何更好、更有效的测试Web应用的技术也是层出不穷。Cypress和Selenium是目前广泛使用,且很有代表性的两种Web自动化测试工具。互联网上对Cypress和S…

知识增强语言模型提示 零样本知识图谱问答10.8+10.11

知识增强语言模型提示 零样本知识图谱问答 摘要介绍相关工作方法零样本QA的LM提示知识增强的LM提示与知识问题相关的知识检索 实验设置数据集大型语言模型基线模型和KAPIN评估指标实现细节 实验结果和分析结论 摘要 大型语言模型(LLM)能够执行 零样本cl…

网络安全概述——常见网络攻击与网络病毒、密码体制、安全协议等

目录 1、信息安全五大要素 2、常见的网络攻击类型 2-1)网络攻击的分类: 2-2)常见网络攻击: DOS 攻击的分类: 2-3)常见网络攻击的防范措施 3、计算机病毒 3-1)常见病毒的前缀及其简要描述…

Vuex的简介以及入门案例

🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《Vue》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这个专栏…

测评6大最常见的免费开源报表

最近发现几款不错的开源报表,现在给大家分享一下,希望能带来帮助! 1、项目名称:积木报表 项目简介:积木报表,免费的企业级 WEB 报表工具。专注于 “专业、 易用 、优质” 的报表设计器和大屏设计器。支持打…

接口自动化测试详解(文档)

phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口,需要对接口头部进行封装,所以没有办法在浏览器下直接调用,但是可以用Curl命令的-d参数传递接口需要的参数。当然我们还以众筹网的登录接口为例,讲…

大数据之Hudi数据湖_版本兼容与Maven安装配置_解决Hudi与Hadoop3.0的兼容问题_编译hudi源码---大数据之Hudi数据湖工作笔记0002

然后我们来看一下,hudi我们这次安装的时候,各个组件的版本信息 这个hudi对各个版本的支持还是很多的,需要在安装的时候查一下 具体的 可以这样查一下 去看一下具体的hudi对spark的支持是多少,对flink的支持的版本是多少等等可以很容易查到 然后hudi

NSSCTF[SWPUCTF 2021 新生赛]hardrce(无字母RCE)

代码审计&#xff1a; 使用get方式请求给wllm传参 使用preg_match函数正则匹配过滤掉了一些符号 \t,\r,\n,\,\[,\^,\],\",\-,\$,\*,\?,\<,\>,\,\ 以及 [a-zA-Z] 即所有的大小写字母 如果传入内容满足这些条件则会执行eval函数 URL编码取反绕过正则实现RCE&…

【网络安全】「漏洞原理」(一)SQL 注入漏洞之概念介绍

前言 严正声明&#xff1a;本博文所讨论的技术仅用于研究学习&#xff0c;旨在增强读者的信息安全意识&#xff0c;提高信息安全防护技能&#xff0c;严禁用于非法活动。任何个人、团体、组织不得用于非法目的&#xff0c;违法犯罪必将受到法律的严厉制裁。 【点击此处即可获…

聊聊MySql索引的类型以及失效场景

文章目录 概念常见的索引1.B树索引2.哈希索引3.全文索引4.空间索引5.聚集索引 如何设计合理&#xff1f;1.明确索引需求2.选择索引列3.选择索引类型4.考虑索引维护开销5.设计联合索引6.删除不必要索引7.关注索引统计信息8.测试查询效果 常见不生效场景1.全表扫描2.索引列计算3.…

容器轻松上阵,优雅下线才是胜负之道

概述 优雅关闭&#xff1a; 在关闭前&#xff0c;执行正常的关闭过程&#xff0c;释放连接和资源&#xff0c;如我们操作系统执行shutdown。 目前业务系统组件众多&#xff0c;互相之间调用关系也比较复杂&#xff0c;一个组件的下线、关闭会涉及到多个组件。 对于任何一个线…

(2022|NIPS,CogLM,分层,LoPAR,icetk)CogView2:通过分层 Transformer 更快更好地文本到图像生成

CogView2: Faster and Better Text-to-Image Generation via Hierarchical Transformers 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.…

基于SpringBoot+Vue的教师人事档案管理系统

1 简介 基于SpringBootVue的教师人事档案管理系统&#xff0c;教师人事档案管理系统利用信息的合理管理&#xff0c;动态的、高效的、安全的实现了教师的各种需求&#xff0c;改变了传统的网上查看方式&#xff0c;使教师可以足不出户的在线查看最适合自己个人档案、奖惩信息、…

百度一面:谈谈 @Transactional 的原理和坑

百度一面&#xff1a;谈谈 Transactional 的原理和坑 这篇文章&#xff0c;会先讲述 Transactional 的 4 种不生效的 Case&#xff0c;然后再通过源码解读&#xff0c;分析 Transactional 的执行原理&#xff0c;以及部分 Case 不生效的真正原因。 项目准备 下面是 DB 数据和…

js的BoM事件(二)

js的BoM事件&#xff08;二&#xff09;&#xff0c;上一篇的补充 一.alert,confirm二.prompt三.open四.close 一.alert,confirm 实例&#xff1a; alert(hi); confirm(message);二.prompt <body><button ></button><script>var btndocument.querySe…

dbeaver 插入别名设置禁用

1&#xff0c;前提 最近换了一个数据库连接工具&#xff0c;初次使用&#xff0c;非常别扭。 2&#xff0c;问题 首先遇到的第一个问题是 每次输入from table时&#xff0c;后面就会自动添加一个表别名 tt&#xff0c;然后语句就变成这样 from table tt &#xff0c;所以每次…

全面深入了解自动化测试

一、自动化测试 在软件测试中&#xff0c;自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。在测试流程已经确定后&#xff0c;测试自动化可以自动执行的一些重复但必要测试工作。也可以完成手动测试几乎不可能完成的…