神经网络常见激活函数 9-CELU函数
文章目录
- CELU
- 函数+导函数
- 函数和导函数图像
- 优缺点
- pytorch中的CELU函数
- tensorflow 中的CELU函数
CELU
- 连续可微指数线性单元:CELU(Continuously Differentiable Exponential Linear Unit),是一种连续可导的激活函数,结合了
ELU和ReLU的特点,旨在解决ELU在某些情况下的梯度问题。
函数+导函数
CELU函数
C E L U ( x ) = { x x ≥ 0 α ( e x α − 1 ) x < 0 \rm CELU(x) = \left\{ \begin{array}{} x \quad x \ge 0 \\ \alpha(e^{\frac{x}{\alpha}} - 1) \quad x < 0 \end{array} \right. CELU(x)={xx≥0α(eαx−1)x<0
-
CELU函数导数
d d x C E L U ( x ) = { 1 x ≥ 0 e x α x < 0 \frac{d}{dx} \rm CELU(x) = \left\{ \begin{array}{} 1 \quad x \ge 0 \\ e^{\frac{x}{\alpha}} \quad x < 0 \end{array} \right. dxdCELU(x)={1x≥0eαxx<0
其中, α \alpha α 是一个非负参数,用于控制 x < 0 x<0 x<0时曲线的平滑度。当 α = 0 \alpha=0 α=0时,CELU函数退化为ReLU函数。对于 x < 0 x<0 x<0的部分,CELU使用指数函数来确保梯度不会消失,有助于加速训练过程中的梯度流动。
函数和导函数图像
-
画图
下面的是 α = 1 \alpha = 1 α=1
import numpy as np from matplotlib import pyplot as plt# 定义 CELU 函数 def celu(x, alpha=1.0):return np.where(x > 0, x, alpha * (np.exp(x / alpha) - 1))# 定义 CELU 的导数 def celu_derivative(x, alpha=1.0):return np.where(x > 0, 1, np.exp(x / alpha))# 生成数据 x = np.linspace(-3, 3, 1000) alpha = 1.0 # 可以调整 alpha 的值 y = celu(x, alpha) y1 = celu_derivative(x, alpha)# 绘制图形 plt.figure(figsize=(12, 8)) ax = plt.gca() plt.plot(x, y, label=f'CELU (α={alpha})') plt.plot(x, y1, label='Derivative') plt.title(f'CELU (α={alpha}) and 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()

优缺点
-
CELU 的优点
- 连续可导:CELU函数在整个定义域上都是连续可导的,这使得它在优化过程中更加稳定。
- 缓解梯度消失问题:CELU在负输入时引入非零梯度,有助于缓解梯度消失问题。
- 平滑过渡:CELU函数在零点处是平滑的,避免了ReLU在零点处的不连续性。
- 灵活性:CELU可以表示ReLU作为其特例,当α趋近于0时,CELU趋近于ReLU。
- 加速收敛:在某些情况下,CELU能够比ReLU更快地收敛。
-
CELU 的缺点
- 计算复杂度高:CELU的指数运算比ReLU更复杂,计算成本更高。
- 参数敏感:CELU的性能对α参数的选择较为敏感,不同的α值可能会显著影响模型的性能。
- 可能的过拟合风险:在某些情况下,CELU可能会导致模型过拟合,尤其是在数据集较小或模型复杂度较高时。
- 训练时间增加:由于计算复杂度的增加,CELU可能会导致训练时间变长。
pytorch中的CELU函数
-
代码
import torch# 定义 CELU 函数 f = torch.nn.CELU() # PyTorch 提供的 CELU 激活函数模块 x = torch.randn(2) # 生成一个随机张量作为输入celu_x = f(x) # 应用 CELU 函数print(f"x: \n{x}") print(f"celu_x:\n{celu_x}")"""输出""" x: tensor([-0.8057, -0.8352]) celu_x: tensor([-0.5532, -0.5662])
tensorflow 中的CELU函数
-
代码
python: 3.10.9
tensorflow: 2.18.0
import tensorflow as tf# 创建 CELU 激活函数 celu = tf.keras.activations.celu# 生成随机输入 # x = tf.random.normal([2]) x = [-0.8057, -0.8352]# 应用 CELU 激活函数 celu_x = celu(x)print(f"x: \n{x}") print(f"celu_x:\n{celu_x}")"""输出""" x: [-0.8057, -0.8352] celu_x: [-0.5532249 -0.5662123]
相关文章:
神经网络常见激活函数 9-CELU函数
文章目录 CELU函数导函数函数和导函数图像优缺点pytorch中的CELU函数tensorflow 中的CELU函数 CELU 连续可微指数线性单元:CELU(Continuously Differentiable Exponential Linear Unit),是一种连续可导的激活函数,结合了 ELU 和 …...
软考高级《系统架构设计师》知识点(四)
嵌入式技术 第二版新增内容 嵌入式系统:以应用为中心、以计算机技术为基础,并将可配置与可裁减的软、硬件、集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。一般嵌入式系统由嵌入式处理器、相关…...
opencv交叉编译
适用于瑞芯微,海思,酷芯等ARM平台。采用编译脚本配置编译选项,方便编译。 目录 一、创建目录 二、工具链配置 三、编译脚本 四、编译 一、创建目录 mikemike-virtual-machine:opencv-4.12/opencv/opencv$ tree . -L 1 . ├── 3rdpart…...
安装vite报错Install for [ ‘create-vite@latest‘ ] failed with code 1
报错内容: npm ERR! code ENOLOCAL npm ERR! Could not install from “Files\nodejs\node_cache_npx\31400” as it does not contain a package.json file. npm ERR! A complete log of this run can be found in: npm ERR! D:\Program Files\nodejs\node_cache_…...
Spring框架中都用到了哪些设计模式?
大家好,我是锋哥。今天分享关于【Spring框架中都用到了哪些设计模式?】面试题。希望对大家有帮助; Spring框架中都用到了哪些设计模式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring框架中使用了大量的设计模…...
LabVIEW 中 dotnet.llb 库功能
在 LabVIEW 功能体系里,位于 C:\Program Files (x86)\National Instruments\LabVIEW 2019\vi.lib\Platform\dotnet.llb 路径下的 dotnet.llb 库意义重大。作为与 .NET 技术交互的关键库,它使 LabVIEW 用户能够与基于 .NET 框架开发的应用程序和组件进行交…...
C# 变量,字段和属性的区别
总目录 前言 在C#中,变量(Variables)、字段(Fields) 和 属性(Properties) 是三个容易混淆但作用截然不同的概念。以下是它们的核心区别与使用场景: 一、变量(Variables&…...
wordpress模板文件结构超详解
wordpress网站建设中,主题的制作是最为核心的环节。了解模板文件结构是模板制作的第一步,本文所讲的模板文件结构包括两部分,一是指以文件名为概念的文件结构,二是指文件内容的代码结构。 一、如何使模板文件起作用 ↑ wordpres…...
android studio下载安装汉化-Flutter安装
1、下载android studio官方地址:(这个网址可能直接打不开,需要VPN) https://developer.android.com/studio?hlzh-cn mac版本分为X86和arm版本,电脑显示芯片是Inter的就是x86的,显示m1和m2的就是arm的 …...
数据开放共享和平台整合优化取得实质性突破的智慧物流开源了
智慧物流视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本可通过边缘计算技术…...
如何设置 Nginx 连接超时并进行测试(Nginx优化)
🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年2月15日14点22分 在高并发场景下,如…...
springboot整合mybatis-plus(保姆教学) 及搭建项目
一、Spring整合MyBatis (1)将MyBatis的DataSource交给Spring IoC容器创建并管理,使用第三方数据库连接池(Druid,C3P0等)代替MyBatis内置的数据库连接池 (2)将MyBatis的SqlSessionFactory交给Spring IoC容器创建并管理,使用spring-mybatis整…...
知识管理成功:关键指标和策略,研究信息的投资回报率
信息过载会影响生产力。没有人工智能的帮助,信息过载会影响生产力。大量的可用信息,知识工作者不仅仅是超负荷工作;他们感到不知所措,他们倾向于浪费时间(和脑细胞)来应付他们被大量的数据抛向他们…...
【算法】链表
零:链表常用技巧 1:引入虚拟头结点 (1)便于处理边界情况 (2)方便我们对链表操作 2:两步尾插,头插 (1)尾插 tail指向最后一个节点,tail.next…...
集成测试总结文档
1. 集成测试的定义 集成测试(Integration Testing)是在单元测试之后,将多个独立的软件模块或组件组合在一起进行测试的过程,目的是验证这些模块之间的接口、数据传递、协作逻辑是否符合设计要求,并发现因集成引发的缺…...
关于Dest1ny:我的创作纪念日
Dest1ny 因为这是csdn任务,我就稍微“写”了一下! 如果大家真的有什么想聊的或者想一起学习的,欢迎在评论区或者私信中与我讨论! 2025想说的话 我就把我想说的写在前面! 不用对未来焦虑,不要觉得自己走…...
Python爬虫-猫眼电影的影院数据
前言 本文是该专栏的第46篇,后面会持续分享python爬虫干货知识,记得关注。 本文笔者以猫眼电影为例子,获取猫眼的影院相关数据。 废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码) …...
【计算机网络】传输层数据段格式
在计算机网络中,数据段(Segment) 是传输层协议(如 TCP 或 UDP)使用的数据单元。TCP 和 UDP 的数据段格式有所不同,以下是它们的详细说明: 1. TCP 数据段格式 TCP(传输控制协议&…...
nsc account 及user管理
从安全角度,推荐使用sign 模式进行nats account及用户管理 把权限放到account level 用户密码泄露可以通过快速更换用户可以设置过期日期,进行安全轮换 此外通过nsc 管理用户和权限,可以统一实现全局管控,包括subject管控&#…...
晶闸管主要参数分析与损耗计算
1. 主要参数 断态正向可重复峰值电压 :是晶闸管在不损坏的情况下能够承受的正向最大阻断电压。断态正向不可重复峰值电压 :是晶闸管只有一次可以超过的正向最大阻断电压,一旦晶闸管超过此值就会损坏,一般情况下 反向可重复峰值电压 :是指晶闸管在不损坏的情况下能够承受的…...
纯CSS动画状态检测终极指南:10个实用技巧让你告别JavaScript依赖
纯CSS动画状态检测终极指南:10个实用技巧让你告别JavaScript依赖 【免费下载链接】You-Dont-Need-JavaScript CSS is powerful, you can do a lot of things without JS. 项目地址: https://gitcode.com/gh_mirrors/yo/You-Dont-Need-JavaScript 在现代网页开…...
基于SystemC TLM-2.0的RISC-V处理器仿真框架构建与实战
1. 项目概述:一个基于TLM的RISC-V处理器仿真框架最近在处理器架构探索和软件生态早期开发的圈子里,一个绕不开的话题就是如何快速、高效地对一个新设计的CPU进行功能验证和软件移植。传统的FPGA原型验证虽然真实,但迭代周期长,环境…...
基于MCP协议的文档解析服务器:统一处理PDF与Office文档的AI应用利器
1. 项目概述:一个专为文档解析而生的MCP服务器 如果你正在构建一个需要深度理解各种文档格式(PDF、Word、Excel、PPT)的AI应用,并且厌倦了为每种格式寻找、集成和维护不同的解析库,那么 rendoc-mcp-server 这个项目很…...
手把手教你为ZYNQ裸机LWIP库添加KSZ9031 PHY支持(Vivado 2017.4实战)
ZYNQ裸机网络开发实战:深度解析KSZ9031 PHY驱动移植与LWIP库定制 当你拿到一块搭载KSZ9031 PHY芯片的ZYNQ开发板准备开发双网口应用时,可能会遇到一个棘手问题——Xilinx官方提供的LWIP库竟然不支持这块PHY芯片。这种硬件与软件的不匹配在嵌入式开发中并…...
Nintendo Switch游戏安装终极指南:Awoo Installer快速安装NSP、NSZ、XCI、XCZ格式文件
Nintendo Switch游戏安装终极指南:Awoo Installer快速安装NSP、NSZ、XCI、XCZ格式文件 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer …...
跨部门协作:如何让“水火不容“的开发与运维团队“并肩作战“?
作者身份:10年运维总监,亲历DevOps转型全链路前言做了十年运维,我见过太多团队在"开发与运维"的边界问题上反复拉扯——开发说运维不懂业务需求,运维说开发不考虑生产环境稳定性;开发嫌运维响应慢࿰…...
Fernflower:Java字节码智能反编译的艺术与实践
Fernflower:Java字节码智能反编译的艺术与实践 【免费下载链接】fernflower Decompiler from Java bytecode to Java, used in IntelliJ IDEA. 项目地址: https://gitcode.com/gh_mirrors/fe/fernflower 当你面对一个只有.class文件的Java应用,源…...
VS Code代码隐藏扩展Repo Cloak:防窥屏、演示与专注开发利器
1. 项目概述:一个为开发者打造的代码“隐身衣”如果你和我一样,是个经常在GitHub上“摸爬滚打”的开发者,肯定遇到过这样的尴尬:在公共场合分享屏幕、录制教学视频,或者只是单纯地不想让旁人瞥见你正在编写的、尚未完成…...
Univer:构建企业级AI原生表格的创新解决方案
Univer:构建企业级AI原生表格的创新解决方案 【免费下载链接】univer Build AI-native spreadsheets. Univer is a full-stack framework for creating and editing spreadsheets on both web and server. With Univer Platform, Univer Spreadsheets is driven dir…...
Windows热键冲突终极解决方案:Hotkey Detective深度解析
Windows热键冲突终极解决方案:Hotkey Detective深度解析 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 在Wind…...
