深度学习机器学习:常用激活函数(activation function)详解

news2025/5/16 13:14:20

目录

Sigmoid Function

ReLU(Rectified Linear Unit)

LeakyReLU(Leaky Rectified Linear Unit)

ClippedReLU(Clipped Rectified Linear Unit)

PRelu(Parametric ReLU)

Tanh(hyperbolic tangent function)

ELU (Exponential Linear Unit)

GELU(Gaussian Error Linear Unit)

Swish(Self-Gated Sigmoid Activation Function)

Softplus Fuction


Sigmoid Function

定义:

Sigmoid(x)=\frac{1}{1+e^{-x}}

该函数将输入值 x 映射到 (0,1) 的范围内,输出值可以被解释为概率,广泛用于二分类任务中。

特点:

  • 非线性平滑输出:Sigmoid函数的输出是连续且平滑的,能够为模型提供非线性建模能力。其S形曲线在输入值较小时(如 x→−∞)输出接近0,输入值较大时(如 x→+∞)输出接近1,中间区域则呈现平滑过渡,适合处理具有概率意义的输出。
  • 梯度消失:Sigmoid函数的导数f'(x)=f(x)(1-f(x))在输入值绝对值较大时会接近0,导致反向传播时梯度非常小,从而引发梯度消失问题。这会使得深层网络中靠近Sigmoid激活函数的权重更新缓慢,甚至停止更新,影响模型的训练效果。

 应用:

  • 二元分类与概率输出:Sigmoid函数的输出范围为 (0,1),可以直接被解释为概率,因此非常适合用于二分类问题的输出层激活函数。例如,在逻辑回归或神经网络的最后一层,Sigmoid可以将输出映射为事件发生的概率。


ReLU(Rectified Linear Unit)

定义

ReLU(x)=max(0,x)

 

起源论文:Nair V, Hinton G E. Rectified linear units improve restricted boltzmann machines[C]//Proceedings of the 27th international conference on machine learning (ICML-10). 2010: 807-814.

Rectified Linear Units Improve Restricted Boltzmann Machines

特点

  • 正向激活:当输入为正时,输出等于输入,保持梯度不衰减,有助于解决梯度消失问题。当输入为负时,输出为零,引入稀疏性,减少计算量,但可能导致“死亡ReLU”问题(当特征值小于或等于0时,它总是输出0,即神经元永远不会被激活,特别是当模型参数量大的时候,不是每个参数都可以在梯度下降中被很好的训练,“死亡Relu”的影响就会比较明显)。

当ReLU函数的输入小于零时,其导数为零(因为输出是常数0,对输入没有依赖)。这意味着,在反向传播过程中,该神经元对损失函数的梯度贡献为零。因此,与该神经元相连的权重将不会得到更新(因为梯度为零,权重更新公式中的梯度项为零),进一步造成神经元“死亡”

注:

  • 神经元“死亡”通常指的是在使用 ReLU(Rectified Linear Unit) 激活函数时,某些神经元的输出值永远为 0,并且在训练过程中无法再被激活。这种情况被称为“神经元死亡”或“ReLU 死亡问题
  • 梯度消失是指在反向传播过程中,某些层的梯度值变得非常小,接近于 0,导致这些层的权重几乎无法更新。这种情况通常发生在深层网络中,尤其是在使用 sigmoidtanh 激活函数时。
  • 从描述上来说,神经元死亡是指激活后特征值仍为0(仅限于ReLU),梯度消失则是指梯度非常接近于0,两者在作用对象上具有本质差别。神经元死亡指该特征没有被利用,进一步训练也无法学习到(尽管该特征很微小),而梯度消失则是,描述该网络层由于梯度过于小导致无法得到有效训练。

使用场景:

  • 常见的深度学习网络:由于其计算简单,效率高,因此其比较适合应用参数量大的深度神经网络。同时因为其具有稀疏的特性,利用ReLU训练的网络往往有更好的模型蒸馏效果,因此一些论文为了凑工作量,故意采用ReLU激活函数,来提升其模型蒸馏的表现。

注:稀疏性通常指在某个集合、向量、矩阵或信号中,大多数元素或分量的值接近于零或为零,而只有少数元素或分量的值较大。这种特性使得数据或信号具有稀疏表示的可能性,即可以通过较小的数据来储存和表示。


LeakyReLU(Leaky Rectified Linear Unit)

定义:

Leaky ReLU(x)=\left\{\begin{matrix} x& if &x>0 \\ \alpha x&if &x\leq 0 \end{matrix}\right.

 

起源论文:Maas A L, Hannun A Y, Ng A Y. Rectifier nonlinearities improve neural network acoustic models[C]//Proc. icml. 2013, 30(1): 3.

relu_hybrid_icml2013_final.pdf

特点

  • 缓解“死亡神经元”问题:当输入为负时,LeakyReLU输出一个微小的非零值(αxαx),而非完全置零。这使得负区间的梯度为 α(而非0),确保反向传播时梯度仍能流动,避免神经元永久“死亡”。

  • 保留部分稀疏性与计算高效性:负值区域的输出虽不为零,但通过设置较小的 αα(如0.01),仍能保持一定稀疏性,即负值区域的激活强度远低于正值区域。相比ReLU仅多一次乘法运算(αx),整体复杂度依然较低,依旧适合个人构建大规模神经网络。

使用场景

  • 任何可以使用Relu激活函数的场景

    在生成对抗网络(GANs)、循环神经网络(RNNs)等对梯度敏感的任务中,LeakyReLU可避免因梯度消失导致的模型训练失败。相较于ReLU,LeakyReLu在计算复杂度不大幅提高的情况下,进一步强化了模型训练和预测的鲁棒性。所以,为什么不用LeakReLU呢?

稀疏性权衡:LeakyReLU牺牲了ReLU的严格稀疏性(负值完全置零),但通过微小负值保留了部分稀疏特性。

参数选择:α 通常取0.01,但可根据任务调整。若 α 过大,可能导致负值区域激活过强,削弱稀疏性优势。当 α=0 时,LeakyReLU退化为ReLU;当α=1 时,退化为线性函数。


ClippedReLU(Clipped Rectified Linear Unit)

定义:

ClippedReLU(x)=\left\{\begin{matrix} 0 & if & x\leq 0 \\ x & if & 0< x \leq \tau \\ \tau & if & x> \tau \end{matrix}\right.


Clipped ReLU(也称为截断ReLU或限制ReLU)是一种变体,它在ReLU的基础上对输出值进行了上限截断。即当输入大于某个设定阈值时,输出不再继续增加,而是被限制在这个阈值上。

起源论文:Cai Z, He X, Sun J, et al. Deep learning with low precision by half-wave gaussian quantization[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 5918-5926.

CVPR 2017 Open Access Repository

特点:

  • 保留了ReLU的稀疏性
  • 防止梯度爆炸:在反向传播中,输入超过  \tau的区域梯度为零(因输出固定为常数 \tau),类似ReLU的负区间行为。这能限制梯度幅值,降低梯度爆炸的可能性。
  • 引入可控性:通过调整 \tau可灵活平衡模型表达能力与数值稳定性。例如,较小的 \tau 增强鲁棒性但可能抑制特征多样性,较大的 ττ 更接近原始ReL

使用场景:

  • 基本不用:大多数场景中,梯度爆炸问题都不太显著。因此,必须使用Clipped ReLu的场景较少。
  • 特殊需求:量化感知训练(Quantization Aware Training, QAT)及 嵌入式或边缘计算中:在模型量化前使用ClippedReLU,可约束激活值范围,使其适配低比特整数(如8-bit),减少量化误差。

注:

阈值:Clipped ReLU的阈值\tau是人为一个超参数,需要根据具体任务和网络结构进行调优。

什么是量化感知训练(QAT):在深度学习领域,模型的效率和性能一直是研究者们关注的重点。传统的深度学习模型大多使用32位浮点数(FP32)进行计算,但在部署阶段,尤其是在资源受限的设备上(如移动设备、嵌入式系统等),将模型中的权重和激活函数量化为较低精度的数值(如8位整数,INT8)可以显著减少内存和计算的需求。然而,模型量化通常会带来计算精度的下降,从而影响模型的性能。为了减少这种影响,量化感知训练被提出,用于底精度模型拟合原始模型。


PRelu(Parametric ReLU)

定义

PReLU(x)=\left\{\begin{matrix} x& if &x>0 \\ \alpha x&if &x\leq 0 \end{matrix}\right.

Parametric ReLU(PReLU)是LeakyReLU的改进版本,虽然从计算定义上看,和LeakyReLU一致,但PReLU通过引入可学习的参数来自适应调整负值区域的斜率。其中,α 是一个可训练的参数(而非固定值),通过反向传播优化,允许模型根据数据动态调整负区间的激活强度。

 He K, Zhang X, Ren S, et al. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1026-1034.

ICCV 2015 Open Access Repository

特点

  • 自适应负区间斜率PReLU允许每个神经元或每组通道(channel-wise)拥有独立的 α,赋予模型更强的表达能力。例如,卷积网络中可为每个卷积核单独学习 α,适应不同特征的重要性。类似LeakyReLU,负区间的梯度为 α(非零),确保反向传播时梯度持续流动,降低神经元永久失效的风险。通过优化 α,模型可自动决定负区间的激活强度:若α→0,接近ReLU的严格稀疏性;若 α 较大,保留更多负值信息以捕捉复杂模式。

  • 低额外计算成本

    增加的参数量极小(如CNN中每通道仅一个参数),模型计算成本和LeakyReLU一致,适合大规模网络。PReLU在训练时,即反向传播的过程中,也会增加的一定计算量,但总体来说也不显著,替换成PReLU不会显著降低训练时间。

PReLU梯度的计算:反向传播时,α的梯度为负区间的输入 x之和,即 \frac{\partial L}{\partial \alpha} = \sum_{x_i \leq 0} x_i \cdot \frac{\partial L}{\partial f(x_i)},需注意梯度裁剪防止数值不稳定。

使用场景

  • 任何使用ReLU、LeakyReLU的场景:生于LeakyReLU,可自适应的调节参数的PReLu是更好选择。当训练数据充足时,PReLU的参数化机制可挖掘更多隐藏特征,避免因固定 α 导致的模型表达能力受限。

  • 多源异构数据融合的模型:若输入特征在不同通道或区域间差异显著(如自然图像与文本数据混合训练),PReLU的分通道参数化特性可提升模型鲁棒性,因此在数据分布差异比较大的多源数据中,PReLU是个不错的激活工具。

参数初始化
α 通常初始化为0.25(经验值,参考何恺明论文),但也可尝试其他初始化策略(如均匀分布)。

参数共享策略
为减少参数量,可将 α 设为通道共享(channel-wise)而非逐神经元(element-wise),尤其在宽网络中,以减少参数量,加快训练速度。


Tanh(hyperbolic tangent function)

定义:

tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}

 

特点:

  • 平滑性和对称性:该函数将输入值映射到 [−1,1] 的范围内,输出值具有对称性和平滑性。其导数为:tanh'(x)=1-tanh^{2}(x),这种平滑性使得梯度在反向传播过程中能够持续流动。但输入和输出的绝对值太大时,其梯度也过于的小,同样会产生梯度消失。

但需要注意的是:tanh 的梯度在输入值接近 0 时较大,而在输入值绝对值较大时梯度逐渐减小。这种特性使得 tanh 仅在在处理中等大小的输入时能够较好地传播梯度,在输入值过大或过小时,梯度可能会变得非常接近于0,从而导致“梯度消失”问题。

使用场景:

  • 映射输出:由于tanh输出[-1,1]的特性,它很适合用来映射输出。因此生成网络的输出基本都是采用tanh,如DCGAN或是Pix2Pix。再例如循环神经网络(RNN)中,tanh 常用于门控机制,以确保梯度在时间维度上能够较好地传播。
  • 小规模网络:tanh的计算较为复杂,因此其并不适用于大型网络模型,要不其训练时间会显著地增加,如使用tanh的RNN模型:LSTM,它的训练速度就是慢。


ELU (Exponential Linear Unit)

定义:

ELU(x)=\left\{\begin{matrix} x & if & x\geq 0\\ a(e^x-1) & if & x< 0 \end{matrix}\right.

 

其中,α 是一个超参数,通常取值为1,但也可以根据需要进行调整。

起源论文:Clevert D A. Fast and accurate deep network learning by exponential linear units (elus)[J]. arXiv preprint arXiv:1511.07289, 2015.

(PDF) Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)

特点:

  • 负值平滑处理:ELU对负值进行指数平滑处理,输出饱和于-\alpha,减少噪声传播(负区间的饱和特性可抑制噪声信号,即当x小于零时,其波动会被”平滑压缩“)。因此其可以防止梯度消失的产生。
  • 连续可微:ELU在所有点上都是连续且可微的(当\alpha为1时),有助于梯度在反向传播过程中更顺畅地流动。因此不容易产生梯度消失问题。

使用场景:

  • 对训练稳定性有更高要求:由于ELU的计算开销要高于ReLU和LeakyReLU(特别是训练阶段),但目前没有充分的证据使用ELU会显著提高模型性能,首选使用ELU较少。只能说使用ELU训练过程中的稳定性会更好。

GELU(Gaussian Error Linear Unit)

定义:

GELU(x)=x\cdot \frac{1}{2}[1+erf(\frac{x}{\sqrt{2}})]

 

式中:\frac{1}{2}[1+erf(\frac{x}{\sqrt{2}})]为标准高斯分布的累计分布函数,erf表示误差函数。在程序中,常用其近似公式表示:

GELU(x)\approx 0.5\cdot x\cdot (1+tanh(\frac{2}{\pi }(x+0.044715x^3)))

或:GELU(x)\approx x\cdot Sigmoid(1.702x)(等价于Swish激活函数)

累积分布函数表示标准正态分布的随机变量X小于或等于输入值x的概率

起源论文: Hendrycks D, Gimpel K. Gaussian error linear units (gelus)[J]. arXiv preprint arXiv:1606.08415, 2016.

[1606.08415] Gaussian Error Linear Units (GELUs)

特点:

  • 连续平滑:不再赘述
  • 自适应门控机制 :GELU 通过其内部的高斯 CDF 组件,实现了一种自适应的门控机制。这意味着 GELU 可以根据输入的属性自动调整激活的量,类似于神经元的开/关切换,即通过CDF,将x进行0~100%间的取舍,这与开关很像,但不是只有开和关。
  • 隐式、数据依赖的正则化机制 :GELU 其通过概率化门控动态调整激活强度,既保留了 ReLU 的稀疏性优势,又具备了类似 Dropout 的泛化增强能力。(直接基于输入值的分布特性决定抑制强度,无实际随机操作)

GELU:数据依赖的隐式自适应正则化
GELU 的正则化强度不是固定的(如 Dropout 的固定概率 p),而是依赖输入 x的统计特性

  • 对噪声(一般而言,噪声的数值分布要远低于特征,如果你噪声比特征的数值还大,你的数据就相当于都是噪声了)或小幅度的输入(x接近 0),GELU 会显著抑制激活值(Φ(x)≈0.5),起到类似噪声过滤的作用,相当进一步屏蔽该噪声或微小特征,防止模型过拟合。

  • 对显著的正/负输入(∣x∣较大),GELU 退化为近似线性/稀疏激活,保留关键特征。

  • 效果:这种动态调整在训练中隐式引导模型关注更重要的特征,降低对噪声的敏感度,从而提升泛化能力。

使用场景: 

  • 与 Swish 的关系:GELU 与 Swish在形式上相似,但 GELU 的理论基础源自高斯误差函数,而 Swish 为经验性设计。当 β=1.702 时,二者近似等价。所以一般而言,使用Swish和GELU的场景可以试试替换,但Swish计算更加简单一些。

  • 任何依赖ReLU和LeakyReLU的模型:在多数任务中,GELU 相比 ReLU 可小幅提升模型精度(约 1-2%),但其优势在深层网络或数据稀缺时更为显著。

  • 自然语言处理(NLP) :GELU 在 BERT、GPT 等大型语言模型中得到广泛应用,这些模型表明,GELU 可以在处理复杂和高维数据时,提供比传统激活函数更好的性能和泛化能力。GELU 能够提高变换器模型的性能,这使它成为最先进的 NLP 研究和应用的主要工具。

  • 集成Transformer的计算机视觉模型 :GELU 越来越多地被视觉模型所采用,尤其是那些集成了视觉 Transformer(ViT)等 Transformer 架构的模型。对于图像分类和物体检测等任务,GELU 可以增强模型学习复杂视觉特征的能力。


Swish(Self-Gated Sigmoid Activation Function)

定义:

Swish(x)=x\cdot sigmoid(\beta x)

 

Swish,即自适应sigmoid函数,其中,β 是可学习的参数。

起源论文:Ramachandran P, Zoph B, Le Q V. Searching for activation functions[J]. arXiv preprint arXiv:1710.05941, 2017. 

[1710.05941] Searching for Activation Functions

特点

  • 带有自适应调节因子:Swish 将输入值 x 与经过 sigmoid(βx) 激活后的值相乘,这里的 β 是一个可训练的参数。这使得 Swish 函数能够根据训练数据自动调整自身,增强其拟合复杂数据分布的能力。

  • 非单调且平滑特性:与其他大部分的激活函数不同,Swish 是非单调的,其曲线更平滑,这种非线性特性有助于模型在更多复杂场景下具备良好的泛化能力。其导数f'(x)=\sigma (\beta x)+\sigma (\beta x)(1-\sigma (\beta x)),正负区间均保持非零梯度,不容易产生梯度消失。

使用场景

  • 深层网络架构:如 Transformer、ResNet 等超深模型,利用其平滑梯度和自适应特性提升训练稳定性。在图像分类、目标检测等任务中,Swish 常优于 ReLU,尤其在模型需要强非线性表达能力时。当模型出现神经元死亡或梯度消失时,可尝试替换 ReLU 为 Swish 以验证效果提升。

注:

参数初始化:β 通常初始化为 1(经验值),若作为可训练参数,可采用小随机值(如均匀分布)以促进探索。

变体版本Swish-1:固定 β=1,省去参数学习,计算成本较低且性能接近原版。原始版本的EfficientNet采用的激活函数就是Swish-1;此外,Swish 和 SiLU(Sigmoid-weighted Linear Unit)数学形式一致,但 SiLU 通常指固定β=1 的版本。

硬件优化问题:部分框架(如 TensorFlow)对 Swish 的 Sigmoid 计算进行硬件级优化(如查表近似),缓解计算瓶颈。

参数共享策略:β 具有两种设置,作为全局参数(整个网络共享)或层级参数(每层独立),需要留意。

Softplus Fuction

定义:

softplus(x)=ln(1+e^x)

 

起源论文:

特点:

  • 平滑近似、渐进线性:Softplus 是 ReLU 函数的平滑近似。它在整个范围内都是可导的,这使得它在反向传播过程中能够提供稳定的梯度。当输入值较大时,Softplus 函数的输出近似于线性。

使用场景:

  • VAE(变分自编码器):在VAE中,softplus用于参数化潜在空间的方差。由于softplus的输出总是非负的,这确保了方差的正定性,符合概率模型的要求。
  • GANs(生成对抗网络):在某些GAN模型中,softplus用于参数化logits,帮助生成更加清晰和区分的概率分布。这对于GAN生成逼真的数据至关重要。

VAE(Variational Autoencoder),即变分自编码器,是一种深度生成模型,它结合了自编码器(Autoencoder)和变分推断(Variational Inference)的技术。其 在数据增强、艺术创作、图像生成、文本生成、语音生成等领域具有广泛应用(没错,StableDiffusion系列的模型)。

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

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

相关文章

AIGC图生视频保姆级教程

一、AI文生图高阶技巧 推荐工具 ▸ MidJourney&#xff08;艺术感最强&#xff09; ▸ DALLE 3&#xff08;与ChatGPT深度联动&#xff09; ▸ Leonardo.ai&#xff08;精细化参数控制&#xff09; 核心策略 提示词架构&#xff1a; [主体描述][环境氛围][镜头语言][风格参数…

下载安装运行测试开源vision-language-action(VLA)模型OpenVLA

1. 安装 项目官网OpenVLA 首先按照官网提示的以下代码&#xff0c;执行创建环境->安装最小依赖->git克隆项目等 # Create and activate conda environment conda create -n openvla python3.10 -y conda activate openvla# Install PyTorch. Below is a sample comma…

【Zookeeper如何实现分布式锁?】

Zookeeper如何实现分布式锁? 一、ZooKeeper分布式锁的实现原理二、ZooKeeper分布式锁的实现流程三、示例代码四、总结一、ZooKeeper分布式锁的实现原理 ZooKeeper是一个开源的分布式协调服务,它提供了一个分布式文件系统的接口,可以用来存储和管理分布式系统的配置信息。 …

【MySQL】环境变量配置

环境变量英文名SystemRoot&#xff0c;直译为“系统总&#xff08;根&#xff09;目录"&#xff0c;主要指明操作系统的重要目录在哪里。那么配置MySQL的环境变量&#xff0c;就是在程序运行时&#xff0c;告诉操作系统你的MySQL目录位置。 复制MySQL安装目录&#xff1a;…

为AI聊天工具添加一个知识系统 之103 详细设计之44 自性三藏 之4 祖传代码 之2

本文要点 要点 前面的所有讨论都是为了给出我的设计项目&#xff08;为使用AI聊天工具的聊天者 开挂一个知识系统&#xff09; 的祖传代码 的完整设计&#xff0c;其中 的“槽”&#xff08;占位符变量&#xff09;的 库元&#xff08;宝性和自性creator -本俱 替换内容标准模…

假面与演员:到底是接口在使用类,还是类在使用接口?编程接口与物理接口的区别又是什么?

前言&#xff1a;本篇文章解释了接口学习过程中的2个常见问题&#xff0c;一个是“为什么是类在使用接口”&#xff0c;另一个一个是“编程接口与物理接口的差异源于所处的抽象层次和交互模式的不同”&#xff0c;旨在揭示编程接口的本质。 Part1.是类在使用接口 当学习接口时…

C# 添加图标

一、前言 为应用程序添加图标是优化用户界面、提升应用辨识度的重要操作。合适的图标能帮助用户快速识别和区分不同应用&#xff0c;增强应用的易用性和专业性。 本指南旨在为你提供详细、易懂的步骤&#xff0c;教你如何为应用程序的窗体添加图标。从图标素材的获取到具体的…

Docker 入门与实战:从安装到容器管理的完整指南

&#x1f680; Docker 入门与实战&#xff1a;从安装到容器管理的完整指南 &#x1f31f; &#x1f4d6; 简介 在现代软件开发中&#xff0c;容器化技术已经成为不可或缺的一部分。而 Docker 作为容器化领域的领头羊&#xff0c;以其轻量级、高效和跨平台的特性&#xff0c;深…

HCIA项目实践---ACL访问控制列表相关知识和配置过程

十 ACL访问控制列表 1 策略的概念 在网络连通之后&#xff0c; 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上&#xff0c;匹配流量&#xff0c;执行相应的动作。&#xff08;流量流入或者流出的接口并不是一个固定的概念而是一个相对的…

细说STM32F407单片机RTC入侵检测和时间戳的原理及使用方法

目录 一、入侵检测的功能 二、示例功能 三、项目设置 1、晶振、DEBUG、CodeGenerator、USART6、KEYLED 2、RTC &#xff08;1&#xff09;设置RTC的模式。 &#xff08;2&#xff09;General、Time、Date\Wake Up分组 &#xff08;3&#xff09;Tamper分组 1&#xff…

搜狗浏览器卸载教程

需求背景 今天发现geek居然无法卸载搜狗浏览器&#xff0c;作为一个老司机&#xff0c;这是不允许的。如果你使用geek或者windows的卸载&#xff0c;或者直接在它的安装包的Uninstall.exe中卸载&#xff0c;他走到100%就一直不动了。那玩意是假的。 卸载教程 结束 -----华丽的…

音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现

一、引言 由《音视频入门基础&#xff1a;RTP专题&#xff08;2&#xff09;——使用FFmpeg命令生成RTP流》可以知道&#xff0c;推流端通过下面FFmpeg命令可以将一个媒体文件转推RTP&#xff0c;生成RTP流&#xff1a; ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec cop…

STM32 串口转 虚拟串口---实现USB转串口功能

一&#xff0c;USART与UART 区别 USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff09;通用同步/异步串行接收/发送器 相较于UART&#xff1a;通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;多了…

【进程与线程】Linux 线程、同步以及互斥

每个用户进程有自己的地址空间。 线程是操作系统与多线程编程的基础知识。 系统为每个用户进程创建一个 task_struct 来描述该进程&#xff1a;该结构体中包含了一个指针指向该进程的虚拟地址空间映射表&#xff1a; 实际上 task_struct 和地址空间映射表一起用来表示一个进程…

胶囊网络动态路由算法:突破CNN空间局限性的数学原理与工程实践

一、CNN的空间局限性痛点解析 传统CNN的瓶颈&#xff1a; 池化操作导致空间信息丢失&#xff08;最大池化丢弃85%激活值&#xff09;无法建模层次空间关系&#xff08;旋转/平移等变换不敏感&#xff09;局部感受野限制全局特征整合 示例对比&#xff1a; # CNN最大池化示例…

当pcie设备变化时centos是否会修改网络设备的名称(AI回答)

当pcie设备变化时centos是否会修改网络设备的名称 在CentOS&#xff08;以及其他基于Linux的操作系统&#xff09;中&#xff0c;网络接口的命名通常遵循特定的规则&#xff0c;尤其是在使用PCIe设备&#xff08;如网络适配器&#xff09;时。网络接口的命名通常基于设备的物理…

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能&#xff0c;有背景渐变色&#xff0c;发布功能有的呢&#xff0c;已支持图片上传功能&#xff0c;表情和投票功能开发中&#xff08;请期待&#xff09;。下面是一个更高级的微信小程序实现&#xff0c;包含以下功能&#xff1a;…

Web后端 - Maven管理工具

一 Maven简单介绍 Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 Maven的作用 二 Maven 安装配置 依赖配置 依赖传递 依赖范围 生命周期 注意事项&#xff1a;在同一套生命周期中&#xff0c;当运行后面的阶段时&#xff0c;前面的阶段都…

20250217-POMO笔记

文章目录 前言一、伪代码一&#xff1a;POMO Training二、伪代码二&#xff1a;POMO Inference三、POMO注意力模型3.1、自注意力机制3.2、AM模型 前言 以下主要讲解两个算法的伪代码以及注意力模型。 一、伪代码一&#xff1a;POMO Training POMO Training是POMO模型训练的伪…

JavaEE-SpringBoot快速入门

文章目录 本节目标Maven什么是Maven创建一个Maven项目maven项目功能maven的依赖管理全球仓库, 私服, 本地服务器, 配置国内镜像 第一个SpringBoot项目创建项目运行SpringBoot程序 SpringBoot原理初步Web服务器 总结 本节目标 了解什么是maven, 配置国内源使用Springboot创建项…