Relu激活

news2024/10/6 1:26:26

ReLU(Rectified Linear Unit)激活函数 是卷积神经网络(CNN)以及许多深度学习模型中最常用的激活函数之一。它的主要作用是引入非线性,使模型能够学习和表达更复杂的特征。以下是对ReLU激活函数的详细解释。

1. ReLU的数学定义

ReLU函数的定义非常简单: f(x)=max(0,x)f(x) = \text{max}(0, x)f(x)=max(0,x)

即:

  • 如果输入 xxx 小于 0,输出为 0;
  • 如果输入 xxx 大于 0,输出为 xxx。

2. ReLU的作用

  • 非线性:ReLU的非线性性质允许神经网络捕捉更复杂的特征和模式。如果没有激活函数(或使用线性激活函数),即使网络有多个层,也只能表示线性关系,无法表示复杂的非线性关系。
  • 效率高:与传统的激活函数(如Sigmoid或Tanh)相比,ReLU的计算非常简单,只是判断输入是否为正,因此计算效率非常高,尤其适合深度网络中的大规模计算。

3. ReLU的形象化解释

可以把ReLU想象成一个开关,当输入为正时,激活神经元(通过输入值);当输入为负时,关闭神经元(输出为0)。这种特性非常类似于人脑中神经元的激活和抑制机制。

4. ReLU的优点

  • 计算简单:ReLU函数的计算非常高效,因为它只涉及到简单的比较操作(大于0输出本身,小于0输出0)。
  • 梯度消失问题较少:相比于Sigmoid或Tanh等激活函数,ReLU在正区域不会导致梯度消失,这使得网络在深层次训练中能够更好地传播梯度,避免训练停滞。
  • 加速收敛:实验表明,使用ReLU激活函数的神经网络在训练时收敛速度更快。

5. ReLU的缺点

  • “死亡ReLU”问题:如果输入值总是负的,ReLU会输出0,这意味着该神经元将不会更新,导致神经元永久关闭。这个现象被称为“死亡ReLU”,可能会导致网络中一部分神经元失效。

    解决方案:

    • 使用 Leaky ReLU:它是ReLU的变体,允许在负值区域有一个小的斜率,而不是直接输出0。例如,Leaky ReLU定义为: f(x)=xif x>0elseαxf(x) = x \quad \text{if } x > 0 \quad \text{else} \quad \alpha xf(x)=xif x>0elseαx 其中, α\alphaα 是一个小的常数,如 0.01,使得负值区域的输出也有轻微的响应,避免神经元完全关闭。
    • 使用 Parametric ReLU(PReLU):它进一步改进了Leaky ReLU,允许网络学习负区域的斜率值 α\alphaα,从而适应不同的任务。

5. ReLU在卷积神经网络中的作用

在CNN中,ReLU通常在每一个卷积层或全连接层后面使用。它的作用是:

  • 引入非线性:卷积和全连接层本质上是线性变换,ReLU引入了非线性,使得网络能够处理复杂的任务。
  • 增强网络的表达能力:ReLU将负值过滤为0,仅保留正值,从而帮助网络聚焦于有效特征。
  • ReLU在深度学习中的应用

    ReLU激活函数已广泛应用于几乎所有主流的深度学习网络架构中,尤其是卷积神经网络(CNN)和生成对抗网络(GAN)。例如:

  • 卷积神经网络(CNN):在图像分类和物体检测等任务中,ReLU激活函数通常用于卷积层后,帮助网络捕捉图像的复杂模式和特征。
  • 生成对抗网络(GAN):在生成模型中,ReLU通常用于判别器中帮助网络更有效地学习。
  • 深度残差网络(ResNet):ReLU也在残差网络中广泛使用,通过残差连接帮助网络避免梯度消失问题。

下面小编提供了一份代码进行对Relu激活函数的可视化

from matplotlib.widgets import Slider
import numpy as np
import matplotlib.pyplot as plt

# 定义ReLU激活函数
def relu(x):
    return np.maximum(0, x)
# 创建可交互的ReLU激活函数可视化
x = np.linspace(-10, 10, 400)
y = relu(x)

# 创建图形和坐标轴
fig, ax = plt.subplots(figsize=(8, 6))
plt.subplots_adjust(left=0.1, bottom=0.25)

# 绘制初始的ReLU激活函数曲线
[line] = ax.plot(x, y, label="ReLU", color="b", linewidth=2)
plt.axhline(0, color='black',linewidth=0.5)
plt.axvline(0, color='black',linewidth=0.5)
plt.title("ReLU Activation Function with Adjustable Range", fontsize=16)
plt.xlabel("Input", fontsize=14)
plt.ylabel("Output", fontsize=14)
plt.grid(True)
plt.legend()

# 创建滑动条的位置: [左边距离, 底部距离, 滑动条宽度, 滑动条高度]
ax_slider_left = plt.axes([0.1, 0.1, 0.65, 0.03], facecolor='lightgoldenrodyellow')
ax_slider_right = plt.axes([0.1, 0.05, 0.65, 0.03], facecolor='lightgoldenrodyellow')

# 创建滑动条
slider_left = Slider(ax_slider_left, 'Left', -10, 0, valinit=-10)
slider_right = Slider(ax_slider_right, 'Right', 0, 10, valinit=10)

# 更新函数,当滑动条改变时重新绘制ReLU函数曲线
def update(val):
    left = slider_left.val
    right = slider_right.val
    new_x = np.linspace(left, right, 400)
    new_y = relu(new_x)
    line.set_data(new_x, new_y)
    ax.set_xlim(left, right)
    fig.canvas.draw_idle()

# 将滑动条与更新函数关联
slider_left.on_changed(update)
slider_right.on_changed(update)

plt.show()

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

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

相关文章

C语言进阶版第16课—自定义类型:结构体

文章目录 1. 结构体类型的声明和初始化2. 结构体自引用3. 结构体内存对齐3.1 结构体内存对齐规则3.2 修改默认对齐数 4. 结构体传参4. 结构体实现位段5. 位段使用的注意事项 1. 结构体类型的声明和初始化 结构体在使用之前都要对其类型进行声明,关键字是struct&…

15分钟学 Python 第36天 :Python 爬虫入门(二)

Python 爬虫入门:环境准备 在进行Python爬虫的学习和实践之前,首先需要准备好合适的开发环境。本节将详细介绍Python环境的安装、必要库的配置、以及常用工具的使用,为后续的爬虫编写奠定坚实的基础。 1. 环境准备概述 1.1 为什么环境准备…

mp4转gif在线转换怎么转?7个视频转动图方法不容错过!(超简单)

mp4转gif在线转换怎么转?如今,将mp4视频转换为gif动图格式,满足了人们对易于分享和网络传播内容的需求。与mp4视频相比,gif动图文件体积相对较小,几乎所有网络平台都支持这种格式,无需额外安装插件或软件。…

CSID-GAN:基于生成对抗网络的定制风格室内平面设计框架论文阅读

CSID-GAN: A Customized Style Interior Floor Plan Design Framework Based on Generative Adversarial Network 摘要前言II. CSID-GAN METHODA. Overall FrameworkB. Algorithm and Loss Function III. DATASETS AND EVALUATION METRICSA. DatasetsB. Evaluation Metrics IV.…

信息安全工程师(34)访问控制模型

前言 访问控制模型是实现访问控制的基础,不同的访问控制模型提供了不同的访问控制策略和机制,以适应不同的安全需求。 一、自主访问控制模型(DAC) 定义:指资源的所有者有权决定谁可以访问其资源以及访问的方式。资源的…

如何实现事件流操作

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了通道相关的内容,本章回中将介绍StreamProvider组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 在Flutter中Stream是经常使用的组件,对该组件的监听可void main() {///让状态栏和程序的appBar融为一体…

macos安装mongodb

文章目录 说明安装和配置安装mongodb配置PATH变量 验证日志及数据存放目录 mac启动和关闭mongodb后台启动失败问题mongodb-compass(GUI) 说明 Homebrew core 列表目前已经将 MongoDB 移除,不再为其提供支持。但是使用国内镜像的brew还是可以安装的!这里直接从官网下…

使用 Python 代码连接 PostgreSQL

Python 是一个功能非常强大的编程语言,尤其在与数据库交互时,提供了丰富的解决方案。在实际项目中,我们经常需要通过 Python 连接并操作数据库。为了简化这种操作,ORM(对象关系映射)框架提供了便利。ORM 能…

aws(学习笔记第一课) AWS CLI,创建ec2 server以及drawio进行aws画图

aws(学习笔记第一课) 使用AWS CLI 学习内容: 使用AWS CLI配置密钥对创建ec2 server使用drawio(vscode插件)进行AWS的画图 1. 使用AWS CLI 注册AWS账号 AWS是通用的云计算平台,可以提供ec2,vpc,SNS以及clo…

灵足时代:具身智能核心部件的新秀崛起——解析数千万元天使轮融资

在智能科技日新月异的今天,具身智能作为连接物理世界与数字世界的重要桥梁,正逐步成为科技创新的前沿阵地。近日,具身智能核心部件领域的新锐公司——“灵足时代”宣布完成数千万元天使轮融资,这一消息无疑为行业内外带来了强烈的震撼与期待。本轮融资由雅瑞智友科学家基金…

多用户网页聊天室(测试报告)

一、项目背景 随着现代互联网的快速发展,实时通信系统(如聊天应用)已成为人们日常交流的重要工具。多用户网页聊天室项目旨在为用户提供一个基于Web的实时聊天平台,支持用户之间的即时通信、好友管理和历史消息记录查看。为了提升…

ModuleNotFoundError: No module named ‘package‘

报错: Traceback (most recent call last): File “”, line 198, in run_module_as_main File “”, line 88, in run_code File "D:\python\helloworld.venv\Scripts\pip.exe_main.py", line 4, in File "D:\python\helloworld.venv\Lib\site-pac…

3分钟学会下载 blender

1. blender简介 Blender是一款开源的3D创作套件,它由Blender Foundation维护,并得到了全球志愿者和专业开发者的支持。Blender广泛应用于3D模型的制作、动画、渲染、视频编辑、游戏创建、模拟、 composting以及3D打印等多个领域。 功能特点&#xff1a…

Gitlab flow工作流

Gitlab flow Gitlab flow 是 Git flow 与 Github flow 的综合。它吸取了两者的优点,既有适应不同开发环境的弹性,又有单一主分支的简单和便利。它是 Gitlab.com 推荐的做法。 1 上游优先 Gitlab flow 的最大原则叫做"上游优先"(…

【网络篇】计算机网络——应用层详述(笔记)

目录 一、应用层协议原理 1. 进入应用层 2. 网络应用程序体系结构 (1)客户-服务器体系结构(client-server architecture) (2) P2P 体系结构(P2P architecture) 3. 进程间通讯 …

2024/10/5 数据结构打卡

对两个长度为n的升序序列A和B的元素按由小到大的顺序依次访问,这里访问的 含义只是比较序列中两个元素的大小,并不实现两个序列的合并,因此空间复杂度为 O(1)。按照 上述规则访问到第n个元素时,这个元素即为两个序列A和B的中位数。…

预扣预缴、年度汇算清缴与年终奖的个税计算

目录 1. 税率表2. 年度汇算清缴3. 预扣预缴3.1 预扣预缴的代码实现3.2 全年应纳税额与全年收入的关系 4. 年终奖 1. 税率表 月度税率表: 级数月度应纳税所得额税率(%)速算扣除数1 ( 0 , 3000 ] (0, 3000] (0,3000] 3 3 3 0 0 02 ( 3000 , 1…

Qt操作主/从视图及XML——实例:汽车管理系统

目录 1. 主界面布局2.连接数据库3.主/从视图应用 1. 主界面布局 先创建一个QMainwindow&#xff0c;不带设计界面 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QGroupBox> #include <QTableView> #include <QListWidg…

Python数据结构与算法问题详解

Python数据结构与算法问题详解 Python 作为一种高级编程语言&#xff0c;凭借其简洁的语法和强大的内置库&#xff0c;成为了数据结构与算法学习的绝佳工具。本文将深入解析几种常见的数据结构&#xff0c;并结合具体的算法&#xff0c;展示如何在实际问题中高效解决问题。通过…

EEPROM读写实验——FPGA学习笔记18

一、EEPROM简介 Electrically Erasable Progammable Read Only Memory:是指带电可擦可编程只读存储器&#xff0c;是一种常用的非易失性存储器&#xff08;掉电数据不丢失&#xff09; EEPROM发展历史 我们这次实验所用的AT24C64存储容量为64Kbit&#xff0c;内部分成256页&am…