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

神经网络常见激活函数 5-PReLU函数

文章目录

    • PReLU
      • 函数+导函数
      • 函数和导函数图像
      • 优缺点
      • pytorch中的PReLU函数
      • tensorflow 中的PReLU函数

PReLU

  • 参数化修正线性单元:Parametric ReLU

函数+导函数

  • PReLU函数
    P R e L U = { x x > = 0 α x x < 0 ( α 是可训练参数 ) \rm PReLU = \left\{ \begin{array}{} x \quad & x>= 0 \\ \alpha x \quad & x<0 \end{array} \right. \quad (\alpha 是可训练参数) PReLU={xαxx>=0x<0(α是可训练参数)
    其中,α 是一个可学习的参数,它在训练过程中被优化。

  • PReLU函数导数
    d d x P R e L U = { 1 x ≥ 1 α x < 0 ( α 是可训练参数 ) \frac{d}{dx} \rm PReLU = \left\{ \begin{array}{} 1 \quad x \ge1 \\ \alpha \quad x < 0 \end{array} \right. \quad (\alpha 是可训练参数) dxdPReLU={1x1αx<0(α是可训练参数)
    它和 ReLU 函数的不同之处在于,当 x 小于零时,PReLU 函数的导数值是可学习的参数 α,而不是固定的常数。这使得 PReLU 函数在负值区域的斜率可以自适应地调整。


函数和导函数图像

  • 画图

    下面是的优化完成 α = 0.5 \alpha = 0.5 α=0.5 后的情况,请注意, LeakyReLU 中 ,p 是固定值,一般设置为较小值,而 PReLU 中, α \alpha α 是可训练对象,在训练阶段是不断学习变化的。

    import numpy as np
    from matplotlib import pyplot as plt# 定义 PReLU 函数
    def prelu(x, alpha=0.25):return np.where(x < 0, alpha * x, x)# 定义 PReLU 的导数
    def prelu_derivative(x, alpha=0.25):d = np.where(x < 0, alpha, 1)return d# 生成数据
    x = np.linspace(-2, 2, 1000)
    alpha = 0.5  # 可以调整 alpha 的值
    y = prelu(x, alpha)
    y1 = prelu_derivative(x, alpha)# 绘制图形
    plt.figure(figsize=(12, 8))
    ax = plt.gca()
    plt.plot(x, y, label='PReLU')
    plt.plot(x, y1, label='Derivative')
    plt.title(f'PReLU (alpha={alpha}) and Partial Derivative')# 设置上边和右边无边框
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')# 设置 x 坐标刻度数字或名称的位置
    ax.xaxis.set_ticks_position('bottom')# 设置边框位置
    ax.spines['bottom'].set_position(('data', 0))
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data', 0))plt.legend(loc=2)
    plt.show()
    

    image-20250205103051743


优缺点

  • PReLU函数相对于ReLU函数的改进
    1. 在负值域,PReLU的斜率较小,这也可以避免Dead ReLU问题。与ELU相比,PReLU在负值域是线性运算。尽管斜率很小,但不会趋于 0 。
    2. 公式与Leaky ReLu相似,但并不完全一样。 α \alpha α 可以是常数,或自适应调整的参数。也就是说,如果让 α \alpha α 自适应,那么PReLu会在反向传播时更新参数 。
    3. 参数 通常为 0 到 1 之间的数字,并且通常相对较小。
      (1)如果 α \alpha α = 0,则 变为ReLU。
      (2)如果 α \alpha α > 0,则 变为leaky ReLU。
      (3)如果 α \alpha α 是可学习的参数,则 变为PReLU。
  • PReLU 的优点

    1. 参数可训练:PReLU具有可训练的参数alpha,它可以随着训练的进行而自动调整,从而使得模型能够更好地适应不同的数据集。
    2. 解决梯度消失问题:由于PReLU在输入小于0时梯度不为0,因此可以避免训练过程中的梯度消失问题。
    3. 增强模型表达能力:与ReLU函数相比,PReLU函数能够更好地处理负数输入,提升了模型的表达能力和学习能力。
    4. 提高模型的鲁棒性:PReLU函数的参数alpha能够根据数据自动调整,增强了模型对于噪声和异常值的鲁棒性。
    5. 良好的拟合能力:PReLU函数在负数输入时具有非线性特点,能够更好地拟合非线性的数据模式和任务。
    6. 平滑性:PReLU函数在整个定义域上都是光滑的,包括0点处。这种平滑性使得梯度计算更加稳定,有助于优化算法的训练过程。
  • PReLU 的缺点

    1. 计算复杂度增加:由于PReLU需要额外的参数alpha,因此其计算复杂度比ReLU略高。
    2. 参数选择敏感:alpha的值对模型的性能有很大影响,如果选择不当,可能会对模型的训练产生负面影响。
    3. 增加模型复杂度:PReLU引入了可学习的参数alpha,这会增加模型的复杂度和训练时间。
    4. 对异常值和噪声敏感:PReLU对异常值和噪声相对较为敏感,容易导致模型过拟合。

pytorch中的PReLU函数

  • 代码

    import torchf = torch.nn.PReLU(init=0.5) # 注意,alpha的初始值通过init设置,默认是0.25
    x = torch.randn(2)prelu_x = f(x)print(f"x: \n{x}")
    print(f"prelu_x:\n{prelu_x}")"""输出"""
    x: 
    tensor([-0.8802,  0.2288])
    prelu_x:
    tensor([-0.4401,  0.2288], grad_fn=<PreluKernelBackward0>)

    注意,alpha的初始值通过init设置,默认是0.25,当前设置为0.5


tensorflow 中的PReLU函数

  • 代码

    python: 3.10.9

    tensorflow: 2.18.0

    import tensorflow as tf# 创建 PReLU 激活函数层
    prelu = tf.keras.layers.PReLU(alpha_initializer=tf.initializers.constant(0.5))# 生成随机输入
    x = tf.random.normal([2])# 应用 PReLU 激活函数
    prelu_x = prelu(x)print(f"x: \n{x}")
    print(f"prelu_x:\n{prelu_x}")"""输出"""
    x: 
    [-2.5138278  -0.34734365]
    prelu_x:
    [-1.2569139  -0.17367183]
    

    注意,alpha的初始值通过alpha_initializer设置,不可直接传入数值,需要使用

    tf.initializers.constant(0.5)
    

    的这种方式,当前设置为0.5。


相关文章:

神经网络常见激活函数 5-PReLU函数

文章目录 PReLU函数导函数函数和导函数图像优缺点pytorch中的PReLU函数tensorflow 中的PReLU函数 PReLU 参数化修正线性单元:Parametric ReLU 函数导函数 PReLU函数 P R e L U { x x > 0 α x x < 0 ( α 是可训练参数 ) \rm PReLU \left\{ \begin{array}{} x \qua…...

2025我的第二次社招,写在春招之季

先说一个好消息&#xff0c;C那些事 4w star了&#xff01; 前面断更了一个月&#xff0c;本篇文章就可以看到原因&#xff0c;哈哈。 大家好&#xff0c;我叫光城&#xff0c;腾讯实习转正做后端开发&#xff0c;后去小公司做数据库内核&#xff0c;经过这几年的成长与积累&am…...

Visual Studio Code中文出现黄色框子的解决办法

Visual Studio Code中文出现黄色框子的解决办法 一、vsCode中文出现黄色框子-如图二、解决办法 一、vsCode中文出现黄色框子-如图 二、解决办法 点击 “文件”点击 “首选项”点击 “设置” 搜索框直接搜索unicode选择“文本编辑器”&#xff0c;往下滑动&#xff0c;找到“Un…...

threejs开源代码之-旋转的彩色立方体

效果&#xff1a;旋转的彩色立方体 效果描述&#xff1a; 一个立方体在场景中旋转。立方体的每个面有不同的颜色。使用自定义着色器为立方体添加动态的光影效果。 代码实现 import * as THREE from three; import { OrbitControls } from three/examples/jsm/controls/OrbitC…...

visual studio 2008的试用版评估期已结束的解决办法

visual studio 2008试用期过了后&#xff0c;再次启动时提示&#xff1a;visual studio的试用版评估期已结束。 需要的工具&#xff1a;补丁文件PatchVS2008.exe 解决办法&#xff1a; 1.在“控制面板”-“添加删除程序”中选择visual studio 2008&#xff0c;点击“更改/卸载”…...

解锁 DeepSeek 模型高效部署密码:蓝耘平台深度剖析与实战应用

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Http和Socks的区别?

HTTP 和 SOCKS 的区别 HTTP 和 SOCKS 都是用于网络通信的协议&#xff0c;但它们在工作原理、应用场景和实现方式上有显著的区别。以下是详细的对比和说明。 一、HTTP 协议 1. 定义 HTTP&#xff08;HyperText Transfer Protocol&#xff09;是用于传输超文本数据的应用层协…...

VC播放mp3的方法

1、使用msi库 #include <mmsystem.h> #pragma comment(lib,"winmm.lib") .......//打开文件MCI_OPEN_PARMS mciOpen; mciOpen.lpstrDeviceType _T("mpegvideo"); mciOpen.lpstrElementName _T("c://1.mp3"); MCIERROR mciError mci…...

Docker 部署 verdaccio 搭建 npm 私服

一、镜像获取 # 获取 verdaccio 镜像 docker pull verdaccio/verdaccio 二、修改配置文件 cd /wwwroot/opt/docker/verdaccio/conf vim config.yaml config.yaml 配置文件如下&#xff0c;可以根据自己的需要进行修改 # # This is the default configuration file. It all…...

49-拓展(1)

49-拓展&#xff08;1&#xff09; 扩展概述 扩展可以为在当前 package 可见的类型&#xff08;除函数、元组、接口&#xff09;添加新功能。 当不能破坏被扩展类型的封装性&#xff0c;但希望添加额外的功能时&#xff0c;可以使用扩展。 可以添加的功能包括&#xff1a; …...

国产编辑器EverEdit - 在文件中查找和替换

1 在文件中查找和替换 1.1 应用场景 某些场景&#xff0c;用户需要在所有工程文件中进行查找和替换关键词&#xff0c;比如&#xff1a;查找工程中哪些文件使用了某个常量。 1.2 使用方法 选择主菜单查找 -> 在文件中查找和替换&#xff0c;或使用快捷键Ctrl Shift F&a…...

安全行业大模型SecLLM技术白皮书

在ChatGPT 呈现全球现象级热度时&#xff0c;通用大语言模型&#xff08;Large Language Model, LLM&#xff09;技术成为了推动创新和变革的关键驱动力。但由于安全行业的特殊性和复杂性&#xff0c;LLM 并不能满足其应用需求。安全行业大模型(Security Large Language Model,…...

基础入门-HTTP数据包红蓝队研判自定义构造请求方法请求头修改状态码判断

知识点&#xff1a; 1、请求头&返回包-方法&头修改&状态码等 2、数据包分析-红队攻击工具&蓝队流量研判 3、数据包构造-Reqable自定义添加修改请求 一、演示案例-请求头&返回包-方法&头修改&状态码等 数据包 客户端请求Request 请求方法 …...

2025年日祭

本文将同步发表于洛谷&#xff08;暂无法访问&#xff09;、CSDN 与 Github 个人博客&#xff08;暂未发布&#xff09; 本蒟自2025.2.8开始半停课。 任务计划&#xff08;站外题与专题&#xff09; 数了一下&#xff0c;通过人数比较高的题&#xff0c;也就是我准备补的题&a…...

git命令行删除远程分支、删除远程提交日志

目录 1、从本地通过命令行删除远程git分支2、删除已 commit 并 push 的记录 1、从本地通过命令行删除远程git分支 git push origin --delete feature/feature_xxx 删除远程分支 feature/feature_xxx 2、删除已 commit 并 push 的记录 git reset --hard 7b5d01xxxxxxxxxx 恢复到…...

centOS8安装MySQL8设置开机自动启动失败

提供一个终极解决方案虽然systemctl 更符合管理预期但是不能用 使用一下命令 修改配置文件、修改mysql.service全是问题 systemctl start mysqld systemctl enable mysqld systemctl daemon-reload完全不生效各种报错 提示配置文件内容有问题 Main process exited, codeexite…...

对接DeepSeek

其实&#xff0c;整个对接过程很简单&#xff0c;就四步&#xff0c;获取key&#xff0c;找到接口文档&#xff0c;接口测试&#xff0c;代码对接。 获取 KEY https://platform.deepseek.com/transactions 直接付款就是了&#xff08;现在官网暂停充值2025年2月7日&#xff0…...

SpringSecurity高级用法

SpringSecurity的高级用法&#xff0c;包括自定义loginUrl携带参数&#xff0c;自定义认证校验逻辑&#xff0c;自定义权限校验逻辑。 示例项目 https://github.com/qihaiyan/springcamp/tree/master/spring-advanced-security 一、概述 在项目实际开发过程中&#xff0c;Spr…...

NLP_[2]-认识文本预处理

文章目录 1 认识文本预处理1 文本预处理及其作用2. 文本预处理中包含的主要环节2.1 文本处理的基本方法2.2 文本张量表示方法2.3 文本语料的数据分析2.4 文本特征处理2.5数据增强方法2.6 重要说明 2 文本处理的基本方法1. 什么是分词2 什么是命名实体识别3 什么是词性标注 1 认…...

字符设备驱动开发

驱动就是获取外设、传感器数据和控制外设。数据会提交给应用程序。 Linux 驱动编译既要编写一个驱动&#xff0c;还要编写一个简单的测试应用程序。 而单片机下驱动和应用都是放在一个文件里&#xff0c;也就是杂在一块。而 Linux 则是分开了。 一、字符设备驱动开发流程 Lin…...

智能检索新范式,让AIAgent自主决策,提升RAG效率100%!

市面上的 RAG 系统&#xff0c;不管叫什么名字&#xff0c;本质上只有两种做法&#xff1a; 第一种&#xff0c;一次性检索。把用户的 query 向量化&#xff0c;从语料库里捞出 Top-K 个文档片段&#xff0c;拼成一个大 prompt 塞给模型。GraphRAG、HippoRAG、LightRAG 都属于…...

别再手动点菜单了!用这招让Cadence Virtuoso Schematic效率翻倍(附Net高亮快捷键配置)

电路设计效率革命&#xff1a;Cadence Virtuoso Schematic高阶快捷键配置指南 在集成电路设计的浩瀚宇宙中&#xff0c;Cadence Virtuoso如同设计师手中的光刻机&#xff0c;每一次精准操作都直接影响最终芯片的性能与可靠性。然而&#xff0c;当面对数百个晶体管组成的复杂模…...

如何快速掌握MPC视频渲染器:面向初学者的完整教程

如何快速掌握MPC视频渲染器&#xff1a;面向初学者的完整教程 【免费下载链接】VideoRenderer Внешний видео-рендерер 项目地址: https://gitcode.com/gh_mirrors/vi/VideoRenderer 想要在Windows系统上获得影院级的视频播放体验吗&#xff1f;MPC…...

昇腾NPU模型服务化——从离线模型到高可用推理服务

模型训练完只是第一步。真正产生业务价值的是把模型部署成724小时在线服务——毫秒级延迟、支持动态Batching、能扛住流量洪峰&#xff0c;且具备高可用性。 这篇将手把手教你基于昇腾NPU构建生产级模型推理服务&#xff0c;涵盖框架选型、服务化架构、动态Batching优化、热加载…...

四大桌面云品牌评测:从安全、体验到性价比

桌面云不再是大型企业的专属&#xff0c;它已成为各行各业实现数据安全、混合办公和IT降本增效的“标准配置”。经过对市场主流方案的全面评估&#xff0c;我们认为&#xff0c;深信服&#xff08;Sangfor&#xff09;aDesk桌面云因其在安全内生化、传输协议自研化、运维管理智…...

清华大学学位论文LaTeX模板:30分钟快速排版终极指南

清华大学学位论文LaTeX模板&#xff1a;30分钟快速排版终极指南 【免费下载链接】thuthesis LaTeX Thesis Template for Tsinghua University 项目地址: https://gitcode.com/gh_mirrors/th/thuthesis 还在为论文格式烦恼吗&#xff1f;清华大学官方LaTeX模板thuthesis让…...

8大网盘文件直链一键获取:LinkSwift让你的下载速度突破限速瓶颈

8大网盘文件直链一键获取&#xff1a;LinkSwift让你的下载速度突破限速瓶颈 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云…...

MFCC与可解释机器学习:构建可解释的L2发音AI诊断系统

1. 项目概述&#xff1a;当语音技术遇见二语教学 作为一名在语音技术和教育技术交叉领域摸爬滚打了十多年的从业者&#xff0c;我常常思考一个问题&#xff1a;我们能用算法“听”出一个人说外语时&#xff0c;他的母语口音吗&#xff1f;更进一步&#xff0c;我们能否不仅“听…...

3大核心价值:Python通达信数据接口MOOTDX的完整应用指南

3大核心价值&#xff1a;Python通达信数据接口MOOTDX的完整应用指南 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx MOOTDX作为一款优秀的Python通达信数据接口封装库&#xff0c;为开发者提供了免…...

tree 命令

tree 命令 tree 命令用于以树状图的形式列出目录下的文件。 1 Linux 安装 tree 命令 # CentOS sudo yum -y install tree # Ubuntu sudo apt -y install tree2 Windows 安装 tree 命令 Windows 10 以上 CMD 和 PowerShell 已经内置了 tree 命令&#xff0c;可以直接使用。 …...