【深度学习_TensorFlow】激活函数
写在前面
上篇文章我们了解到感知机使用的阶跃函数和符号函数,它们都是非连续,导数为0的函数:

建议回顾上篇文章,本篇文章将介绍神经网络中的常见激活函数,这些函数都是平滑可导的,适合于梯度下降算法。
写在中间
激活函数是做什么的?
激活函数(Activation Function)是神经网络中的一个重要组成部分,主要用于将神经元的输入信息进行非线性变换,从而引入非线性特性。
为什么要使用激活函数?
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是线性组合,这种情况就是最原始的感知机。将来归纳出的方程就如图a所示,要实现图b的效果就只能将线性模型嵌套非线性函数转换为非线性函数。

我们把这个非线性函数称为激活函数(Activation Function),用𝜎表示:
o = σ ( W x + b ) o=\sigma{(Wx + b)} o=σ(Wx+b)
这里的𝜎代表了某个具体的非线性激活函数,如 Sigmoid 函数、ReLU 函数

表达能力
模型的表达能力偏弱,就可以通过堆叠多次变换来增加其表达能力
把第一层神经元的输出值 h 1 h_1 h1作为第二层神经元模型的输入,把第二层神经元的输出 h 2 h_2 h2作为第三层神经元的输入,最后一层神经元的输出作为模型的输出,使用ReLU激活函数举例
h 1 = R e L U ( W x 1 + b 1 ) h_1=ReLU(Wx_1 + b_1) h1=ReLU(Wx1+b1)
h 2 = R e L U ( W 2 h 1 + b 2 ) h_2 = ReLU(W_2h_1 + b_2) h2=ReLU(W2h1+b2)
o = W 3 h 2 + b 3 o = W_3h_2 + b_3 o=W3h2+b3
激活函数介绍
一、Sigmoid
( 1 )简单介绍
此函数的定义如下
S i g m o i d ( x ) ≜ 1 1 + e − x \mathrm{Sigmoid}(x)\triangleq\frac1{1+\mathrm{e}^{-x}} Sigmoid(x)≜1+e−x1

在深度学习中的优点如下:
-
它的值域为(0, 1),能够把𝑥 ∈ 𝑅的输入“压缩”到𝑥 ∈ (0,1)区间,和概率的分布范围[0,1]契合,可以通过 Sigmoid 函数将输出转译为概率输出
-
Sigmoid 函数连续可导,可以直接利用梯度下降算法优化网络参数
( 2 )简单实现
如何在TensorFlow中使用这个函数呢,其实一行代码就可以搞定了
tf.nn.sigmoid(x) # 通过 Sigmoid 函数
二、ReLU
( 1 )简单介绍
在 ReLU激活函数提出之前,Sigmoid 函数通常是神经网络的激活函数首选。但是 Sigmoid 函数在输入值较大或较小时容易出现梯度值接近于 0 的现象,网络参数长时间得不到更新,导致训练不收敛或停滞不动的现象发生。
此函数的定义如下:
ReLU ( x ) ≜ max ( 0 , x ) \operatorname{ReLU}(x)\triangleq\max(0,x) ReLU(x)≜max(0,x)

可以看到,ReLU 对小于 0 的值全部抑制为 0;对于正数则直接输出
( 2 )函数实现
函数的调用同样简单
tf.nn.relu(x)
三、LeakyReLU
( 1 )简单介绍
ReLU 函数在𝑥 < 0时导数值恒为 0,也可能会造成梯度弥散现象,为了克服这个问题,LeakyReLU 函数被提出,此函数的定义为:
LeakyReLU ≜ { x x ≥ 0 p x x < 0 \text{LeakyReLU}\triangleq\left\{\begin{matrix}x&x\geq0\\px&x<0\end{matrix}\right. LeakyReLU≜{xpxx≥0x<0

其中𝑝为用户自行设置的某较小数值的超参数,如 0.02 等。当𝑝 = 0时,LeayReLU 函数退化为ReLU 函数;当𝑝 ≠ 0时,𝑥 < 0处能够获得较小的导数值𝑝,从而避免出现梯度弥散现象。
( 2 )函数实现
tf.nn.leaky_relu(x, alpha=0.02)
四、Tanh
( 1 )简单介绍
Tanh 函数能够将𝑥 ∈ 𝑅的输入“压缩”到(−1,1)区间,其函数的定义为
tanh ( x ) = ( e x − e − x ) ( e x + e − x ) = 2 ⋅ s i g m o i d ( 2 x ) − 1 \begin{aligned}\tanh(x)&=\frac{(\mathrm{e}^x-\mathrm{e}^{-x})}{(\mathrm{e}^x+\mathrm{e}^{-x})}=2\cdot\mathrm{sigmoid}(2x)-1\end{aligned} tanh(x)=(ex+e−x)(ex−e−x)=2⋅sigmoid(2x)−1

( 2 )代码实现
tf.nn.tanh(x)
激活函数输出范围
了解了上面的函数之后,不知你是否有这样的疑问,这么多种函数,在进行网络构建的时候究竟如何选择?
其实这其中还是有些门道的,主要根据数据的范围和构建网络的目的来选择,具体情况还要结合实际问题试验:
例如:
-
输出区间为[0, 1],在网络模型主要进行二分类(猫狗识别分类)、图片生成(像素归一化),就可以使用类似Sigmoid()一类的函数。
-
输出区间为[0, 1],且所有数据的概率和为1,网络模型主要进行多分类问题(mnist手写数字识别),就可以使用类似Softmax()一类的函数。
-
输出区间为[-1, 1],就可以使用Tanh() 函数。
-
输出区间在某个段内,网络模型进行年龄预测、股票走势的预测,更倾向于回归问题,ReLU函数可能效果较好。
写在最后
👍🏻点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!
相关文章:
【深度学习_TensorFlow】激活函数
写在前面 上篇文章我们了解到感知机使用的阶跃函数和符号函数,它们都是非连续,导数为0的函数: 建议回顾上篇文章,本篇文章将介绍神经网络中的常见激活函数,这些函数都是平滑可导的,适合于梯度下降算法。 写…...
机器学习笔记之优化算法(七)线搜索方法(步长角度;非精确搜索;Wolfe Condition)
机器学习笔记之优化算法——线搜索方法[步长角度,非精确搜索,Wolfe Condition] 引言回顾: Armijo \text{Armijo} Armijo准则及其弊端 Glodstein \text{Glodstein} Glodstein准则及其弊端 Wolfe Condition \text{Wolfe Condition} Wolfe Condi…...
十四.redis哨兵模式
redis哨兵模式 1.概述2.测试3.哨兵模式优缺点 redis哨兵模式基础是主从复制 1.概述 主从切换的技术方法:当主节点服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费时费力,还会造成一段时间内服…...
采用UWB技术开发的智慧工厂人员定位系统源码【UWB定位基站、卡牌】
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。UWB定位系统依托在移动通信,雷达,微波电路,云计算与大数据…...
当你软件测试遇上加密接口,是不是就不能测了?
相信大家在工作中做接口测试的时候,肯定会遇到一个场景,那就是你们的软件,密码是加密存储的。 那么这样的话,我们在执行接口的时候,对于密码的处理就开始头疼了。 所以,本文将使用jmeter这款java开源的接…...
Flink
Flink(Apache Flink)是一个开源的分布式流处理引擎和批处理框架。它是由 Apache 软件基金会维护的项目,旨在处理大规模数据的实时流式处理和批处理任务。Flink 提供了强大的流处理和批处理功能,具有低延迟、高吞吐量和高容错性&am…...
python入门常用操作
python常用操作 1、ndarry数组的切片2、print用法2.1格式化输出format2.2字符串格式化输出 3、均值滤波函数 1、ndarry数组的切片 例如一个5列的ndarry数组,想要获取第2列和第3列数据,可以用 #(1)用法1 data[:,1:3],…...
SpringBoot复习:(21)自定义ImportBeanDefinitionRegistrar
要达到的目的:将某个包下使用了某个自定义注解(比如MyClassMapper)的类注册到Spring 容器。 一、自定义注解: package com.example.demo.service;import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy;Rete…...
小黑子—JavaWeb:第五章 - JSP与会话跟踪技术
JavaWeb入门5.0 1. JSP1.1 JSP快速入门1.2 JSP原理1.3 JSP脚本1.3.1 JSP缺点 1.4 EL 表达式1.5 JSTL 标签1.5.1 JSTL 快速入门1.5.1 - I JSTL标签if1.5.1 - II JSTL标签forEach 1.6 MVC模式1.7 三层架构1.8 实现案例1.8.1 环境准备1.8.2 查询所有1.8.3 添加数据1.8.4 修改1.8.4…...
Python - 【socket】 客户端client重连处理简单示例Demo(一)
一. 前言 在Python中,使用socket进行网络通信时,如果连接断开,可以通过以下步骤实现重连处理 二. 示例代码 1. 定义一个函数,用于建立socket连接 import socketdef connect_socket(host, port):while True:try:# 建立socket连…...
Redis 基础
1.定义 Redis 是一个高性能的key-value数据库,key是字符串类型。 2.核心特点: 单进程: Redis的服务器程序采用的是单进程模型来处理客户端的请求。对读写时间的响 应是通过对epoll函数的包装来做到的。 3.数据类型: 键的类型…...
【0805作业】Linux中 AB终端通过两根有名管道进行通信聊天(半双工)
作业一:打开两个终端,要求实现AB进程对话【两根管道】 打开两个终端,要求实现AB进程对话 A进程先发送一句话给B进程,B进程接收后打印B进程再回复一句话给A进程,A进程接收后打印重复1.2步骤,当收到quit后&am…...
ruby - ckeditor 设置编辑器高度
参考:Blogs <% f.cktext_area :zh_content, ckeditor: { height: 1000} %>...
WMS仓库管理系统研发规划说明
01 产品背景 1.1 背景概述 aboss WMS东南亚仓库管理系统是一个基于BigSeller系统的使用基础上,加上多仓库的解决思路,解决入库业务、出库业务、仓库调拨、库存调拨和虚仓管理等功能,对批次管理、物料对应、库存盘点、质检管理、虚仓管理和即…...
JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础实战
学习来源:尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 📚事件对象📚事件的冒泡📚事件的委派📚事件的绑定🐇赋值绑定🐇addEventListener()🐇attachEvent()&…...
实验心得,包括代码复现工作的体会
实践是检验真理的唯一标准 resnet20,cifar100. Direct training: 和原论文一样的参数 64.45 time step 1, Accuracy 0.5918 time step 2, Accuracy 0.6320 time step 4, Accuracy 0.6446 time step 8, Accuracy 0.6531 time step 16, Accuracy 0.6608 time ste…...
RabbitMQ(二)
二、高级特性、应用问题以及集群搭建 高级特性 1.消息的可靠性投递 在使用RabbitMQ的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。 rabbitMQ整个消息投递的路径为: produ…...
Linux软件实操
systemctl命令 Linux系统的很多内置或第三方的软件均支持使用systemctl命令控制软件(服务)的启动、停止、开机自启 systemctl start(启动) 或 stop(关闭) 或 status(查看状态) 或 enable(开启开机自启) disable(关闭开机自启) 服务名: 控制服务的状态 系统内置的服务: Netwo…...
kagNet:对常识推理的知识感知图网络 8.4+8.5
这里写目录标题 摘要介绍概述问题陈述推理流程 模式图基础概念识别模式图构造概念网通过寻找路径来匹配子图基于KG嵌入的路径修剪 知识感知图网络图卷积网络(GCN)关系路径编码分层注意机制 实验数据集和使用步骤比较方法KAGNET是实施细节性能比较和分析I…...
Jmeter 压测工具使用手册[详细]
1. jemter 简介 jmeter 是 apache 公司基于 java 开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简 单。因为 jmeter 是 java 开发的,所以运行的时候必须先…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
