ReLU激活函数

LeakyReLU激活函数的具体用法请查看此篇博客:LeakyReLU激活函数

ReLU(Rectified Linear Unit)激活函数是深度学习中最常用的激活函数之一,它的数学表达式如下:

在这里插入图片描述
在这里插入图片描述

在这里,(x) 是输入,(f(x)) 是输出。ReLU激活函数的使用非常简单,它将输入(x)的所有负值变为零,而保持正值不变。这个激活函数具有以下用途和优点:

(1) 非线性映射:ReLU引入了非线性性质,使神经网络可以学习和表示非线性函数关系。这对于捕捉复杂的数据模式和特征非常重要。

(2)计算高效:ReLU计算非常简单,因为它只涉及一个比较和一个取最大值的操作。这使得训练神经网络更加高效。

(3) 缓解梯度消失问题:相比于一些其他激活函数,如Sigmoid和Tanh,ReLU在反向传播时有更大的梯度,可以缓解梯度消失问题,有助于更好地训练深层神经网络。

(4) 稀疏激活性质:在训练期间,一些神经元可能会因为输入值小于零而变得不活跃,这有助于网络的稀疏表示,从而增强了特征的分离性。

虽然ReLU激活函数有很多优点,但也存在一个缺点,即它可能导致神经元的"死亡"问题。这发生在训练期间,当某个神经元的权重更新导致该神经元对所有输入都产生负值输出,从而在以后的训练中一直保持不活跃。为了缓解这个问题,可以使用一些变种,如Leaky ReLU、Parametric ReLU(PReLU)或Exponential Linear Unit(ELU),它们允许小的负值输出,以提高训练的稳定性。选择哪种激活函数取决于具体的任务和网络架构。

本文主要包括以下内容:

  • 1. nn.ReLU的常见用法
  • 2. ReLU激活函数图像实现
  • 3.ReLU激活函数与Leaky ReLU 函数的不同之处

1. nn.ReLU的常见用法

在深度学习框架(如PyTorch、TensorFlow等)中,nn.ReLU 是一个常用的ReLU激活函数的实现。它通常用于神经网络层的构建,以引入非线性映射。以下是一个简单的示例,说明如何在PyTorch中使用nn.ReLU函数构建一个具有ReLU激活的神经网络层:

import torch
import torch.nn as nn# 创建一个具有ReLU激活函数的全连接层
input_size = 10
output_size = 5# 构建神经网络层
layer = nn.Linear(input_size, output_size)
activation = nn.ReLU()# 输入数据
input_data = torch.randn(1, input_size)  # 1个样本,输入特征维度为input_size# 前向传播
output = layer(input_data)
output_with_relu = activation(output)# 输出
print("Linear层输入:")
print(input_data)
print("原始输出:")
print(output)
print("经过ReLU激活后的输出:")
print(output_with_relu)#输出结果
#Linear层输入:
#tensor([[ 0.3462,  0.1461,  0.5487,  0.4915, -0.4398, -0.9100, -0.9388, -0.0821, 0.1354, -0.7431]])
#原始输出:
#tensor([[ 0.3832, -0.0762,  0.3498, -0.0882, -0.0115]], grad_fn=<AddmmBackward0>)
#经过ReLU激活后的输出:
#tensor([[0.3832, 0.0000, 0.3498, 0.0000, 0.0000]], grad_fn=<ReluBackward0>)

在上述示例中,我们首先导入PyTorch库,并使用nn.Linear创建一个全连接层,然后使用nn.ReLU创建一个ReLU激活函数。接着,我们使用随机生成的输入数据进行前向传播,并观察激活前后的输出结果。

nn.ReLU函数实际上是一个可以应用于PyTorch神经网络层的操作,而不是单独的数学函数。它是深度学习框架的一部分,使得构建神经网络层更加方便和高效。我们可以根据需要在神经网络中的不同层之间插入ReLU激活函数,以引入非线性性质。

2. ReLU激活函数图像实现

要输出ReLU函数的图像,我们可以使用Python的Matplotlib库。首先,确保已经安装了Matplotlib。然后,可以使用以下示例代码来绘制ReLU函数的图像:

import numpy as np
import matplotlib.pyplot as plt# 定义ReLU函数
def relu(x):return np.maximum(0, x)# 生成一系列输入值
x = np.linspace(-5, 5, 100)# 计算ReLU函数的输出
y = relu(x)# 绘制ReLU函数图像
plt.plot(x, y, label='ReLU', color='b')
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('ReLU Function')
plt.axhline(0, color='black', linewidth=0.5, linestyle='--')
plt.grid(True, linestyle='--', alpha=0.7)
plt.legend()
plt.show()

运行此段代码,即可得到LeakyReLU函数图像
在这里插入图片描述

这段代码首先定义了一个ReLU函数 relu(x),然后生成一系列输入值 x,计算ReLU函数的输出 y,最后使用Matplotlib绘制了ReLU函数的图像。

运行这段代码将显示一个包含ReLU函数图像的窗口,其中x轴表示输入值,y轴表示ReLU函数的输出。图中的ReLU函数将所有负数部分映射为零,而正数部分保持不变。

ReLU(Rectified Linear Unit)函数和Leaky ReLU函数都是用于神经网络中的激活函数,它们在引入非线性性质时有些不同。以下是它们的主要区别:

3.ReLU激活函数与Leaky ReLU 函数的不同之处

(1) ReLU (Rectified Linear Unit) 函数

  • ReLU函数是非常简单的激活函数,其数学表示为:
    在这里插入图片描述

  • 对于正数输入,ReLU不做任何修改,保持不变。

  • 对于负数输入,ReLU将其映射为零,即输出为零。

  • ReLU函数是分段线性的,具有非常快的计算速度。

  • 主要问题是可能导致神经元的"死亡",即在训练中,某些神经元可能永远保持不活跃。

(2) Leaky ReLU 函数

  • Leaky ReLU是对ReLU的改进,旨在解决ReLU的"死亡"问题。

  • Leaky ReLU函数引入一个小的斜率(通常接近零)以处理负数输入,其数学表示为:
    在这里插入图片描述

  • 其中,α是一个小正数,通常在接近零的范围内,例如0.01。

  • Leaky ReLU允许负数部分不完全变为零,从而在反向传播时具有梯度,有助于减轻梯度消失问题。

选择使用哪种激活函数通常取决于具体的问题和网络架构。ReLU通常在许多情况下表现良好,但可能需要小心处理"死亡"神经元的问题。Leaky ReLU是一个改进,可以减轻这个问题,但需要选择适当的(\alpha)值。在实践中,通常会尝试不同的激活函数,并根据性能选择最适合的那个。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简述WPF中MVVM的设计思想

近年来&#xff0c;随着WPF在生产、制造、工控等领域应用越来越广泛&#xff0c;对WPF的开发需求也在逐渐增多&#xff0c;有很多人不断的从Web、WinForm开发转向了WPF开发。 WPF开发有很多新的概念及设计思想&#xff0c;如数据驱动、数据绑定、依赖属性、命令、控件模板、数…

多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测

多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测 目录 多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果…

虚拟机独立 IP 配置

虚拟机独立 IP 配置 1. 点击虚拟网络编辑器 2. 点击更改设置 3. 查看本地电脑网卡型号并设置虚拟网络编辑器桥接网卡为同型号网卡 4. 设置有限网络信息 5. 点击网络编辑按钮并点击身份 6. 编辑名称并选择MAC地址 7. 配置 IPv4 地址后点击应用即可

网络编程基础知识总结——IP,端口,协议

目录 1. 什么是网络编程&#xff1f; 2. 网络编程的三要素 3. IP 3.1 IP地址的概念 3.2 IP地址的分类 3.3 IPv4解析 3.4 Ipv6解析 4. IPv4 的使用细节 5. 特殊IP地址 4. 端口号 5. 协议 5.1 UDP协议 5.2 TCP协议 1. 什么是网络编程&#xff1f; 总的来说就是一句…

QDir实践

现在有多个文件&#xff0c;路径为&#xff1a; a\xxx\kmd_config\c.json 其中xxx是变量 startcalc,,,,,, 目标&#xff1a; 访问每一个json文件 实例&#xff1a; QString app_path QApplication::applicationDirPath() "/app";QDir dir(app_path);QStringLi…

简易LDO设计(包含原理图、PCB和实验)

一、前置知识 ①该电路是通过三极管&#xff08;BJT&#xff09;来实现的&#xff0c;所以需要知晓三极管的工作原理和特性。 ②三极管有三种状态&#xff1a;放大、饱和、截止。本文是利用三极管的放大状态来模拟LDO芯片的功能。 二、原理图 ①稳压二极管要想稳定到某个电压范…

Python点击exe后报错:Failed to execute script xxxx问题的解决办法

最近工作在弄人脸识别的问题&#xff0c;从gitee来pull了一个但是发现报了一个Failed to execute script XXX的问题 造成这个问题的原因是执行文件exe存放的目录不对&#xff0c;可能在打包前exe文件并不是存在在这个位置。 解决方案将exe文件尝试存在在不同目录下&#xff…

C++入门(1)

目录 1.C关键字2.命名空间(namespace)2.1是什么2.2为什么2.3怎么用 3.C输入&输出4.缺省函数概念分类 5.函数重载6.引用6.1概念6.2特性6.3使用场景6.4引用和指针的不同点 1.C关键字 C总共有63个关键字 这里入门不多说&#xff0c;有需要的自行去了解 2.命名空间(namespac…

9月大型语言模型研究论文总结

大型语言模型(llm)在今年发展迅速&#xff0c;随着新一代模型不断地被开发&#xff0c;研究人员和工程师了解最新进展变得非常重要。本文总结9-10月期间发布了一些重要的LLM论文。 这些论文涵盖了一系列语言模型的主题&#xff0c;从模型优化和缩放到推理、基准测试和增强性能…

Vue3 + Nodejs 实战 ,文件上传项目--实现文件批量上传(显示实时上传进度)

目录 技术栈 1.后端接口实现 2.前端实现 2.1 实现静态结构 2.2 整合上传文件的数据 2.3 实现一键上传文件 2.4 取消上传 博客主页&#xff1a;専心_前端,javascript,mysql-CSDN博客 系列专栏&#xff1a;vue3nodejs 实战--文件上传 前端代码仓库&#xff1a;jiangjunjie…

文件的操作

前言&#xff1a;哈喽小伙伴们好久不见&#xff0c;国庆假期已经结束&#xff0c;接下来我们还是要马不停蹄的投入到学习当中&#xff0c;只有尽快调整状态回归学习&#xff0c;才能弯道超车。 今天我们一起来学习C语言——文件操作。 本篇文章讲到的所有函数均需要头文件#inc…

【重拾C语言】十二、C语言程序开发(穷举与试探——八皇后问题)

目录 前言 十二、C语言程序开发 12.1~3 自顶向下、逐步求精&#xff1b;结构化程序设计原则&#xff1b;程序风格 12.4 八皇后——穷举与试探 12.4.1 穷举法 示例&#xff1a;寻找一个整数的平方根 12.4.2 试探法 示例&#xff1a;计算给定数字的阶乘 12.4.3 穷举与试…

【【萌新的SOC学习之自定义IP核 AXI4接口】】

萌新的SOC学习之自定义IP核 AXI4接口 自定义IP核-AXI4接口 AXI接口时序 对于一个读数据信号 AXI突发读 不要忘记 最后还有拉高RLAST 表示信号的中止 实验任务 &#xff1a; 通过自定义一个AXI4接口的IP核 &#xff0c;通过AXI_HP接口对PS端 DDR3 进行读写测试 。 S_AXI…

Notepad++使用技巧

显示远程连接的文件目录 自动完成&#xff1a;函数自动提示 自动输入&#xff1a;输入一半括号自动补全另一半 自动关联 .pc文件识别为C 列模式 按住Alt不松手&#xff0c;可以直接范围选择&#xff0c;便于编辑选择的区域 关键行筛选 1.进入搜索页面的标记 2.选中标…

电商数据API接口:新服务下电商网站、跨境电商独立站,移动APP的新型拉新武器

互联网的发展改变了我们的生活方式&#xff0c;也改变了企业商家们的营销方式&#xff0c;越来越多的企业商家把产品营销从线下转到线上&#xff0c;选择在线商城、移动APP、微信公众号等互联网工具进行营销活动。而随着营销模式的多元化和电子支付渠道的进一步发展&#xff0c…

vue3前端开发系列 - electron开发桌面程序(2023-10月最新版)

文章目录 1. 说明2. 创建项目3. 创建文件夹electron3.1 编写脚本electron.js3.2 编写脚本proload.js 4. 修改package.json4.1 删除type4.2 修改scripts4.3 完整的配置如下 5. 修改App.vue6. 修改vite.config.ts7. 启动8. 打包安装9. 项目公开地址 1. 说明 本次安装使用的环境版…

Linux寄存器+Linux2.6内核进程调度队列+命令行参数+环境变量

目录 一、寄存器 二、Linux2.6内核进程调度队列 &#xff08;一&#xff09;优先级 &#xff08;二&#xff09;活动队列 &#xff08;三&#xff09;过期队列 &#xff08;四&#xff09;active指针和expired指针 三、命令行参数 &#xff08;一&#xff09;举例一 &…

燃气管网监测系统,让城市生命线更安全

万宾科技燃气管网监测系统&#xff0c;让城市生命线更安全 城市是现代社会的中心&#xff0c;拥有庞大的人口和各种基础设施&#xff0c;以满足人们的生活需求。城市基础设施包括供热&#xff0c;供水&#xff0c;管廊&#xff0c;河湖&#xff0c;建筑&#xff0c;排水&#x…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例docker部署及应用(七)

八、华为云耀云服务器L实例docker、docker-compose安装及部署MySQL、Redis应用&#xff1a; 随着云原生、容器化、微服务、K8S等技术的发展&#xff0c;容器 docker 也逐渐在企业团队实践中大量的使用。它可以提供了一套标准化的解决方案&#xff0c;极大地提升了部署、发布、运…

如何在STM32中实现TCP通信?

如何在STM32中实现TCP通信&#xff1f; TCP通信在计算机网络中扮演着重要角色&#xff0c;实现它需要兼顾硬件和软件因素。 硬件层面&#xff0c;某些STM32处理器内置了Ethernet MAC&#xff0c;这有利于简化网络通信的部署。若处理器缺乏内置MAC&#xff0c;需外接以太网控制…