神经网络常见激活函数 9-CELU函数

文章目录

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

CELU

  • 连续可微指数线性单元:CELU(Continuously Differentiable Exponential Linear Unit),是一种连续可导的激活函数,结合了 ELUReLU 的特点,旨在解决 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)={xx0α(eαx1)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)={1x0eα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 的优点

    1. 连续可导:CELU函数在整个定义域上都是连续可导的,这使得它在优化过程中更加稳定。
    2. 缓解梯度消失问题:CELU在负输入时引入非零梯度,有助于缓解梯度消失问题。
    3. 平滑过渡:CELU函数在零点处是平滑的,避免了ReLU在零点处的不连续性。
    4. 灵活性:CELU可以表示ReLU作为其特例,当α趋近于0时,CELU趋近于ReLU。
    5. 加速收敛:在某些情况下,CELU能够比ReLU更快地收敛。
  • CELU 的缺点

    1. 计算复杂度高:CELU的指数运算比ReLU更复杂,计算成本更高。
    2. 参数敏感:CELU的性能对α参数的选择较为敏感,不同的α值可能会显著影响模型的性能。
    3. 可能的过拟合风险:在某些情况下,CELU可能会导致模型过拟合,尤其是在数据集较小或模型复杂度较高时。
    4. 训练时间增加:由于计算复杂度的增加,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]
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ceph集群搭建2025(squid版)

squid版本维护年限 apt install -y cephadmecho >> "deb http://mirrors.163.com/ceph/debian-squid/ bookworm main" echo >> "deb-src http://mirrors.163.com/ceph/debian-squid/ bookworm main"#安装源 cephadm install #开始初始化一个最…

详解电子邮箱工作原理|SMTP、POP3、IMAP、SPF、MIME

写在前面 电子邮件&#xff08;Email&#xff09;是一种通过互联网进行异步通信的技术&#xff0c;工作原理涉及多个协议、服务器和客户端协同工作。 接下来我们来介绍一下电子邮箱的工作原理 1. 电子邮件的核心组成部分 邮件客户端&#xff1a;用户直接交互的软件&#xf…

【安全靶场】信息收集靶场

靶场&#xff1a;https://app.hackinghub.io/hubs/prison-hack 信息收集 子域名收集 1.subfinder files.jabprisons.com staging.jabprisons.com cobrowse.jabprisons.com a1.top.jabprisons.com cf1.jabprisons.com va.cobrowse.jabprisons.com vs.jabprisons.com c…

LVDS接口总结--(5)IDELAY3仿真

仿真参考资料如下&#xff1a; https://zhuanlan.zhihu.com/p/386057087 timescale 1 ns/1 ps module tb_idelay3_ctrl();parameter REF_CLK 2.5 ; // 400MHzparameter DIN_CLK 3.3 ; // 300MHzreg ref_clk ;reg …

DeepSeek的大模型介绍

文章目录 DeepSeek是什么DeepSeek平台使用DeepSeek的使用场景DeepSeek的本地部署 DeepSeek是什么 DeepSeek是一家2023/7月年成立的人工智能公司&#xff0c;致力于开发高效、高性能的生成式AI模型&#xff0c;在短短一年多的时间里推出了多款强大的开源模型&#xff0c;包括De…

【devops】Github Actions Secrets | 如何在Github中设置CI的Secret供CI的yaml使用

一、Github Actions 1、ci.yml name: CIon: [ push ]jobs:build:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkoutv3- name: Set up Gouses: actions/setup-gov4with:go-version: 1.23.0- name: Cache Go modulesuses: actions/cachev3with:path: |…

C语言基本概念————讨论sqrt()和pow()函数与整数的关系

本文来源&#xff1a;C语言基本概念——讨论sqrt()和pow()函数与整数的关系. C语言基本概念——sqrt和pow函数与整数的关系 1. 使用sqrt()是否可以得到完全平方数的精确的整数平方根1.1 完全平方数的计算结果是否精确&#xff1f;1.2 为什么不会出现误差&#xff08;如 1.99999…

日常知识点之面试后反思裸写string类

1&#xff1a;实现一个字符串类。 简单汇总 最简单的方案&#xff0c;使用一个字符串指针&#xff0c;以及实际字符串长度即可。 参考stl的实现&#xff0c;为了提升string的性能&#xff0c;实际上单纯的字符串指针和实际长度是不够了&#xff0c;如上&#xff0c;有优化方案…

【AI论文】10亿参数大语言模型能超越405亿参数大语言模型吗?重新思考测试时计算最优缩放

摘要&#xff1a;测试时缩放&#xff08;Test-Time Scaling&#xff0c;TTS&#xff09;是一种通过在推理阶段使用额外计算来提高大语言模型&#xff08;LLMs&#xff09;性能的重要方法。然而&#xff0c;目前的研究并未系统地分析策略模型、过程奖励模型&#xff08;Process …

【漫话机器学习系列】088.常见的输出层激活函数(Common Output Layer Activation Functions)

在神经网络中&#xff0c;输出层&#xff08;Output Layer&#xff09; 的激活函数&#xff08;Activation Function&#xff09;直接决定了模型的输出形式&#xff0c;并影响损失函数的选择及训练效果。不同的任务类型&#xff08;如分类或回归&#xff09;需要使用不同的激活…

在实体机和wsl2中安装docker、使用GPU

正常使用docker和gpu&#xff0c;直接命令行安装dcoker和&#xff0c;nvidia-container-toolkit。区别在于&#xff0c;后者在于安装驱动已经cuda加速时存在系统上的差异。 1、安装gpu驱动 在实体机中&#xff0c;安装cuda加速包&#xff0c;我们直接安装 driver 和 cuda 即可…

麒麟v10 server版安装ollama跑Deepseek

麒麟v10 server版安装ollama跑Deepseek 1. 环境 2. 安装docker yum install docker 发现源只有18.x版本&#xff0c;启动ollama&#xff0c;发现调用CPU&#xff0c;没调用GPU docker19.x以上才 会调用GPU, 可以添加centos8的原&#xff0c;安装docker-ce3.启动ollama&#…

LabVIEW用户界面(UI)和用户体验(UX)设计

作为一名 LabVIEW 开发者&#xff0c;满足功能需求、保障使用便捷与灵活只是基础要求。在如今这个用户体验至上的时代&#xff0c;为 LabVIEW 应用程序设计直观且具有美学感的界面&#xff0c;同样是不容忽视的关键任务。一个优秀的界面设计&#xff0c;不仅能提升用户对程序的…

如何使用Java语言在Idea和Android中分别建立服务端和客户端实现局域网聊天

手把手教你用Java语言在Idea和Android中分别建立服务端和客户端实现局域网聊天 目录 文章目录 手把手教你用**Java**语言在**Idea**和**Android**中分别建立**服务端**和**客户端**实现局域网聊天**目录**[toc]**基本实现****问题分析****服务端**Idea:结构预览Server类代码解…

【实战篇】DeepSeek + ElevenLabs:让人工智能“开口说话”,打造你的专属语音助手!

最近,AI语音合成技术真是火得不行,各种“开口脆”的AI声音层出不穷,听得我直呼“这也太像真人了吧!” 作为一个科技爱好者,我当然不能错过这股潮流,这不,最近就沉迷于用 DeepSeek 和 ElevenLabs 这两款神器,捣鼓各种人声音频,简直停不下来! 先来科普一下这两位“主角…

vscode/cursor+godot C#中使用socketIO

在 Visual Studio Code(VS Code)中安装 NuGet 包&#xff08;例如SocketIOClient&#xff09;&#xff0c;你可以通过以下几种方法&#xff1a; 方法 1&#xff1a;使用dotnet cli 打开终端&#xff1a;在 VS Code 中按下Ctrl 或者通过菜单View -> Terminal打开终端。 导…

ETL的使用(sqoop):数据导入,导出

ETL ETL: 是数据抽取&#xff08;Extract&#xff09;、数据转换&#xff08;Transform&#xff09;和数据加载&#xff08;Load&#xff09;的整个过程 常用的ETL工具 sqoop 1.Apache Sqoop 是 Apache 软件基金会旗下的一个开源项目&#xff0c;旨在帮助用户高效地在 Hado…

安卓手游内存call综合工具/内部call/安卓注入call/数据分析(类人猿学院)

进程分析注入综合工具总界面 模块分析函数分析遍历 函数分析 so汇编分析 汇编call植入器&#xff0c;支持模拟器x86 x64 和手机arm64指令全平台 防ce搜索数据功能 全国首套发布&#xff0c;阿凡老师学院最好的安卓内存逆向老师&#xff0c;几乎行业最强的&#xff0c;有兴趣可以…

Transformer 详解:了解 GPT、BERT 和 T5 背后的模型

目录 什么是 Transformer? Transformer如何工作? Transformer 为何有用? 常见问题解答:机器学习中的 Transformer 在技​​术领域,突破通常来自于修复损坏的东西。制造第一架飞机的人研究过鸟类。莱特兄弟观察了秃鹫如何在气流中保持平衡,意识到稳定性比动力更重要。…

在C++的DLL文件中定义的结构体,在DLL外可以使用吗,如何使用?

在C的DLL文件中定义的结构体&#xff0c;在DLL外可以使用&#xff0c;但需要正确处理类型匹配和内存管理。‌ 在DLL外使用DLL中定义的结构体的方法&#xff1a; 一、 ‌使用extern "C"声明‌&#xff1a; 在DLL的导出声明中使用extern "C"可以确保函数和…