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

这篇具有很好参考价值的文章主要介绍了TensorFlow入门(十九、softmax算法处理分类问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

softmax是什么?

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

softmax的算法逻辑

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

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

        其算法公式:TensorFlow入门(十九、softmax算法处理分类问题),TensorFlow入门,tensorflow,python,深度学习

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

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

softmax的原理

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

                TensorFlow入门(十九、softmax算法处理分类问题),TensorFlow入门,tensorflow,python,深度学习

        如图所示,输入的是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))

TensorFlow入门(十九、softmax算法处理分类问题),TensorFlow入门,tensorflow,python,深度学习文章来源地址https://www.toymoban.com/news/detail-725962.html

到了这里,关于TensorFlow入门(十九、softmax算法处理分类问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据深度学习:基于Tensorflow深度学习卷积神经网络CNN算法垃圾分类识别系统

    随着社会的发展和城市化进程的加速,垃圾分类已经成为了环境保护和可持续发展的重要课题。然而,传统的垃圾分类方法通常依赖于人工识别,效率低下且易出错。因此,本项目旨在利用大数据和深度学习技术,构建一个基于 TensorFlow 深度学习的神经网络 CNN(Convolutional

    2024年04月14日
    浏览(106)
  • 基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(一)

    博主前段时间发布了一篇有关方言识别和分类模型训练的博客,在读者的反馈中发现许多小伙伴对方言的辨识和分类表现出浓厚兴趣。鉴于此,博主决定专门撰写一篇关于方言分类的博客,以满足读者对这一主题的进一步了解和探索的需求。上篇博客可参考: 《基于Python+W

    2024年02月05日
    浏览(39)
  • 基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(二)

    博主前段时间发布了一篇有关方言识别和分类模型训练的博客,在读者的反馈中发现许多小伙伴对方言的辨识和分类表现出浓厚兴趣。鉴于此,博主决定专门撰写一篇关于方言分类的博客,以满足读者对这一主题的进一步了解和探索的需求。上篇博客可参考: 《基于Python+W

    2024年02月05日
    浏览(40)
  • Softmax回归(多类分类模型)

    y为真实值,有且仅有一个位置值为1,该位置即为该元素真实类别 Oi为该元素与类别i匹配的置信度 对于正确类y的置信度Oy要远远大于其他非正确类的置信度Oi,才能使识别到的正确类与错误类具有更明显的差距 y^为n维向量,每个元素非负且和为1 y^i为元素与类别i匹配的概率

    2024年01月19日
    浏览(41)
  • 基于Python+WaveNet+CTC+Tensorflow智能语音识别与方言分类—深度学习算法应用(含全部工程源码)

    本项目利用语音文件和方言标注文件,提取语音的梅尔倒谱系数特征,并对这些特征进行归一化处理。在基于标注文件的指导下,构建了一个字典来管理数据。接着,我们选择WaveNet机器学习模型进行训练,并对模型的输出进行softmax处理。最终,经过训练后的模型将被保存以

    2024年02月16日
    浏览(55)
  • 【Tensorflow object detection API + 微软NNI】图像分类问题完成自动调参,进一步提升模型准确率!

    1. 背景目标 利用Tensorflow object detection API开发并训练图像分类模型(例如,Mobilenetv2等),自己直接手动调参,对于模型的准确率提不到极致,利用微软NNI自动调参工具进行调参,进一步提升准确率。 2. 方法 关于 Tensorflow object detection API 开发并训练图像分类模型详见这篇博客

    2024年02月12日
    浏览(51)
  • pytorch学习-线性神经网络——softmax回归+损失函数+图片分类数据集

            Softmax回归(Softmax Regression)是一种常见的多分类模型,可以用于将输入变量映射到多个类别的概率分布中。softmax回归是机器学习中非常重要并且经典的模型,虽然叫回归,实际上是一个分类问题         回归是估计一个连续值,分类是预测一个连续的类别  示例

    2024年02月15日
    浏览(47)
  • 三 动手学深度学习v2 —— Softmax回归+损失函数+图片分类数据集

    softmax回归 损失函数 1. softmax回归 回归vs分类: 回归估计一个连续值 分类预测一个离散类别 从回归到多类分类 回归 单连续数值输出 自然区间R 跟真实值的误差作为损失 分类 通常多个输出 输出i是预测为第i类的置信度 总结: 2. 损失函数 L2 loss 均方损失 l ( y , y ′ ) = 1 2 ( y −

    2024年02月14日
    浏览(37)
  • 网络安全系列-三十九: 开源IDS/IPS/网络安全监控平台SELKS docker部署及问题处理

    SELKS是一个基于debian的免费开源IDS/IPS/网络安全监控平台,是基于网络的高性能威胁检测和响应系统,由Stamus Networks根据GPLv3发布 github地址 网络安全监控系统会产生大量的事件,SELKS为用户提供了一些基本的工具,用来对事件进行分类,过滤事件,或者发出报警。这样可以帮助

    2024年02月01日
    浏览(49)
  • 多分类问题的处理策略和评估手段

    博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包