当前位置: 首页 > news >正文

网站建设邀标书德州聊城网站建设

网站建设邀标书,德州聊城网站建设,个人网站对应网站网址,网站广告图做多大目录 神经网络 激活函数 sigmoid 激活函数 tanh 激活函数 backward方法 relu 激活函数 softmax 激活函数 神经网络 人工神经网络#xff08; Artificial Neural Network#xff0c; 简写为ANN#xff09;也简称为神经网络#xff08;NN#xff09;#xff0c… 目录 神经网络  激活函数  sigmoid 激活函数 tanh 激活函数 backward方法  relu 激活函数  softmax 激活函数 神经网络  人工神经网络 Artificial Neural Network 简写为ANN也简称为神经网络NN是一种模仿生物神经网络结构和功能的 计算模型。人脑可以看做是一个生物神经网络由众多的神经元连接而成。各个神经元传递复杂的电信号树突接收到输入信号然后对信号进行处理通过轴突输出信号。 人工神经网络 每一个神经元都是g(w1x1 w2x2 w3x3...) 即先对输入求和再对其激活 这个流程就像来源不同树突(树突都会有不同的权重)的信息, 进行的加权计算, 输入到细胞中做加和再通过激活函数输出细胞值。我们使用多个神经元来构建神经网络相邻层之间的神经元相互连接并给每一个连接分配一个强度 w机器学习的目的就是求这些 w 值。 输入层: 即输入 x 的那一层输出层: 即输出 y 的那一层隐藏层: 输入层和输出层之间都是隐藏层 激活函数  激活函数用于对每层的输出数据进行变换, 进而为整个网络结构结构注入了非线性因素。此时, 神经网络就可以拟合各种曲线。如果不使用激活函数整个网络虽然看起来复杂其本质还相当于一种线性模型。 假设有一个单层的神经网络其输入为x权重为w偏置为b那么该层的输出y可以表示为⋅yw⋅xb 对于多层的神经网络如果每一层都不使用激活函数那么无论网络有多少层最终的输出都可以表示为输入x的一个线性组合 ywn​⋅(wn−1​⋅(…(w2​⋅(w1​⋅xb1​)b2​)…)bn−1​)bn​ 通过给网络输出增加激活函数, 实现引入非线性因素, 使得网络模型可以逼近任意函数。 激活函数能够向神经网络引入非线性因素使得网络可以拟合各种曲线。没有激活函数时无论神经网络有多少层其输出都是输入的线性组合这样的网络称为感知机它只能解决线性可分问题无法处理非线性问题。  增加激活函数之后, 对于线性不可分的场景神经网络的拟合能力更强 我们可以发现如果只使用线性函数Lnear则模型永远不会区分两种小球不管多少次Epochs 但当我们引入非线性激活函数后仅仅100次就可以完美区分两种小球。 激活函数主要用来向神经网络中加入非线性因素以解决线性模型表达能力不足的问题它对神经网络有着极其重要的作用。我们的网络参数在更新时使用的反向传播算法BP这就要求我们的激活函数必须可微。 sigmoid 激活函数 f(x) 1 / (1 e^(-x))。 Sigmoid函数也称为逻辑斯蒂激活函数是早期神经网络中最常用的激活函数之一。它的特点是能够将任何实数值映射到介于0和1之间的值这使得它在二分类问题中尤其有用可以将输出解释为概率或者激活程度。 这个函数的图形呈现出一个S形曲线它在中心点x0增长缓慢而在两端则增长迅速接近水平。这种特性使得Sigmoid函数在早期的神经网络中非常受欢迎因为它可以帮助网络学习非线性关系。然而它也存在梯度消失的问题这意味着在训练过程中当输入值非常大或非常小的时候梯度几乎为零这会导致权重更新变得非常缓慢从而影响网络的学习效率。  一般来说 sigmoid 网络在 5 层之内就会产生梯度消失现象。而且该激活函数并不是以 0 为中心的所以在实践中这种激活函数使用的很少。sigmoid函数一般只用于二分类的输出层。 绘制Sigmoid函数图像 import torch import matplotlib.pyplot as plt import torch.nn.functional as Fdef test():_, axes plt.subplots(1, 2)x torch.linspace(-20, 20, 1000)y F.tanh(x)axes[0].plot(x, y)axes[0].grid()axes[0].set_title(Sigmoid 函数图像)x torch.linspace(-20, 20, 1000, requires_gradTrue)torch.sigmoid(x).sum().backward()axes[1].plot(x.detach(), x.grad)axes[1].grid()axes[1].set_title(Sigmoid 导数图像)plt.show()if __name__ __main__:test() 在神经网络中一个神经元的输出可以通过Sigmoid函数来表示其被激活的概率接近1的值表示高度激活而接近0的值则表示低激活。这种特性使得Sigmoid函数特别适合用于二分类问题的输出层因为它可以表示两个类别的概率分布。 tanh 激活函数 Tanh 的函数图像、导数图像 Tanh 函数将输入映射到 (-1, 1) 之间图像以 0 为中心在 0 点对称当输入 大概-3 或者 3 时将被映射为 -1 或者 1。与 Sigmoid 相比它是以 0 为中心的使得其收敛速度要比 Sigmoid 快减少迭代次数。然而从图中可以看出Tanh 两侧的导数也为 0同样会造成梯度消失。  由于tanh函数的输出均值是0这与许多样本数据的分布均值相近因此在训练过程中权重和偏差的更新可以更快地接近最优值。tanh函数的导数在0到1之间变化而Sigmoid函数的导数最大值仅为0.25这意味着在反向传播过程中tanh函数能够提供相对较大的梯度从而减缓梯度消失的问题有助于网络更快地收敛。 由于tanh函数的对称性和输出范围它在正向传播时能够更好地处理正负输入值这有助于在反向传播时进行更有效的权重更新减少迭代次数。 import torch import matplotlib.pyplot as plt import torch.nn.functional as Fdef test():_, axes plt.subplots(1, 2)# 函数图像x torch.linspace(-20, 20, 1000)y F.tanh(x)axes[0].plot(x, y)axes[0].grid()axes[0].set_title(Tanh 函数图像)# 导数图像x torch.linspace(-20, 20, 1000, requires_gradTrue)F.tanh(x).sum().backward()axes[1].plot(x.detach(), x.grad)axes[1].grid()axes[1].set_title(Tanh 导数图像)plt.show() F.tanh(x)计算了输入张量x的tanh值然后.sum()将这些tanh值相加得到一个标量值。接下来.backward()方法会计算这个标量值关于输入张量x的梯度即tanh函数的导数。这样我们就可以得到tanh函数在每个输入点上的导数值从而绘制出tanh导数图像。 backward方法  通用性backward()方法不限于计算损失函数的梯度它可以用于任何需要进行梯度计算的张量。例如如果你在进行一些非神经网络的任务比如简单的数学运算你也可以使用backward()来计算梯度。要使用backward()计算梯度必须满足几个条件。首先需要计算梯度的张量必须是叶子节点即它们不是任何其他张量的计算结果。其次这些张量必须设置requires_gradTrue以表明需要跟踪它们的梯度。最后所有依赖于这些叶子节点的张量也必须设置requires_gradTrue以确保梯度可以传播到整个计算图中。 relu 激活函数  ReLU激活函数的公式是 ReLU(x)max(0, x)。 ReLU激活函数Rectified Linear Unit在神经网络中用于引入非线性特性其特点是计算简单且能够加速训练过程。对于正值它直接输出输入值即 ()f(x)x对于负值输出为零即 ()0f(x)0。这种简单的阈值操作避免了复杂的指数或乘法运算从而显著减少了计算量。 由于ReLU在正值区间内具有不变的梯度即梯度为1它有助于维持信号的传播使得基于梯度的优化算法如SGD、Adam等能够更有效地更新网络权重。  函数图像如下:  ReLU 能够在x0时保持梯度不衰减从而缓解梯度消失问题。随着训练的推进部分输入会落入小于0区域导致对应权重无法更新。  与sigmoid相比RELU的优势是 采用sigmoid函数计算量大指数运算反向传播求误差梯度时求导涉及除法计算量相对大而采用Relu激活函数整个过程的计算量节省很多。 sigmoid函数反向传播时很容易就会出现梯度消失的情况从而无法完成深层网络的训练。 Relu会使一部分神经元的输出为0这样就造成了网络的稀疏性并且减少了参数的相互依存关系缓解了过拟合问题的发生。 在神经网络的前向传播过程中每个隐藏层的神经元都会对其输入执行线性变换通过权重和偏差然后应用激活函数。例如一个神经元的输出y可以通过以下方式计算 yReLU(W^Txb)其中W是权重矩阵x是输入向量b是偏置项。  在前向传播后如果输出与实际值存在差距则使用反向传播算法根据误差来更新网络中的权重和偏差。这个过程中ReLU函数的梯度导数也会被计算出来用于调整连接权重。 softmax 激活函数 这里( K ) 是类别的总数( e ) 是自然对数的底数约等于2.71828。  softmax用于多分类过程中它是二分类函数sigmoid在多分类上的推广目的是将多分类的结果以概率的形式展现出来。 SoftMax 函数将每个输入元素 ( z_i ) 映射到 (0,1) 区间内并且所有输出值的总和为1这使它成为一个有效的概率分布。 Softmax 直白来说就是将网络输出的 logits 通过 softmax 函数就映射成为(0,1)的值而这些值的累和为1满足概率的性质那么我们将它理解成概率选取概率最大也就是值对应最大的节点作为我们的预测目标类别。  import torch scores torch.tensor([0.2, 0.02, 0.15, 0.15, 1.3, 0.5, 0.06, 1.1, 0.05, 3.75]) probabilities torch.softmax(scores, dim0) print(probabilities)# 结果tensor([0.0212, 0.0177, 0.0202, 0.0202, 0.0638, 0.0287, 0.0185, 0.0522, 0.0183,0.7392]) 对于隐藏层: 优先选择RELU激活函数 如果ReLu效果不好那么尝试其他激活如Leaky ReLu等。 如果你使用了Relu 需要注意一下Dead Relu问题 避免出现大的梯度从而导致过多的神经元死亡。 不要使用sigmoid激活函数可以尝试使用tanh激活函数 对于输出层: 二分类问题选择sigmoid激活函数 多分类问题选择softmax激活函数 回归问题选择identity激活函数
http://www.zqtcl.cn/news/117160/

相关文章:

  • 建设高端网站公司的目的淮南房产网
  • 网站建设 中山网站建设新得体会
  • 快速搭建网站视频教程看想看的做想做的电影网站好
  • 网站聊天怎么做2345网址导航智能主版
  • 如何优化网站加载速度做推广公司
  • 网站下载不了视频php网站 数据库链接
  • 制作网页网站教程wordpress建立扁平化
  • 网站建设小知识郑州网站建设找伟置
  • 苏中建设官方网站旅游做攻略用什么网站好
  • 信息门户网站制作wordpress改商城
  • 企业类网站有哪些甘肃省和住房建设厅网站
  • 嘉兴市住房和城乡建设局网站wordpress nodejs版本
  • 做网站 百度推广深圳外贸招聘
  • 网站留言板功能网站建设 核对流程
  • WordPress输出当前网址郑州官网seo厂家
  • c 网站开发框架wordpress建站的教程
  • 营销 推广 网站王烨演的电视剧
  • 阳泉营销型网站建设网站360做的标记如何取消
  • win7 iis asp网站配置文件注册建设网站的公司网站
  • 品牌网站建设预算网站制作过程内容
  • 石河子建设网站网站开发参考资料
  • 网站开发招标参数wordpress个性化友情链接页面
  • 建设企业网站有哪些wordpress进入中国市场
  • 大学社团网站建设虚拟主机如何做网站
  • 销售的产品是帮别人做网站电脑搭建网站
  • h5商城网站是什么莆田网站建设技术托管
  • 优惠券怎么做自己的网站英文网站怎么设计
  • 做网站怎么样才能排在首页做微网站的公司哪家好呢
  • 分析网站外链分析工具wordpress同步简书
  • 电子商务网站案例分析互动游戏制作软件