Pytorch基本使用—激活函数

这篇具有很好参考价值的文章主要介绍了Pytorch基本使用—激活函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✨1 介绍

⛄ 1.1 概念

激活函数是神经网络中的一种数学函数,它被应用于神经元的输出,以决定神经元是否应该被激活并传递信号给下一层。常见的激活函数包括Sigmoid函数、ReLU函数、Tanh函数等

🎄 1.2 性质

激活函数是神经网络中的一种重要组件,它的作用是引入非线性特性,使得神经网络能够学习和表示更加复杂的函数关系。

激活函数具有以下几个性质:

  1. 非线性:激活函数必须是非线性的,这是为了使得神经网络能够学习非线性函数。如果使用线性激活函数,多层神经网络的输出将仍然是线性的,无法表达复杂的非线性关系。
  2. 可微性:激活函数在神经网络的反向传播算法中起到关键作用,因此它必须是可微的。这样才能计算梯度并更新网络参数,实现网络的训练。
  3. 非饱和性:激活函数应该具有非饱和性,即在输入取值范围内,函数值不会饱和或饱和得很快。这样可以避免梯度消失的问题,使得网络能够更好地进行训练。
  4. 输出范围:激活函数的输出范围应该适当,使得神经网络的输出在合理的范围内。例如,对于二分类问题,常用的激活函数是sigmoid函数,其输出范围在0到1之间,可以表示概率值。

⛱️ 1.3 为什么使用激活函数

在深度学习中,神经网络通常由多个层组成,每一层都包含了许多神经元。每个神经元接收来自上一层神经元的输入,并通过激活函数将其转换为输出。起到的作用有三点:

  1. 激活函数可以引入非线性。如果没有激活函数,多层神经网络将只能表示线性关系,无法学习复杂的非线性模式。通过使用激活函数,神经网络能够学习和表示更加复杂的模式,从而提高其表达能力。
  2. 激活韩素可以帮助神经网络进行分类任务,将输入数据映射到不同的类别。
  3. 激活函数还可以帮助神经网络处理输入数据中的噪声和不确定性,增强其鲁棒性和泛化能力。

总之,激活函数在深度学习中的使用是为了引入非线性特性,提高神经网络的表达能力和学习能力。

✨ 2 常见激活函数

常见的激活函数包括Sigmoid函数、ReLU函数、Tanh函数等

🎈2.1 Sigmoid

☃️ 2.1.1 理论

公式:
Pytorch基本使用—激活函数,Pytorch使用,pytorch,人工智能,python,计算机视觉,目标检测
(0, 1)之间取值

函数图像:
Pytorch基本使用—激活函数,Pytorch使用,pytorch,人工智能,python,计算机视觉,目标检测
但是sigmoid存在下列问题:

  1. 容易出现梯度消失。当输入值非常大或非常小时,sigmoid函数的导数接近于0,这导致在反向传播过程中梯度逐渐消失,使得网络难以训练。
  2. 输出不是以0为中心。sigmoid函数的输出不是以0为中心的,这可能导致神经网络在训练过程中出现偏移问题,使得收敛速度变慢。
  3. 计算量大

🧽 2.1.2 torch.nn.Sigmoid

torch.nn.Sigmoid()

🎃 2.2 ReLU

2.2.1 ⛱️ 原理

公式:
Pytorch基本使用—激活函数,Pytorch使用,pytorch,人工智能,python,计算机视觉,目标检测
sigmoid函数在输入值非常大或非常小时,导数接近于0,导致梯度逐渐消失。而ReLU函数在正值部分的导数为1,因此在反向传播过程中可以更好地保持梯度的大小,避免梯度消失问题

函数图像:
Pytorch基本使用—激活函数,Pytorch使用,pytorch,人工智能,python,计算机视觉,目标检测
但是仍然存在一些问题

  1. 输出范围是[0,正无穷),存在输出不是以0为中心的问题。
  2. Dead ReLU问题。当输入值小于等于0时,ReLU函数的导数为0,导致神经元无法更新权重,从而导致神经元“死亡”。如果大量神经元处于“死亡”状态,那么整个网络的表达能力将受到限制。
  3. 输出不受限制。ReLU函数的输出范围没有上界,这可能导致某些神经元输出值过大,称为“exploding gradients”问题。这可能会对网络的稳定性和收敛性造成影响。
  4. 不可导性。ReLU函数在输入为0时是不可导的,因为它的导数在0处不存在。这可能导致在某些优化算法中的计算问题,例如梯度下降算法。

🧽 2.2.2 torch.nn.ReLU

torch.nn.ReLU( inplace: bool = False)
  1. inplace:如果inplace=True,ReLU函数将会修改输入张量本身,而不是创建一个新的张量来存储结果(计算ReLU的反向传播时,有时只需根据输出就能够推算出反向传播的梯度)。这意味着原始输入张量的值将被覆盖,这种原地操作可以节省内存,特别是当处理大型张量时,但是只有少数的autograd操作支持inplace操作,除非明确地知道自己在做什么,否则不要使用inplace操作。

🌊 2.3 Tanh

🎄 2.3.1 理论

公式:
Pytorch基本使用—激活函数,Pytorch使用,pytorch,人工智能,python,计算机视觉,目标检测
输出范围是(-1, 1)
函数图像:
Pytorch基本使用—激活函数,Pytorch使用,pytorch,人工智能,python,计算机视觉,目标检测
存在的一些问题:

  1. 梯度消失。当输入值非常大或非常小的时候,Tanh函数的导数会接近于零,导致梯度消失的问题。这可能会导致训练过程中的梯度更新变得非常缓慢,甚至无法收敛到最优解。(与Sigmoid相同)
  2. 输出范围限制。Tanh函数的输出范围被限制在-1和1之间,这可能导致某些情况下的信息损失。例如,在某些任务中,输出值需要超过这个范围才能正确表示。

🧽 2.3.2 Torch.nn.Tanh

torch.nn.ReLU()

✨ 3 扩展

为了解决上面三个激活函数的问题,一些改进的激活函数被提出,例如ReLU和Leaky ReLU。 文章来源地址https://www.toymoban.com/news/detail-550210.html

到了这里,关于Pytorch基本使用—激活函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Pytorch激活函数最全汇总

    为了更清晰地学习Pytorch中的激活函数,并对比它们之间的不同,这里对最新版本的Pytorch中的激活函数进行了汇总,主要介绍激活函数的公式、图像以及使用方法,具体细节可查看官方文档。 目录 1、ELU 2、Hardshrink 3、Hardsigmoid 4、Hardtanh 5、Hardswish 6、LeakyReLU 7、LogSigmoid 8、PR

    2024年02月16日
    浏览(39)
  • 人工智能学习07--pytorch15(前接pytorch10)--目标检测:FPN结构详解

    backbone:骨干网络,例如cnn的一系列。(特征提取) (a)特征图像金字塔 检测不同尺寸目标。 首先将图片缩放到不同尺度,针对每个尺度图片都一次通过算法进行预测。 但是这样一来,生成多少个尺度就要预测多少次,训练效率很低。 (b)单一特征图 faster rcnn所采用的一种方式

    2023年04月12日
    浏览(66)
  • 人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程,本文将介绍如何使用PyTorch搭建ELMo模型,包括ELMo模型的原理、数据样例、模型训练、损失值和准确率的打印以及预测。文章将提供完整的代码实现。 ELMo模型简介 数据

    2024年02月07日
    浏览(62)
  • PyTorch学习笔记:nn.Tanh——Tanh激活函数

    功能:逐元素应用Tanh函数(双曲正切)对数据进行激活, 将元素调整到区间(-1,1)内 函数方程: Tanh ( x ) = tanh ( x ) = e x − e − x e x + e − x text{Tanh}(x)=text{tanh}(x)=frac{e^x-e^{-x}}{e^x+e^{-x}} Tanh ( x ) = tanh ( x ) = e x + e − x e x − e − x ​ 注意: 输入可以是任意尺寸的数据,输出尺寸

    2024年01月17日
    浏览(42)
  • PyTorch学习笔记:nn.LeakyReLU——LeakyReLU激活函数

    功能:逐元素对数据应用如下函数公式进行激活 LeakyReLU ( x ) = max ⁡ ( 0 , x ) + α ∗ min ⁡ ( 0 , x ) text{LeakyReLU}(x)=max(0,x)+alpha*min(0,x) LeakyReLU ( x ) = max ( 0 , x ) + α ∗ min ( 0 , x ) 或者 LeakyReLU ( x ) = { x , i f x ≥ 0 α × x , otherwise begin{aligned} text{LeakyReLU}(x)= left{ begin{matrix} x,quad

    2024年02月02日
    浏览(37)
  • 人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

    亮点:网络结构特别深 (突变点是因为学习率除0.1?) 梯度消失 :假设每一层的误差梯度是一个小于1的数,则在反向传播过程中,每向前传播一层,都要乘以一个小于1的误差梯度。当网络越来越深的时候,相乘的这些小于1的系数越多,就越趋近于0,这样梯度就会越来越小

    2023年04月11日
    浏览(133)
  • 人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用,脉冲神经网络(SNN)是一种基于生物神经系统的神经网络模型,它通过模拟神经元之间的电信号传递来实现信息处理。与传统的人工神经网络(ANN)不同,SNN 中的

    2024年02月08日
    浏览(45)
  • PyTorch 人工智能研讨会:6~7

    原文:The Deep Learning with PyTorch Workshop 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则 2.3.c 概述 本章扩展了循环神经网络的概念。 您将

    2023年04月20日
    浏览(63)
  • 人工智能(pytorch)搭建模型17-pytorch搭建ReitnNet模型,加载数据进行模型训练与预测

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型17-pytorch搭建ReitnNet模型,加载数据进行模型训练与预测,RetinaNet 是一种用于目标检测任务的深度学习模型,旨在解决目标检测中存在的困难样本和不平衡类别问题。它是基于单阶段检测器的一种改进方法,通

    2024年02月15日
    浏览(87)
  • 人工智能之配置环境教程二:在Anaconda中创建虚拟环境安装GPU版本的Pytorch及torchvision并在VsCode中使用虚拟环境

    孟莉苹,女,西安工程大学电子信息学院,2021级硕士研究生,张宏伟人工智能课题组。 研究方向:机器视觉与人工智能。 电子邮件:2425613875@qq.com 本教程提供需要安装的CUDA11.3、Pytorch1.10.0、torchvision0.11.0的安装包,在下述百度网盘链接中自取! 链接:https://pan.baidu.com/s/18m

    2024年02月02日
    浏览(67)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包