Pytorch基本使用—激活函数

news2024/12/24 3:17:44

✨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 理论

公式:
在这里插入图片描述
(0, 1)之间取值

函数图像:
在这里插入图片描述
但是sigmoid存在下列问题:

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

🧽 2.1.2 torch.nn.Sigmoid

torch.nn.Sigmoid()

🎃 2.2 ReLU

2.2.1 ⛱️ 原理

公式:
在这里插入图片描述
sigmoid函数在输入值非常大或非常小时,导数接近于0,导致梯度逐渐消失。而ReLU函数在正值部分的导数为1,因此在反向传播过程中可以更好地保持梯度的大小,避免梯度消失问题

函数图像:
在这里插入图片描述
但是仍然存在一些问题

  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 理论

公式:
在这里插入图片描述
输出范围是(-1, 1)
函数图像:
在这里插入图片描述
存在的一些问题:

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

🧽 2.3.2 Torch.nn.Tanh

torch.nn.ReLU()

✨ 3 扩展

为了解决上面三个激活函数的问题,一些改进的激活函数被提出,例如ReLU和Leaky ReLU。

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

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

相关文章

Markdown基本用法

目录 1 字体倾斜 1.1 加* 1.2 加_ 2 字体加粗 2.1 加** 2.2 加__ 3 字体上带删除线 4 文字变标题 5 超链接 5.1 直接输入地址 5.2 将超链接改成文字 5.2.1 同行写法 5.2.2 不同行写法 6 文字前加 6.1 号 6.2 *号 6.3 -号 7 有序列表 8 …

【微信小程序创作之路】- 小程序常用页面样式

【微信小程序创作之路】- 小程序常用页面样式 第四章 微信小程序用页面样式 文章目录 【微信小程序创作之路】- 小程序常用页面样式前言一、总体样式--全局样式and局部样式1.全局样式2.局部样式 二、Flex布局🍉🍉🍉rpx单位 三、样式导入四、…

HEGERLS四向穿梭车的调度算法如何解决同层多车时车辆路径规划和避让的问题?

纵观全球,消费需求正在发生转变,无论是个体消费还是企业消费,呈现出个性化、定制化、网络化的趋势。因此生产企业面临着产品多样化、订单碎片化、服务定制化的新挑战,仓储密集存储、超大拆零作业量需求愈加明显,且竞争…

苹果平板用不用买原装笔?ipad平替电容笔排行榜

我们应该都知道,第一款ipad早诞生于十年前,如今已是家喻户晓的平板电脑产品。ipad版本系列的更新非常迅速,销售也非常火爆。其中,iPad的配件起到了很大的作用,比如我们今天要介绍的这款电容笔,这款ipad的配…

vue3+ts中常用的两个按钮选择事件写法

1. 效果演示 2.vue3单页面代码演示 <template><div class"btns"><divv-for"(item, index) in nams"click"btnCol(index)":class"current index ? active : btn">{{ item }}</div></div><div clas…

【MySQL】从零开始的JDBC编程

1、JDBC的认识 学了这么久的 MySQL&#xff0c;我们一直采用的都是 MySQL 软件自带的客户端&#xff08;黑框框&#xff09;&#xff0c;来进行跟MySQL服务器进行交互。但是在实际开发中我们很少在黑框框中手动输入SQL&#xff0c;大多数都是通过代码自动执行SQL的。既然大多数…

单片机第一季:零基础4——LED点阵

1&#xff0c;第八章-LED点阵 如何驱动LED点阵&#xff1a; (1)单片机端口直接驱动。要驱动8*8的点阵需要2个IO端口&#xff08;16个IO口&#xff09;、要驱动16*16的点阵需要4个IO端口&#xff08;32个IO口&#xff09;。 (2)使用串转并移位锁存器驱动。要驱动16*16点阵只需要…

7.3Java EE——Bean的实例化

一、构造方法实例化 下面通过一个案例演示Spring容器如何通过构造方法实例化Bean。 &#xff08;1&#xff09;、在IDEA中创建一个名为chapter07的Maven项目&#xff0c;然后在项目的pom.xml文件中配置需使用到的Spring四个基础包和Spring的依赖包。 <dependencies>&…

让白嫖来的阿里云服务器来跑jupyter

文章目录 概要第一步 注册账号并创建实例第二步 连接实例并安装相关软件和依赖包安装python3更新pip安装jupyter生成jupyter配置文件配置之后访问云服务器jupyter的密码修改jupyter配置文件在后台启动jupyter 第三步 访问云服务器上的jupyter结语 概要 按照一般情况&#xff0…

【云原生|Docker系列第2篇】Docker的安装和配置

欢迎来到Docker入门系列的第二篇博客&#xff01;在上一篇博客中&#xff0c;我们已经介绍了Docker的基本概念和作用&#xff0c;以及为什么它成为现代应用开发和部署的关键技术。本篇博客将着重讨论Docker的安装和配置&#xff0c;帮助您开始使用Docker并为您的应用程序提供一…

对于加密数据(数据库字段级别加密)存储和并搜索的一些调查

一、简述 如果您认为不良行为者不可避免地会进入您的网络&#xff0c;那么在将敏感数据放入数据库或文档存储之前对其进行加密是保护数据的最佳方法。对于敏感数据应该这么做。这种在存储之前进行加密的方法称为应用层加密&#xff0c;有相当数量的公司使用它来保护其敏感数据。…

MATLAB 迭代最近点ICP配准 (23)

MATLAB 迭代最近点ICP配准 (23) 一、算法介绍二、具体代码1.流程2.代码3.函数详解4.结果展示一、算法介绍 ICP 迭代最近点配准方法,基本是一种固定的点云精配准方法,其变种很多,这里是点到点的传统点云ICP配准方法,具体的过程如上图所示:需要提供红色和蓝色两组点云,其…

echarts 字符串模板和formatter的使用(鼠标悬浮显示的气泡自定义)

需求&#xff1a;在鼠标悬浮中加一个总数字段&#xff0c;图1为默认&#xff0c;图2为需要实现的效果 有两种方式&#xff0c;第一种&#xff1a;在图表添加一条新的图形&#xff0c;默认会自动添加 需要在整个数据列表中计算出来成为新的数组 methods: {// 根据自己的业务情…

SpringBoot源码分析(4)--Environment(下)/配置文件加载原理

SpringBoot源码分析 SpringBoot源码分析(1)–SpringBootApplication注解使用和原理/SpringBoot的自动配置原理详解SpringBoot源码分析(2)–SpringBoot启动源码(万字图文源码debug讲解springboot启动原理)SpringBoot源码分析(3)–Environment简介/prepareEnvironment准备环境&a…

UNet训练自己的数据集

pycharm中python环境设置&#xff1a; 打开左上角File ---> Settings ---> 如下图 ---> Add 选择合适的python版本&#xff0c;进行环境设置 UNet训练自己的数据集&#xff1a; 一、训练自己的数据集 1、本文使用VOC格式进行训练。 2、训练前将标签文件放在VOCde…

谈 Dojo 应用的 UI 自动化测试

目录 前言&#xff1a; Dojo 是什么&#xff1f; Dojo 应用 UI 自动化测试面临的挑战 A. 异步请求的处理 B. 元素定位 图 1. Dojo 按钮小部件 C. Dojo 复杂性 D. 产品复杂性 E. 频繁的 UI 更改 F. Dojo 升级 Dojo 应用 UI 自动化测试框架挑选&#xff08;设计&#…

IIS WebApi: 文件上传,大小限制,提示413 (Request Entity Too Large)

问题&#xff1a;IIS WebApi文件上传&#xff0c;大小限制&#xff0c;提示413 (Request Entity Too Large) 一&#xff1a;在web.config上配置,按照以下格式&#xff0c;将下列标红加粗的地方&#xff0c;按照对应位置复制到web.config中&#xff0c;即可解决。 注&#xff…

本质安全设备标准(IEC60079-11)的理解(五)绝对可靠器件infallible components

在前面的章节中我们简单提及到绝对可靠器件&#xff0c; 这里重新摘抄如下&#xff1a; “这里顺便说一下可靠元器件&#xff08;infallible component&#xff09;的理解。它在标准里面占有不少的章节&#xff0c;而且开始理解他也有一些费劲。本人从两个方面理解它 &#x…

工艺流程图绘制流程?试试这样绘制

工艺流程图绘制流程&#xff1f;绘制工艺流程图可以帮助我们更好地理解工艺流程&#xff0c;确定生产流程&#xff0c;优化生产效率&#xff0c;并帮助人们更好地进行生产管理和质量控制。通过工艺流程图&#xff0c;我们可以清晰地了解每一步骤所需的设备和材料&#xff0c;以…

【Java】基于云计算-智慧校园电子班牌系统源码带原生微信小程序端

一、前言 智慧校园系统是利用物联网和云计算&#xff0c;强调对教学、科研、校园生活和管理的数据采集、智能处理、为管理者和各个角色按需提供智能化的数据分析、教学、学习的智能化服务环境。它包含“智慧环境、智慧学习、智慧服务、智慧管理”等层面的内容。 智慧校园描绘的…