TensorFlow神经网络的激活函数

神经网络激活函数:原理、选择与TensorFlow实践 激活函数是神经网络实现非线性建模的核心组件,其本质是通过引入非线性变换使网络能够拟合复杂函数关系。从原理上看,常见的sigmoid、tanh和ReLU等激活函数各有特点:sigmoid适合概率输出但易导致梯度消失,tanh改善零中心化问题,而ReLU则以计算高效著称。在工程实践中,合理选择激活函数能显著提升模型性能,如在CNN中ReLU可缓解梯度消失,而LSTM常用tanh保持梯度流动。TensorFlow框架提供了灵活的激活函数集成方式,既可作为独立层使用,也能嵌入Dense/Conv层参数。针对不同任务 阅读详情
激活函数

激活函数是人工神经网络的一个极其重要的特征。它决定一个神经元是否应该被激活,激活代表神经元接收的信息与给定的信息有关。
在这里插入图片描述

激活函数对输入信息进行非线性变换。 然后将变换后的输出信息作为输入信息传给下一层神经元。

激活函数作用

当我们不用激活函数时,权重和偏差只会进行线性变换。线性方程很简单,但解决复杂问题的能力有限。没有激活函数的神经网络实质上只是一个线性回归模型。激活函数对输入进行非线性变换,使其能够学习和执行更复杂的任务。我们希望我们的神经网络能够处理复杂任务,如语言翻译和图像分类等。线性变换永远无法执行这样的任务。激活函数使反向传播成为可能,因为激活函数的误差梯度可以用来调整权重和偏差。如果没有可微的非线性函数,这就不可能实现。总之,激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。

激活函数种类
Sigmoid函数

函数如下:作用是计算 x 的 sigmoid 函数。具体计算公式为 y=1/(1+exp(−x)),将值映射到[0.0 , 1.0]区间
当输入值较大时,sigmoid将返回一个接近于1.0的值,而当输入值较小时,返回值将接近于0.0.
优点:在于对在真实输出位于[0.0,1.0]的样本上训练的神经网络,sigmoid函数可将输出保持在[0.0,1.0]内的能力非常有用.
缺点:在于当输出接近于饱和或者剧烈变化是,对输出返回的这种缩减会带来一些不利影响.
当输入为0时,sigmoid函数的输出为0.5,即sigmoid函数值域的中间点函数图像如下所示:
在这里插入图片描述

Softmax函数

也是一种sigmoid函数,但它在处理分类问题时很方便。
sigmoid函数只能处理两个类。当我们想要处理多个类时,该怎么办呢?只对单类进行“是”或“不是”的分类方式将不会有任何帮助。
softmax函数将压缩每个类在0到1之间,并除以输出总和。它实际上可以表示某个类的输入概率。比如,我们输入[1.2,0.9,0.75],当应用softmax函数时,得到[0.42,0.31,0.27]。
现在可以用这些值来表示每个类的概率。softmax函数最好在分类器的输出层使用。其定义为:
在这里插入图片描述

Tanh函数

函数如下:将值映射到[-1,1]区间
在这里插入图片描述
tanh与sigmoid非常接近,且与后者具有类似的优缺点, sigmoid和tanh的主要区别在于tanh的值为[-1.0,1.0]
优点在于在一些特定的网络架构中,能够输出负值的能力十分有用.
缺点在于注意tanh值域的中间点为0.0,当网络中的下一层期待输入为负值或者为0.0时,这将引发一系列问题.
在这里插入图片描述

Relu函数

(Rectified Linear Units修正线性单元)函数如下:
relu函数是目前用的最多也是最受欢迎的激活函数。

relu在x<0时是硬饱和。由于当x>0时一阶导数为1。
所以,relu函数在x>0时可以保持梯度不衰减,从而缓解梯度消失问题,还可以更快的去收敛。但是,随着训练的进行,部分输入会落到硬饱和区,导致对应的权重无法更新。我们称之为“神经元死亡”。
公式和函数图像如下
在这里插入图片描述

Elu函数

是relu激活函数的改进版本,解决部分输入会落到硬饱和区,导致对应的权重无法更新的问题。
计算激活函数relu,即max(features, 0),所有负数都会归一化为0,所以的正值保留为原值不变。
优点:在于不受”梯度消失”的影响,且取值范围在[0,+oo)
缺点:在于使用了较大的学习速率时,易受达到饱和的神经元的影响。
公式和图像如下:左边缩小方差,右边保持方差;方差整体还是缩小的,而均值得不到保障。
在这里插入图片描述
在这里插入图片描述

Selu函数

左边缩小方差,右边放大方差,适当选取参数alpha和lambda,使得整体上保持方差与期望。
如果选取:lambda=1.0506,alpha=1.67326,那么可以验证如果输入的x是服从标准正态分布,那么SELU(x)的期望为0,方差为1.
在这里插入图片描述
在这里插入图片描述

SoftPlus函数

可以看作是relu函数的平滑版本,公式和函数图像如下:
在这里插入图片描述
在这里插入图片描述

线性函数Linear

我们看到了step函数的问题,梯度为零,在反向传播过程中不可能更新权重和偏差。此时,我们可以用线性函数来代替简单的step函数。函数表达式:f(x)=ax+b
在这里插入图片描述

如何选择激活函数

激活函数好或坏,不能凭感觉定论。然而,根据问题的性质,我们可以为神经网络更快更方便地收敛作出更好的选择。
用于分类器时,sigmoid函数及其组合通常效果更好。
由于梯度消失问题,有时要避免使用sigmoid和tanh函数。
ReLU函数是一个通用的激活函数,目前在大多数情况下使用。
如果神经网络中出现死神经元,那么PReLU函数就是最好的选择。
请记住,ReLU函数只能在隐藏层中使用。
一点经验:你可以从ReLU函数开始,如果ReLU函数没有提供最优结果,再尝试其他激活函数。

梯度知识补充

在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0, ∂f/∂y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(∂f/∂x, ∂f/∂y,∂f/∂z)T,以此类推。
那么这个梯度向量求出来有什么意义呢?它的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。    
梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数f(θ)的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 -f(θ)的最大值,这时梯度上升法就派上用场了。

推荐:
刘建平老师的博客:https://www.cnblogs.com/pinard/p/5970503.html
刘建平老师的GitHub:https://github.com/ljpzzz/machinelearning

完整神经网络样例程序(TensorFlow,加入偏置项和relu激活函数)(源码) # coding=utf-8"""完整的神经网络解决二分类问题(加入偏置项和relu激活函数)"""import tensorflow as tffrom numpy.random import RandomState# 定义训练数据batch大小batch_size = 8# 定义神经网络的参数w1 = tf.Variable(tf.random_normal([2, 3], stddev=1,... 阅读详情

相关推荐

我的AI学习 ai维护工具之langfuse

as_type: Optional[Literal[‘generation’]] = None, # 将记录定义为 Observation (LLM 调用)transform_to_string: Optional[Callable[[Iterable], str]] = None # 将输出转为 string。要用LangFuse的云服务,首先要在LangFuse官网上注册,注册完后将页面拉倒最后,点免费的SignUp,API文档:https://api.reference.langfuse.com/

liubaobin的博客 4095

TensorFlow神经网络中的激活函数

激活函数是人工神经网络的一个极其重要的特征。它决定一个神经元是否应该被激活,激活代表神经元接收的信息与给定的信息有关。激活函数对输入信息进行非线性变换。 然后将变换后的输出信息作为输入信息传给下一层神经元。激活函数的作用当我们不用激活函数时,权重和偏差只会进行线性变换。线性方程很简单,但解决复杂问题的能力有限。没有激活函数的神经网络实质上只是一个线性回归模型。激活函数对输入进行非线性变换...

JasonStudy 704

【Unity3D】RTS Engine 笔记一

RTS Engine 中配置一个新场景, 初步认识GameManager、设置地形以及配置地形网格搜索

ViYeye的博客 1648

神经网络softmax激活函数的求导过程

在使用softmax函数作为输出层激活函数的神经网络中,进行反向传播时需要计算损耗函数相对于Z的导数,即 。网上有很多公式推导,但都太“数学”化了,看着比较抽象。所以总结下自己理解的比较简单的推导过程。 首先,为了直观理解,我们假设Z为一个3x1的向量,通过soft max函数激活后的A也为3x1的向量。当Z的维度更大时,其实方法也都是一样,为了避免繁琐的表达式,这里进行了简化。 具体过程如下...

刀刀脱靶的博客 2033

STM32F103+W5500网络通信

STM32F103+W5500网络通信一、W5500模块(一)W5500以太网模块介绍(二)模块排针功能表二、 modbus协议(一)modbus协议原理(二)Modbus 通讯方式1.Modbus三种通讯方式2.在Modbus网络上传输3.以太网(modbus tcp/ip)三、参考资料 一、W5500模块 (一)W5500以太网模块介绍 D-W5500 EVB以太网模块是一款基于WIZnet W5500芯片的以太网模块,且性价比高的以太网模块。W5500是一款全硬件TCP/IP嵌入式以太网控制器,为

”一只特立独行的猪“的博客 1万+

Windows10下RTABMAP+T265实现三维建图

win10+rtabmap+t265扫描地形

Suxiang1997的博客 3485

深度学习之激活函数

转自[深度学习中常用激活函数总结 - 知乎] 0. 前言 本文总结了几个在深度学习中比较常用的激活函数:Sigmoid、ReLU、LeakyReLU以及Tanh,从激活函数的表达式、导数推导以及简单的编程实现来说明。 1. Sigmoid激活函数 Sigmoid激活函数表达式 Sigmoid导数表达式 Sigmoid编程实现 Sigmoid激活函数以及导函数图像 Sigmoid激活函数也叫做Logistic函数,因为它是线性回归转换为Logistic(逻辑回归)的核心函数,这

light169的专栏 2621

打造会自主学习的 AI 助手:OpenClaw 记忆系统完全指南

这不是科幻,这是我正在使用的系统。我的 AI 助手「小琳」已经运行了一段时间,积累了大量的知识和经验,而且还在不断学习成长。心跳(Heartbeat)是 OpenClaw 的定时轮询机制,可以让 AI 主动做一些事情。你有没有遇到过这样的困扰:每次和 AI 对话,它都像失忆了一样,之前聊过的内容完全不记得?设置定时任务:每天早上 8 点,查询天气和热点新闻,通过钉钉推送给我。让你的 AI 助手拥有持久记忆,能够自主学习、总结经验、不断成长。这不仅仅是一个「能记住事情的 AI」,而是一个。

Honmaple的博客 1633

dense层、激活函数、输出层设计

Tensorflow——tf.layers.dense dense:全连接层 相当于添加一个层,即初学的add_layer()函数 tf.layers.dense( inputs, units, activation=None, use_bias=True, kernel_initializer=None, bias_initializer=tf.zeros_initializer(), kernel_regularizer=None, bi

qq_34619572的博客 2万+

Android 11多窗口+分屏+APP窗口嵌套TaskView实现原理一

然而随着版本的迭代升级,google对分屏的定制差异化也越来越大,Androd 11的分屏用的是split-screen-primary和split-screen-secondary的方式,在systemui中去实现的,其定制化的灵活度不是很高,很多业务都是放到sustemui或者fw去实现,但是随着版本的升高,后面出现了TaskView来替代了老版本的分屏方式,但是Task的核心原理其实和之前的方式是一样的,TaskView来实现分屏。

qq_18420641的博客 2613

RK3588平台开发系列讲解(DMA篇)DMA engine使用

Linux 内核的 DMA 引擎提供了一组完整的接口,用于申请和释放 DMA 通道、准备 DMA 描述符、启动和控制 DMA 传输,以及同步和管理缓存。通过这些接口,内核能够高效地处理异步的 DMA 传输任务,减少 CPU 的干预,提高数据传输的效率。

内核笔记 1831

4.多层感知器(神经网络)与激活函数

目录 1神经元 2激活函数 2.1relu 2.2sigmoid 2.3tanh 2.4Leak relu 1神经元 上次做的线性归回是单个神经元,并且再网络的最后没有使用激活函数而是直接进行输出 神经元:我下面画的这个圈就是神经元 我们每一个输入我们理解为都有一定的特征,我们定义为x1,x2,x3,每一个特征我们认为都有相应的权重改变 y = ax + b 我们把这些权重求和,最终通过传递函数(激活函数)输出结果,下面这个图是单个神经元的图例 如果有...

potato123232的博客 1135

[xboard-ok210] 44 s5pv210开发板介绍和对比

文章目录前言四大S3C6410提供商友坚开发板UT-S5PV210华天正(润尔)real210飞凌开发板ok210九鼎x210友善之臂开发板tiny210mini210smart210天嵌开发板tq210sate210xboardxboardxboard之ok210 前言 四大S3C6410提供商 友坚开发板 UT-S5PV210 华天正(润尔) real210 飞凌开发板 ok210 九鼎 x210 友善之臂开发板 tiny210 mini210 smart210 天嵌开发板 tq210 sate210

鹰之翔 286

卷积神经网络的激活函数以及模型搭建的Tensorflow实现

为了应对现实世界中的非线性问题,神经网络通常在卷积层之后对输出的神经元进行非线性映射,这种非线性映射就是激活函数。但是最常用的激活函数有sigmoid、RELU、LEAKY RELU、Softmax、ELu、tanh这6种, 因此下面着重介绍这五种激活函数。可以看到在x>5和x<-5这两端区间sigmoid函数的梯度几乎为0,这会导致梯度在反向传播时,随着隐藏层数的增加,梯度越来越趋近于0,这种现象叫做梯度消失。并且sigmoid函数的函数中心的函数值不为0,而是0.5。公式:f(x)=max(0, x)

m0_67743253的博客 977

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TensorFlow搭建神经网络的时候如何选取激活函数

TensorFlow搭建神经网络的时候如何选取激活函数 如何选取激活函数 激活函数的必要性 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了。 正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神...

qq_45607954的博客 275

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Tensorflow:介绍常见激活函数和池化,并用Tensorflow搭建前向神经网络

Tensorflow:介绍常见激活函数和池化,并用Tensorflow搭建前向神经网络 一、常见激活函数和池化 1 激活函数 ​ 激活函数通常用于卷积层和全连接层的末端,为神经网络提供非线性变化。 ​ 1.1 sigmoid ​ S形曲线,早期用于卷积层,通常用于逻辑回归任务的最后一层输出 ​ tensorflow对应api:tf.nn.sigmoid() ​分类中通常和损失函数 一起使用 ​ 1.2 relu ​ 线性整流函数,通常用于卷积层和全连接的前几层 ​ relu = ma

xiaoxianzhu的博客 729

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

使用Tensorflow实现两层神经网络(使用激活函数)

1 神经网络结构 该神经网络由两层神经网络构成, x(1) - &gt;hidden (10) -&gt; y(1) x(1)-&gt;hidden(10): Y=σ(XW+b)Y=σ(XW+b)Y = \sigma(XW+b) , σσ\sigma为激活函数relu 输出层为没有激活函数的线性层。 2 TensorFlow 基本用法 先构造计算网络。(就是一个表达式树),然...

TaiJi1985的专栏 1623

Tensorflow中神经网络的激活函数

激励函数的目的是为了调节权重和误差。 relu   max(0,x) relu6   min(max(0,x),6) sigmoid   1/(1+exp(-x)) tanh   ((exp(x)-exp(-x))/(exp(x)+exp(-x))   双曲正切函数的值域是(-1,1) softsign   x/(abs(x)...

weixin_33834137的博客 141

Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化

全文链接:https://tecdat.cn/?p=33792在这篇文章中,我将尝试介绍从简单的线性回归到使用神经网络构建非线性概率模型的步骤(点击文末“阅读原文”获取完整代码数据)。相关视频这在模型噪声随着模型变量之一变化或为非线性的情况下特别有用,比如在存在异方差性的情况下。当客户的数据是非线性时,这样会对线性回归解决方案提出一些问题:python # 添加的噪声量是 x 的函数 n = 20...

拓端研究室TRL 293

Tensorflow笔记(二):激活函数、优化器等、神经网络模型实现(商品销量预测)

Tensorflow笔记(二):常用函数2、激活函数、优化器等、神经网络模型实现(商品销量预测)

Trisyp的博客 912

TensorFlow神经网络优化:复杂学习率、激活函数、损失函数、过拟合、梯度爆炸、优化器

神经网络优化:复杂学习率(指数衰减学习率、分段常数衰减学习率),激活函数(非线性、可微性、单调性、近似恒等性),损失函数(均方误差、交叉熵、自定义),过拟合,梯度爆炸(逐步减小学习率、数据预处理),优化器

Explore 2788

【TensorFlow】深度前馈神经网络:matmul()矩阵乘法,激活函数tf.nn.relu(),交叉熵损失函数,Softmax回归

TensorFlow游乐场 1 网络的前馈方式 深度前馈神经网络,简称前馈神经网络,指的是具有前馈特征的一类神经网络模型。最具有代表性的是多层感知机(MLP)模型。 前馈神经网络模型是向前的,在模型的输出和模型本身不存在链接,也就不构成反馈。当然前馈神经网络也可以被扩展成包含反馈链接的循环网络(RNN)。 前馈神经网络实现了统计与泛化的函数近似机。 神经网络模型中相邻两层单元键的连接方式分为: 全连接方式:网络当前层的单元与网络上一层的每个单元都存在连接。 稀疏连接方式:网络当前层的单元只与网络上一层的部

一亿少女的梦 1349

从零基础入门Tensorflow2.0 ----一、3.3 实战深度神经网络(激活函数)

every blog every motto: Whatever is worth doing is worth doing well. 0. 前言 实战神经网络,selu激活函数 1. 代码部分 1. 导入模块 import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline import numpy as n...

胡侃有料的博客 374

话谈tensorflow神经网络的激活函数

神经网络激活函数有很多,我们来看下: 1、我们常用激活函数是S型函数,也就是sigmod(x)。S 型函数并非是唯一可以使用的激活函数,实际上它具有一些不足。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从图中可以看出,S 型函数的导数最大值为 0.25(如上所示)。这意味着,当你用 S 型函数单元进行反向传播时,网络上每层出现的错误至少减少 75%,如果...

不负如来不负卿 513

04-07 Tensorflow2.0深度神经网络+批归一化+激活函数selu+Dropout

文章目录1.深度神经网络DNN2.批归一化BatchNormalization3.新的激活函数selu4.Dropout防止过拟合 1.深度神经网络DNN 指多个全连接层进行连接而形成的网络,层数太多不一定性能会更优,反而会下降,这是因为 层数太多,参数太多 导致了梯度消失 2.批归一化BatchNormalization 缓解梯度消失 3.新的激活函数selu 训练时间更短 训练性能更高 4.Dropout防止过拟合 一般在全连接层的最后几层进行使用 Dropout AlphaDropout

AIChemist 618
上一篇: 当时明月在,曾照彩云归。
下一篇: Android 系统启动流程
王小_
博客等级 码龄11年 28粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值