机器学习 day25(softmax在神经网络模型上的应用,提高数据精度的方法)

news2024/12/26 11:58:40
  1. 输出层采用softmax
    在这里插入图片描述
  • 在识别手写数字的模型中,预测y只有两个结果,所以输出层采用sigmoid激活函数且只有一个神经元。
  • 若预测y有10个结果(0-9),该模型的前向传播计算方式与识别数字的模型完全相同,即隐藏层的设定完全相同,那么输出层可以采用softmax激活函数,也叫该神经网络模型有一个softmax输出层
  • softmax激活函数与sigmoid激活函数的区别:对于sigmoid,a₁是只关于z₁的函数;对于softmax,a₁是关于z₁…z₁₀所有z的函数(每一个激活值a都取决于所有z的值)
  1. 用tensorflow实现softmax
    在这里插入图片描述
  • 与之前类似,有三个步骤来这指定和训练模型:第一步,指定模型结构并设定单元数和激活函数。第二步,指定损失函数和成本函数,在tensorflow中,称softmax激活函数的损失函数为SparseCategoricalCrossentropy函数。第三步,训练模型
  • 但这个版本的代码可能会损失数据精度,以下为提高数据精度的办法
  1. 提高数据精度
    在这里插入图片描述
  • 如图所示,在进行浮点数运算时,表达式不同结果也会不同,这是因为小数在计算机中用二进制来表示可能会丢失精度
  • 第二种情况先计算了两个中间值,再用两个中间值做运算,这加大了损失数据精度的可能。
  • 第二种可以通过化简表达式来达到第一种的数据精度
    在这里插入图片描述
  • 在之前逻辑回归模型中,输出层直接计算并输出激活值a,再将a的值带入损失函数,相当于上图的第二种情况,即先计算了中间值a,再将a的值代入损失函数进行运算,加大损失数据精度的可能
  • 相反,我们可以选择将输出层的激活值a隐式表达,即不直接计算出a的结果,转而将a直接代入损失函数中,再让tensorflow自动简化损失函数,来减小损失数据精度的可能
  • 在代码中:需要将输出层的激活函数设为linear,且将g(z)直接带入损失函数中。因为我们并不计算激活值a,所以不需要sigmoid激活函数,直接用linear激活函数输出z就行;因为要将a,即g(z)代入损失函数中,所以损失函数为关于z的函数
    在这里插入图片描述
  • 在之前的softmax回归模型中,输出层同样是直接计算并输出激活值a,再将a的值代入损失函数。同样是计算了中间值a,再将a的值代入损失函数进行运算,这加大了损失数据精度的可能。
  • 相反,我们也可以将输出层的激活值a隐式表达,即不直接计算出a的结果,转而将a直接代入损失函数,再让tensorflow自动简化损失函数,来减少损失数据精度的可能。
  • 代码中:同样将输出层的激活函数设为linear,且将g(z)直接代入损失函数中。因为我们也不需要计算激活值a,所以不需要softmax激活函数,直接用linear激活函数输出z就行;因为要将g(z)代入损失函数,所以损失函数为关于z的函数
  • 综上:这个版本与原始版本相比:提高了数据精度,增加了阅读的难度,但实现了几乎相同的事情
    在这里插入图片描述
  • 在softmax回归模型中,因为输出层的激活函数是linear,所以输出层的输出结果不再是a₁ - a₁₀,而是z₁ - z₁₀
    在这里插入图片描述
  • 对于逻辑回归模型也是如此,所以如果想要得到预测y为1的概率,还需要带入sigmoid函数g(z)

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

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

相关文章

【力扣算法07】之 2.两数相加 python

文章目录 问题描述示例1示例2示例 3提示 思路分析代码分析完整代码详细分析 完结 问题描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同…

RabbitMQ常用工作模式+整合springboot

目录 1.MQ的相关概念 1.1 什么是MQ消息中间件 1.2 为什么使用MQ (1) 应用解耦 (2) 异步提速 (3)削峰填谷 1.3 使用MQ的劣势 1.4 常见的MQ组件​​​​​​​ 2. RabbitMQ的概述 2.1 RabbitMQ的概念 2.2 RabbitMQ的原理 2.3 安装RabbitMQ 3. RabbitMQ 的工作模式…

Swift与OC的混编

一些场面话 在一位前辈的博客里看到了关于iOS开发的各种语言的混编,浅浅学习一下怎么使用。不得不说语言混编的开发者是真的🐮🍺 Swift中用OC混编 新建一个Swift文件 创建一个OC的类 选择language为OC 继续往下走,会跳出这个界…

学无止境·MySQL⑤(存储函数、存储过程)

存储函数和存储过程试题 试题一1、创建一个可以统计表格内记录条数的存储函数 ,函数名为count_sch()2、创建一个存储过程avg_sai,有3个参数,分别是deptno,job,接收平均工资,功能查询emp表dept为30&#xff…

C/C++用socket实现简单的TCP文件传输

C/C:用socket实现简单的TCP文件传输 网络中进程之间如何进行通信socket是什么socket的基本操作socket()函数bind()函数listen()、connect()函数accept()函数recv()/send()函数close()函数 TCP的“三次握手”“三次握手”的作用 TCP的“四次挥手”四次挥手的一些注意事项 代码实…

【附3.7安装包】python安装包下载及安装(超详细)

python3.7链接:https://pan.baidu.com/s/1Ett3XBMjWhkVOxkOU8NRqw?pwdqz3l 提取码:qz3l 今日资源:Python 适用系统:WINDOWS ​ Python 3.7.0 软件介绍: Python是一款通用型的计算机程序设计语言,Pytho…

【Leetcode】19. 删除链表的倒数第N个节点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2: 输入&…

有没有线上兼职的副业,在家可以做什么赚钱

线上兼职副业啊,确实是一个不错的副业选择!不过,我得提醒你,如果想要那种点一下鼠标就会下金币的神仙项目,这样的期待的话,那我只能告诉你,你可能走错地方了,在这帮不了你。 在线上赚…

LeetCode[470]用Rand7()实现Rand10()

难度:Medium 题目: 给定方法 rand7 可生成 [1,7] 范围内的均匀随机整数,试写一个方法 rand10 生成 [1,10] 范围内的均匀随机整数。 你只能调用 rand7() 且不能调用其他方法。请不要使用系统的 Math.random() 方法。 每个测试用例将有一个内部…

Python案例分析|基于模块的库存管理系统

本案例是通过一个多模块的库存管理系统案例,帮助大家深入了解基于模块的Python应用程序的开发流程。 01、库存管理系统API设计 本文实现一个简单的基于模块的库存管理系统。系统采用JSON文件来保存数据。产品信息设计为字典,键为sku_id(产品…

软件工程——第13章软件项目管理知识点整理(完结)

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.管理的定义? 2.软件项目管理地位?(重要性) 3.软件项目管理过程从一组项目计划活动开始&#xff0c…

怎么制作查询成绩的网页?这个不用代码的方法你用过没?

作为一名老师,与家长沟通交流是日常工作中重要的一部分。特别是每次考完试后,家长都急切地想了解孩子的成绩,以便能及时了解孩子的学习情况并给予适当的支持和指导。然而,为了保护学生的隐私,大部分学校不公开张榜学生…

字符设备驱动led灯实验

应用程序代码 #include<stdio.h> #include<string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h>int main (int argc, const char *argv[]) {char buf[128] &quo…

马上就要到2023年秋招的黄金时期了,计算机专业面试究竟需要注意些什么?

说说自己&#xff0c;不算很突出。本人 17 年就读于一所普通的本科学校&#xff0c;20 年 6 月在三年经验的时候顺利通过校招实习面试进入大厂&#xff0c;现就职于某大厂安全实验室。 所以我还是比较有话语权的吧。 话不多说直接进入主题。 1.理论知识准备&#xff1a;复习计算…

驱动 day9 作业

要求&#xff1a; 现象 按下key1 led1灯的状态取反&#xff0c;number的值取反&#xff0c;然后应用程序打印从内核读到的number的值 应用程序test.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #incl…

Bash 有效电话号码

193 有效电话号码 给定一个包含电话号码列表&#xff08;一行一个电话号码&#xff09;的文本文件 file.txt&#xff0c;写一个单行 bash 脚本输出所有有效的电话号码。 你可以假设一个有效的电话号码必须满足以下两种格式&#xff1a; (xxx) xxx-xxxx 或 xxx-xxx-xxxx。&…

三维重建以及神经渲染中的学习(三)

三维重建以及神经渲染中的学习 公众号AI知识物语 本文内容为参加过去一次暑期课程学习时的笔记&#xff0c;浅浅记录下。 三维图形可控生成&#xff1a; 1&#xff1a;学习一个图形生成模型 2&#xff1a;具有可控三维变量&#xff1a;1物体形状&#xff1b;2物体位置&…

ScannerException: while scanning for the next token found character ‘@‘ 问题解决

问题描述 后端项目启动的时候报ScannerException: while scanning for the next token found character ‘‘ 异常&#xff0c;自己有些疑问&#xff0c;项目前一会都还可以&#xff0c;到报错的过程中&#xff0c;项目都没有动过。 解决办法 重新刷新项目就解决了。

RxSwift 使用方式

背景 最近项目业务&#xff0c;所有模块已经支持Swift混编开发&#xff0c;正在逐步使用Swift 方式进行开发新业务&#xff0c;以及逐步替换老业务方式进行发展&#xff0c;所以使用一些较为成熟的Swift 的三方库&#xff0c;成为必要性&#xff0c;经过调研发现RxSwift 在使用…

HarmonyOS/OpenHarmony应用开发-程序包多HAP机制(上)

一、多HAP机制设计目标 方便开发者模块化的管理应用&#xff0c;好的应用一般都是模块化管理&#xff0c;模块之间属于松耦合关系。多HAP方便了开发者将业务划分成多个模块&#xff0c;每个模块放到独立的HAP中。例如支付类应用&#xff0c;有统一的主界面&#xff0c;主界面管…