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)值。在实践中,通常会尝试不同的激活函数,并根据性能选择最适合的那个。
相关文章:
ReLU激活函数
LeakyReLU激活函数的具体用法请查看此篇博客:LeakyReLU激活函数 ReLU(Rectified Linear Unit)激活函数是深度学习中最常用的激活函数之一,它的数学表达式如下: 在这里,(x) 是输入,(f(x)) 是输…...
【Android】adjustViewBounds 的理解和使用
理解 adjustViewBounds 是一个 ImageView 的属性,用于调整 ImageView 的边界以适应图像的尺寸。当设置为 true 时,ImageView 的边界将根据图像的宽高比例进行调整,以确保图像完全显示在 ImageView 内部。 理解和使用 adjustViewBounds 的步…...
Redis知识补充
大key删除 unLink scan分批删除 渐进式rehash Redis笔记:Redis的字典什么时候进行Rehash?_redis什么时候进行rehash-CSDN博客...
IIS 部署.NetCore,最细步骤
服务器安装环境 将.net core程序部署到IIS总体需要经过以下3个大步骤,其中在IIS上配置网站有些比较繁琐,我都会逐一给出详细步骤。 <1>安装IIS和.NetCORE运行时程序 <2>以文件的形式发布.NETCORE程序到指定目录 <3>IIS上面建立网站…...
4.查询用户的累计消费金额及VIP等级
思路分析: (1)按照user_id及create_date 分组求消费金额total_amount (2)开窗计算同user_id下的累计销售金额sum(total_amount) over(partition by user_id order by create_date ROWS BETWEEN UNBOUNDED PRECEDING AN…...
解决MySQL错误-this is incompatible with sql_mode=only_full_group_by
报错 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘数据库名.表名.字段名’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 原因 MySQL错误-t…...
UDP通信-广播、组播
UDP的三种通信方式 单播:单台主机与单台主机之间的通信。 广播:当前主机与所在网络中的所有主机通信。 组播:当前主机与选定的一组主机的通信。 UDP如何实现广播 使用广播地址:255.255.255.255 具体操作: 发送端…...
10-bean创建流程1一finishBeanFactoryInitialization(ConfigurableListableBeanFactory
文章目录 1. 方法的主要流程2. ConversionService-如何自定义转换器3. AbstractBeanFactory#getMergedLocalBeanDefinition(String beanName)4.FactoryBean实例化5.内置值处理器1. 方法的主要流程 /*** Finish the initialization of this contexts bean factory,* initializi…...
专题三:穷举、暴搜、深搜、回溯、剪枝【递归、搜索、回溯】
1、全排列 class Solution { public:vector<vector<int>> ret;vector<int> path;bool check[7];void dfs(vector<int>& nums){if(nums.size() path.size()) {ret.push_back(path);return;}for(int i 0;i < nums.size();i){if(check[i] fals…...
国科云SSL证书讲堂:SSL证书安装常见问题盘点
SSL证书能够对网站传输数据进行加密处理,有效提升网站的数据安全防护能力,逐渐被越来越多的政企网站所应用。但在安装使用SSL证书时,经常会发生各种意想不到的问题,对网站的数据安全和正常访问造成严重影响。本文国科云对安装使用…...
Python3无法调用Sqlalchemy解决(mysqldb)
原因 在安装Sqlalchemy后运行程序报错 无法导入mysqldb,缺失模块 ImportError: No module named ‘MySQLdb’ 既然缺少 MySQLdb 这个模块,尝试按照正常的想法执行 pip install MySQLdbpip install mysql-python 应该能解决,但是却找不到…...
2023/10/15总结
学习总结 最近开始写项目了,然后写的过程中遇到了跨域问题。 为什么会出现跨域问题 由于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也是最基本的安全功能。如果缺少了同源策略,那么浏览器的正常功能可能都会收到影响。所谓…...
关于图像分割SDK的一些基础认识
随着科技的不断发展,图像分割SDK已经成为了一个备受关注的话题。而在众多图像分割SDK中,美摄图像分割SDK以其独特的功能和优势脱颖而出。本文将从美摄图像分割SDK的企业价值和互联网娱乐方面,介绍其宣传文章的具体写作规范。 在企业价值方面&…...
SpringMVC之国际化上传下载
spring项目中的国际化 1)提供中英两种资源文件 i18n_en_US.properties i18n_zh_CN.properties 2)配置国际化资源文件(在spring配置文件中添加,例如spring-mvc.xml) <bean id"messageSource" class&quo…...
TigerVNC自动设置密码脚本
新建sh脚本,复制以下命令。设置ssh终端密码和vncserver密码后,运行ssh脚本,即可设置修改vncserver密码。 #!/bin/bash vncpwd"vncserver密码" sshpwd"ssh终端密码"expect << EOFset timeout 10spawn ssh root127.…...
什么是美体SDK?美摄美颜美体SDK对接开发指南
在当今的数字世界中,人们对自我表达和形象展示的需求越来越高。美体SDK应运而生,为用户提供了一种全新的美颜美体体验,让每一个人都能享受到个性化的美丽与自信。 一、美体SDK的特点 轻量级:美体SDK体积小巧,不会对用…...
【Java集合中各种数据结构的方法汇总】
文章目录 Java集合中各种数据结构的方法汇总数组 ArrayList 、LinkedList链表 LinkedList栈 Stack队列 ArrayQueue、LinkedList哈希表 HashMap堆 PriorityQueue Java集合中各种数据结构的方法汇总 获取大小:fun.size(); 判断是否为空:fun.isEmpty(); …...
算法通过村第十四关-堆|白银笔记|经典问题
文章目录 前言在数组中寻找第K大的元素堆排序原理合并K个排序链表总结 前言 提示:想要从讨厌的地方飞出来,就得有藏起来的翅膀。 --三岛由纪夫《萨德侯爵夫人》 这里我们主要看一下经典的题目,这三个题目来说都是堆的热点问题。重点再理解处理…...
如何正确维护实验室超声波清洗器?
实验室一直被视为一个严谨而严肃的场所,实验应遵循一定的步骤,使用的设备也经历了详细的选择,如实验室超声波清洗机,其特点远强于一般类型的清洗机。专门负责采购的实验室人员一般对优质服务的实验室超声波清洗机印象深刻…...
DID赛道前列的生物识别技术,开启Web3时代的大门—MXT
互联网发展的十字路口 互联网从上世纪90年代初发展至今,历经30年,她改变了整个人类的生活方式、沟通形式以及社会发展模式,她的影响早已渗透到了世界的各个角落。而如今,我们似乎正站在一个新的十字路口,一个互联网将…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
