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

【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??

【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??

Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??


文章目录

  • 【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??
  • 激活函数
    • CNN中为什么必须要用激活函数呢?
    • 激活函数的主要作用:
  • 常用的激活函数及其应用
    • 1.Sigmoid 函数
    • 2.Tanh 函数
    • 3.ReLU (Rectified Linear Unit) 函数
    • 4.Leaky ReLU 函数
    • 5.ELU (Exponential Linear Unit) 函数
    • 6.Swish 函数
    • 7.Softmax 函数
  • 激活函数的选择依据
  • 总结


激活函数

  • 激活函数(Activation Function)是深度学习中将输入信号的加权和转化为输出信号的非线性变换。激活函数的引入解决了线性模型中无法处理复杂模式的问题,确保神经网络具有表达复杂函数、捕捉非线性关系的能力。

CNN中为什么必须要用激活函数呢?

  • 如果不使用激活函数,神经网络层与层之间的输出将是线性的组合,等效于单一的线性模型。无论网络多么深,最终的输出都是输入的线性变换,无法解决复杂的模式识别问题。因此,激活函数引入了非线性,使神经网络能够拟合复杂的高维数据。

激活函数的主要作用:

  • 引入非线性:神经网络通过激活函数引入非线性,能够拟合复杂的非线性函数,解决复杂问题。

  • 保证梯度传播:通过适当的激活函数可以使得梯度能够良好地反向传播,从而有效地进行参数更新。

  • 特征压缩与选择:激活函数通常可以对输入信号进行压缩,抑制不重要的信号并突出关键的特征。

常用的激活函数及其应用

1.Sigmoid 函数

公式

f ( x ) = 2 1 + e − x f(x)=\frac{2}{1+e^{-x}} f(x)=1+ex2

作用

  • 将输入值映射到 0 到 1 之间的概率区间。
  • 常用于二分类问题的输出层。

优缺点

  • 优点:常用于二分类问题的输出层。
  • 缺点:当输入值绝对值过大时,梯度趋于 0,导致梯度消失问题,无法有效训练深层网络。

代码示例

import tensorflow as tf# Sigmoid 激活函数
x = tf.random.normal([1, 5])
output = tf.nn.sigmoid(x)
print(output)

适用场景

  • 二分类任务(例如:Logistic 回归的输出层)。
  • 小型网络,不适用于深度网络。

2.Tanh 函数

公式

f ( x ) = 2 1 + e − 2 x − 1 f(x)=\frac{2}{1+e^{-2x}}-1 f(x)=1+e2x21

作用

  • 将输入值映射到 -1 到 1 的区间。
  • Tanh 函数对 0 的输入是对称的,即它是零中心化的。

优缺点

  • 优点:零中心化,更适合处理有负数输入的特征。
  • 缺点:同样存在梯度消失问题,当输入值很大或很小时,梯度趋近于 0。

代码示例

import tensorflow as tf# Tanh 激活函数
x = tf.random.normal([1, 5])
output = tf.nn.tanh(x)
print(output)

适用场景

  • 自然语言处理等需要处理负值的场景。
  • 常用于 RNN 和 LSTM 中。

3.ReLU (Rectified Linear Unit) 函数

公式

f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)

作用

  • 当输入大于 0 时,ReLU 输出输入值本身;当输入小于或等于 0 时,输出 0。
  • 引入非线性,并且计算非常简单,收敛速度快。

优缺点

  • 优点:引入非线性,并且计算非常简单,收敛速度快。
  • 缺点:当输入小于 0 时,神经元可能会死亡(即无法再激活),这叫做 “ReLU 死亡” 问题。

代码示例

import tensorflow as tf# ReLU 激活函数
x = tf.random.normal([1, 5])
output = tf.nn.relu(x)
print(output)

适用场景

  • 深度卷积神经网络(CNN)、全连接网络(FCN)等几乎所有深度学习模型中。

4.Leaky ReLU 函数

公式

f ( x ) = m a x ( 0.01 x , x ) f(x)=max(0.01x,x) f(x)=max(0.01x,x)

作用

  • 类似于 ReLU,但对于负值输入不完全为 0,而是乘以一个较小的斜率(通常为 0.01),以解决 ReLU 死亡问题。

优缺点

  • 优点:在负值区域保留小的梯度,避免了 ReLU 的死亡问题。
  • 缺点:相比 ReLU 的简单性,增加了计算量。

代码示例

import tensorflow as tf# Leaky ReLU 激活函数
x = tf.random.normal([1, 5])
output = tf.nn.leaky_relu(x, alpha=0.01)  # alpha 是负值部分的斜率
print(output)

适用场景

  • 深度神经网络中,尤其是在 ReLU 出现大量 “死亡神经元” 的情况下。

5.ELU (Exponential Linear Unit) 函数

公式

f ( x ) = { x , i f x > 0 , α ( e x − 1 ) , i f x ≤ 0 f(x)=\begin{cases} x, &if&x>0,\\ α(e^x-1), &if&x \le 0 \end{cases} f(x)={x,α(ex1),ififx>0,x0

作用

  • 对于正值,ELU 类似于 ReLU;对于负值,它的输出为指数衰减而非零,这样可以让网络学习负数特征,同时保持梯度流动。

优缺点

  • 优点:相比 Leaky ReLU,有更好的训练表现,减少了偏差。
  • 缺点:计算稍复杂,训练速度略慢于 ReLU。

代码示例

import tensorflow as tf# ELU 激活函数
x = tf.random.normal([1, 5])
output = tf.nn.elu(x)
print(output)

适用场景

  • 深度网络中,用于代替 ReLU,特别是需要保留负数特征的场景。

6.Swish 函数

公式

f ( x ) = x ⋅ s i g m o i d ( x ) f(x)=x·sigmoid(x) f(x)=xsigmoid(x)

作用

  • Swish 是一种自适应激活函数,结合了 Sigmoid 和 ReLU 的特性,并能平滑地处理负值输入,提供更好的表现。

优缺点

  • 优点:在一些任务上,Swish 的表现优于 ReLU。
  • 缺点:计算稍复杂,训练速度较慢。

代码示例

import tensorflow as tf# Swish 激活函数
x = tf.random.normal([1, 5])
output = x * tf.nn.sigmoid(x)
print(output)

适用场景

  • 深层神经网络中,特别是在需要更好的训练表现时(如 EfficientNet)。

7.Softmax 函数

公式

f ( x ) = e x i ∑ j e x j f(x)=\frac{e^{x_i}}{∑_je^{x_j}} f(x)=jexjexi

作用

  • 将输入映射为一个概率分布,所有输出值的和为 1。
  • 通常用于多分类任务的输出层。

优缺点

  • 优点:用于分类问题时,能够很好地提供归一化概率。
  • 缺点:仅适用于分类任务的输出层。

代码示例

import tensorflow as tf# Softmax 激活函数
x = tf.random.normal([1, 5])
output = tf.nn.softmax(x)
print(output)

适用场景

  • 多分类问题 的输出层,如图像分类、文本分类。

激活函数的选择依据

  • 二分类问题:一般选择 Sigmoid 作为输出层激活函数。
  • 多分类问题:常使用 Softmax 作为输出层激活函数,提供概率分布。
  • 卷积网络:通常使用 ReLU 或 Leaky ReLU,可以加快网络收敛,并处理梯度问题。
  • 深度网络:可以考虑使用 Swish 或 Leaky ReLU,在深层网络中能够避免死神经元和梯度消失。
  • 自然语言处理或时间序列处理:常见激活函数为 Tanh 或 Sigmoid,配合 LSTM 或 GRU 使用。

总结

激活函数为神经网络引入了非线性特性使得网络能够拟合复杂的数据模式和关系。选择合适的激活函数不仅能提升模型的表现,还能有效解决训练中的一些问题,如梯度消失和死神经元问题。不同的激活函数在不同场景下有各自的优势和适用性,因此在实际应用中需要根据具体任务和数据来合理选择。

相关文章:

【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??

【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色?? Activation Function——在卷积神经网络中的激活函数是一个什么样的角色?? 文章目录 【激活函数】Activation Function——在卷积神经网络中…...

重生之我在Java世界------学单例设计模式

什么是单例设计模式? 单例模式是面向对象编程中最简单却又最常用的设计模式之一。它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的原理、常见实现方法、优缺点,以及在使用过程中可能遇到的陷阱。 单…...

快速提升Python Pandas处理速度的秘诀

大家好,Python的Pandas库为数据处理和分析提供了丰富的功能,但当处理大规模数据时,性能问题往往成为瓶颈。本文将介绍一些在Pandas中进行性能优化的方法与技巧,帮助有效提升数据处理速度,优化代码运行效率。 1.数据类…...

在基于线程的环境中运行 MATLAB 函数

MATLAB 和其他工具箱中的数百个函数可以在基于线程的环境中运行。可以使用 backgroundPool 或 parpool("threads") 在基于线程的环境中运行代码。 ​要在后台运行函数,请使用 parfeval 和 backgroundPool。​ ​具体信息可以参考Choose Between Thread-B…...

黑神话悟空+云技术,游戏新体验!

近期,一款名为黑神话悟空的游戏因其独特的艺术风格和创新的技术实现在玩家中产生了不小的影响。 而云桌面技术作为一种新兴的解决方案,正在改变人们的游戏体验方式,使得高性能游戏可以在更多设备上流畅运行。 那么,黑神话悟空如…...

【Android 13源码分析】WindowContainer窗口层级-3-实例分析

在安卓源码的设计中,将将屏幕分为了37层,不同的窗口将在不同的层级中显示。 对这一块的概念以及相关源码做了详细分析,整理出以下几篇。 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树 【Android 13源码分析】WindowCon…...

Redis常用操作及springboot整合redis

1. Redis和Mysql的区别 数据模型:二者都是数据库,但是不同的是mysql是进行存储到磁盘当中,而Redis是进行存储到内存中. 数据模型 : mysql的存储的形式是二维表而Redis是通过key-value键值对的形式进行存储数据. 实际的应用的场景: Redis适合于需要快速读写的场景&…...

动态规划day34|背包理论基础(1)(2)、46.携带研究材料(纯粹的01背包)、416. 分割等和子集(01背包的应用)

动态规划day34|背包理论基础(1)(2)、46.携带研究材料、416. 分割等和子集 背包理论基础(1)——二维背包理论基础(2)——一维46.携带研究材料(卡码网 01背包)1. 二维背包2. 一维背包 …...

pytorch优化器

在反向传播计算完所有参数的梯度后,还需要使用优化方法更新网络的权重和参数。例如,随机梯度下降法(SGD)的更新策略如下: weight weight - learning_rate * gradient 手动实现如下: learning_rate 0.01 …...

必备工具,AI生成证件照,再也不用麻烦他人,电子驾驶证等多种证件照一键生成

最近有一个生成证件照的开源项目很火,今天我们来学习一下。之前我生成证件照都是线下去拍照,线上使用也是各种限制,需要付费或看广告,而且效果也不是很理想, 今天要分享的这个 AI 证件照生成工具可以一键可以生成一寸…...

深度解析 MintRich 独特的价格曲线机制玩法

随着 Meme 币赛道的迅速崛起,NFT 市场也迎来了新的变革。作为一个创新的 NFT 发行平台,Mint.Rich 正掀起一场全民参与的 NFT 热潮。其简易的操作界面和独特的价格曲线设计,让任何人都能以极低的门槛发行和交易自己的 NFT,从而参与…...

实时数仓3.0DWD层

实时数仓3.0DWD层 DWD层设计要点:9.1 流量域未经加工的事务事实表9.1.1 主要任务9.1.2 思路9.1.3 图解9.1.4 代码 9.2 流量域独立访客事务事实表9.2.1 主要任务9.2.2 思路分析9.2.3 图解9.2.4 代码 9.3 流量域用户跳出事务事实表9.3.1 主要任务9.3.2 思路分析9.3.3 …...

路径规划 | 基于A*算法的往返式全覆盖路径规划的改进算法(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 基于A*算法的往返式全覆盖路径规划的改进算法 matlab实现代码 往返式全覆盖路径规划,通过建立二维栅格地图,设置障碍物,以及起始点根据定义往返式路径规划的定义的优先级运动规则从…...

QT 串口上位机读卡显示

目录 一. QT创建工程 二. 软件更换图标 三. QT打包 一. QT创建工程 文件新建,选择创建一个桌面QT。 重命名RFID,并选择工程保存路径 RFID.pro QT core gui serialport #串行串口greaterThan(QT_MAJOR_VERSION, 4): QT widgetsTARGET RFID TE…...

Chrome谷歌浏览器登录账号next无反应

文章目录 问题描述 我们的Chrome浏览器在更新之后,会出现登录谷歌账号的时候,当你输入你的谷歌邮箱之后,点击 n e x t next next,也就是下一步的时候,页面没有反应,也就是没有跳转到输入密码的页面。 分析 根据logs里…...

Android相关线程基础

线程基础 进程与线程 进程:可以被看做是程序的实体, 是系统进行资源分配和调度的基本单位. 线程:是操作系统调度的最小单元, 也叫轻量级进程 使用多线程的优点 可以减少程序的响应时间。如果某个操作很耗时, 能够避免陷入长时间的等待, 从而有着更好的交互性. 线程较之进…...

uniapp 如何自定义导航栏并自适应机型

如今的移动设备有各种不同的屏幕形状,如刘海屏、水滴屏等。这些异形屏会影响页面的布局,尤其是导航栏和底部栏的显示。通过获取安全区域信息,可以确保页面内容不会被异形屏的特殊区域遮挡。 在设计页面顶部导航栏时,可以根据 saf…...

Java高级Day43-类加载

117.类加载 静态和动态加载 反射机制是java实现动态语言的关键,也就是通过反射实现类动态加载 静态加载:编译时加载相关的类,如果没有则报错,依赖性太强 动态加载:运行时加载需要的类,如果运行时不用该类…...

【LeetCode 算法笔记】155. 最小栈

目录 问题描述单个栈实现双栈实现不开辟额外空间 问题描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop()…...

面试题 05.01. 插入

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给定两个整型数字 N 与 M&#xff0c;以及表示比特位置的 i 与 j&#xff08;i < j&#xff0c;且从 0 位开始计算&#xff09;。…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...