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

【NLP 37、激活函数 ③ relu激活函数】

—— 25.2.23

ReLU广泛应用于卷积神经网络(CNN)和全连接网络,尤其在图像分类(如ImageNet)、语音识别等领域表现优异。其高效性和非线性特性使其成为深度学习默认激活函数的首选

一、定义与数学表达式

ReLU(Rectified Linear Unit,修正线性单元)是一种分段线性激活函数,

其数学表达式为:ReLU(x)=max(0,x)

即当输入 x 大于 0 时,输出为 x;当 x≤0 时,输出为 0。


二、核心特点

非线性特性:通过引入分段线性特性,ReLU为神经网络引入非线性,使其能拟合复杂函数。

计算高效:仅通过阈值判断(x>0)即可完成计算,避免了指数运算(如Sigmoid、Tanh),显著提升速度。

缓解梯度消失:在 x>0 时梯度恒为 1,反向传播时梯度不会饱和,加速收敛。

稀疏激活性:负输入时输出为 0,导致部分神经元“休眠”,减少参数依赖和过拟合风险。


三、优点

简单高效:实现和计算成本低,适合深度网络。

收敛速度快:相比Sigmoid/Tanh,ReLU在训练中梯度更稳定,收敛更快。

非零中心性:输出范围为 [0,+∞),虽非严格零中心,但简化了优化过程


四、局限性

Dead ReLU问题:若神经元输入长期为负,梯度恒为 0,导致权重无法更新,神经元“死亡”。

非零中心性:输出偏向非负值,可能影响梯度下降效率。

对初始化敏感:若学习率过高,负输入区域可能使神经元永久失效。


五、变体

Leaky ReLU:允许负输入时输出 αx(α为小常数,如0.01)。

PReLU(Parametric ReLU):将 α 设为可学习参数,动态调整负区斜率。

ELU(Exponential Linear Unit):负输入时输出 α(ex−1),使输出均值接近零。

Swish:自门控激活函数,结合ReLU和Sigmoid特性,平滑且无上界。


六、代码示例

1.通过 nn.ReLU() 作为网络层

nn.ReLU() :PyTorch 中的修正线性单元(ReLU)激活函数模块,用于神经网络中引入非线性。其功能是将输入张量中所有负值置为 0,保留正值不变

参数名称类型是否必填说明
inplacebool是否原地操作(直接修改输入张量)。
默认值为 False,此时会返回新张量。若设为 True,则直接在原张量上操作。
import torch
import torch.nn as nn
import torch.optim as optim# 定义一个简单的网络,包含两个线性层和 ReLU 激活
class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.fc1 = nn.Linear(784, 256)  # 输入层:784 → 256self.relu = nn.ReLU()           # ReLU 激活层self.fc2 = nn.Linear(256, 10)   # 输出层:256 → 10(如分类任务)def forward(self, x):x = self.relu(self.fc1(x))  # 在第一层后应用 ReLUx = self.fc2(x)return x# 初始化网络、损失函数和优化器
model = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 输入数据示例(如 MNIST 图像,形状为 [batch_size, 784])
input_data = torch.randn(32, 784)# 前向传播
output = model(input_data)
print(output.shape)  # 输出形状: (32, 10)

2. 直接使用 torch.relu() 函数

torch.relu(): PyTorch 中实现修正线性单元(ReLU)激活函数的函数

其数学表达式为:ReLU(x)=max(0,x)

参数名称类型是否必填说明
inplacebool是否原地修改输入张量。若为 True,则直接修改输入张量以节省内存;若为 False(默认),则返回新张量。
import torch# 示例输入
x = torch.tensor([-1.0, 0.0, 1.0])# 应用 ReLU 函数(非原地)
y = torch.relu(x)
print(y)  # 输出: tensor([0., 0., 1.])# 应用 ReLU 函数(原地)
torch.relu_(x)
print(x)  # 输出: tensor([0., 0., 1.]),原始张量被修改[1,7](@ref)。

相关文章:

【NLP 37、激活函数 ③ relu激活函数】

—— 25.2.23 ReLU广泛应用于卷积神经网络(CNN)和全连接网络,尤其在图像分类(如ImageNet)、语音识别等领域表现优异。其高效性和非线性特性使其成为深度学习默认激活函数的首选 一、定义与数学表达式 ReLU&#xff0…...

量子计算的威胁,以及企业可以采取的措施

当谷歌、IBM、Honeywell和微软等科技巨头纷纷投身量子计算领域时,一场技术军备竞赛已然拉开帷幕。 量子计算虽能为全球数字经济带来巨大价值,但也有可能对相互关联的系统、设备和数据造成损害。这一潜在影响在全球网络安全领域引起了强烈关注。也正因如…...

C#初级教程(5)——解锁 C# 变量的更多奥秘:从基础到进阶的深度指南

一、变量类型转换:隐式与显式的门道 (一)隐式转换:编译器的 “贴心小助手” 隐式转换是编译器自动进行的类型转换,无需开发者手动干预。这种转换通常发生在将取值范围小的数据类型赋值给取值范围大的数据类型时&#…...

Pytorch实现之GIEGAN(生成器信息增强GAN)训练自己的数据集

简介 简介:在训练数据样本之前首先利用VAE来推断潜在空间中不同类的分布,用于后续的训练,并使用它来初始化GAN。与ACGAN和BAGAN不同的是,提出的GIEGAN有一个分类器结构,这个分类器主要判断生成的图像或者样本图像属于哪个类,而鉴别器仅判断图像是来自于生成器还是真实样…...

使用PHP接入纯真IP库:实现IP地址地理位置查询

引言 在日常开发中,我们经常需要根据用户的IP地址获取其地理位置信息,例如国家、省份、城市等。纯真IP库(QQWry)是一个常用的IP地址数据库,提供了丰富的IP地址与地理位置的映射关系。本文将介绍如何使用PHP接入纯真IP库,并通过一个完整的案例演示如何实现IP地址的地理位…...

计算机毕业设计SpringBoot+Vue.jst0甘肃非物质文化网站(源码+LW文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

无人机实战系列(三)本地摄像头+远程GPU转换深度图

这篇文章将结合之前写的两篇文章 无人机实战系列(一)在局域网内传输数据 和 无人机实战系列(二)本地摄像头 Depth-Anything V2 实现了以下功能: 本地笔记本摄像头发布图像 远程GPU实时处理(无回传&#…...

七.智慧城市数据治理平台架构

一、整体架构概览 智慧城市数据治理平台架构描绘了一个全面的智慧城市数据治理平台,旨在实现城市数据的统一管理、共享和应用,为城市运行、管理和决策提供数据支撑。整体架构呈现出分层、模块化、集约化的特点,并强调数据安全和标准规范。 智…...

UE5从入门到精通之多人游戏编程常用函数

文章目录 前言一、权限与身份判断函数1. 服务器/客户端判断2. 网络角色判断二、网络同步与复制函数1. 变量同步2. RPC调用三、连接与会话管理函数1. 玩家连接控制2. 网络模式判断四、实用工具函数前言 UE5给我们提供了非常强大的多人网路系统,让我们可以很方便的开发多人游戏…...

RK3399 Android7 Ethernet Tether功能实现

在Android机顶盒产品,对于以太网与WiFi间的关系有如下: 1、以太网与WiFi STA均可连接路由器访问外网; 2、WiFi AP功能可以共享以太网访问外网。 而本文档是对于2的变动,实现通过以太网共享WiFi STA访问外网,并在此基础上可以共享4G/5G网络(设备支持情况下),下面是相应…...

【论文学习】基于规模化Transformer模型的低比特率高质量语音编码

以下文章基于所提供的文档内容撰写,旨在对该论文“Scaling Transformers for Low-Bitrate High-Quality Speech Coding”进行较为系统和深入的分析与总结。 论文地址:https://arxiv.org/pdf/2411.19842 一、研究背景与动机 自20世纪70年代以来&#xff…...

Pretraining Language Models with Text-Attributed Heterogeneous Graphs

Pretraining Language Models with Text-Attributed Heterogeneous Graphs EMNLP 推荐指数:#paper/⭐⭐#​ 贡献: 我们研究了在更复杂的数据结构上预训练LM的问题,即,TAHG。与大多数只能从每个节点的文本描述中学习的PLM不同&…...

什么是将应用放在边缘服务器上创建?应用不是在用户手机上吗?边缘计算究竟如何优化?通过两个问题来辨析

元宇宙应用虽然可以在用户的手机等终端设备上运行,但大部分的计算和数据处理任务并不是完全在手机上完成的。元宇宙的运行需要庞大的计算资源和大量的数据交互,而这些是手机等终端设备难以独自承担的。因此,元宇宙应用需要借助边缘数据中心等…...

uni-app 系统学习,从入门到实战(二)—— 项目结构解析

全篇大概 2000 字(含代码),建议阅读时间 10min 一、UniApp 目录结构详解 UniApp 基于 Vue.js 开发,其目录结构遵循约定大于配置的原则,以下是一个标准项目的核心目录结构: pages # 页面目录(核…...

滴水逆向_引用_友元函数_运算符重载

作业: 运算符号重载实现。 struct Person { public:int x;int y; public:Person(){this->x 10;this->y 20;}Person(int x, int y){this->x x;this->y y;}//申明友元函数void Printf(const Person& p){printf("%d %d",p.x,p.y);}/…...

java医院多维度综合绩效考核源码,医院绩效管理系统,支持一键核算和批量操作,设有审核机制,允许数据修正

医院绩效考核管理系统,java医院绩效核算系统源码,采用多维度综合绩效考核的形式,针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求,对考核方案中各维度进行灵活配置,对各维…...

科普:HTTP端口80和HTTPS端口443

你会发现,有的网址不带端口号,怎么回事? HTTP协议默认端口:HTTP协议的默认端口是80。当用户在浏览器中输入一个没有指定端口的以http://开头的网址时,浏览器会自动使用80端口与服务器建立连接,进行超文本数…...

uniapp打包生产证书上架IOS全流程

第一步:生成生产证书 上传CSR文件,windows系统电脑无法上传csr文件可以参考这个: windows下创建ios打包证书的详细流程_香蕉云编 下载生产证书 下载下来的cer生产证书在香蕉云编cer文件上传栏上传,然后生成p12文件 生成p12文件…...

山东大学软件学院nosql实验一环境配置

环境:前端vue后端springboot 软件环境: MongoDB MongoDBCompass 实验步骤与内容: 在官网下载安装包(最新版) 配置环境环境变量 在“高级系统设置-环境变量”中,可以将MongoDB添加到环境变量Path中(D:\…...

【2024 CSDN博客之星】大学四年,我如何在CSDN实现学业与事业的“双逆袭”?

前言: Hello大家好,我是Dream。不知不觉2024年已经过去,自己也马上迈入23岁,感慨时间飞快,从19岁刚入大学加入CSDN,到现在大学毕业已经整整四年了。CSDN陪伴我走过了最青涩的四年大学时光,在这里…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...