神经网络 - 激活函数(ReLU 函数)

一、ReLU函数:

ReLU(Rectified Linear Unit,修正线性单元),也叫 Rectifier 函数 ,是目前深度神经网络中经常使用的激活函数,ReLU 实际上是一个斜坡(ramp)函数,其定义为:

   也即:   ReLU(x)=max(0,x).

(一)如何理解ReLU函数

  1. 基本概念

    • 对于任意输入 x,如果 x 小于0,ReLU 的输出为0;如果 x 大于或等于0,输出就是 x 本身。
    • 这种简单的“截断”操作使得ReLU函数具有非线性特性,同时计算非常高效。
  2. 引入非线性

    • 在神经网络中,如果只使用线性变换(例如加权求和),多个线性层的组合依然是线性变换,无法捕捉数据中的复杂非线性关系。
    • ReLU函数的非线性性质使得网络能够学习和表示复杂的非线性映射,从而提高模型的表达能力。
  3. 稀疏激活

    • 当输入为负时,ReLU输出0,这就导致在某些层中只有一部分神经元被激活。
    • 这种稀疏性不仅可以提高计算效率,还能在一定程度上减轻过拟合问题。
  4. 梯度传播

    • ReLU函数在 x>0 时的导数为1,使得梯度传播时不会因激活函数本身导致梯度衰减。
    • 但在 x<0 的区域,其导数为0,这可能会导致“死神经元”问题,即某些神经元长时间不更新。为了解决这个问题,后来发展出了改进版本,如 Leaky ReLU 和 Parametric ReLU。
  5. 直观理解

    • 可以将ReLU函数看作是一扇“开关”:只有当输入足够大(大于0)时,“开关”才会打开,让信号通过;否则,“关掉”信号,不让它传递下去。
    • 这种机制简单直观,且在实际神经网络中表现出色,尤其在深层网络中能够加速训练和改善梯度传播。
  6. 优缺点

       (1)优点:

         采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效。

         ReLU 函数也被认为具有生物学合理性(Biological Plausibility),比如单侧抑 制、宽兴奋边界(即兴奋程度可以非常高)。在生物神经网络中,同时处于兴奋状态的神经元非常稀疏。人脑中在同一时刻大概只有 1% ∼ 4% 的神经元处于活跃状态。Sigmoid 型激活函数会导致一个非稀疏的神经网络,而 ReLU 却具有很好的稀疏性,大约 50% 的神经元会处于激活状态。

          在优化方面,相比于 Sigmoid 型函数的两端饱和,ReLU 函数为左饱和函数, 且在 𝑥 > 0 时导数为 1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。

        (2)缺点:

           ReLU 函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移, 会影响梯度下降的效率。

           此外,ReLU 神经元在训练时比较容易“死亡”。在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个 ReLU 神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是 0,在以后的训练过程中永远不能被激活.这种现象称为死亡 ReLU 问题(Dying ReLU Problem),并且也有可能会发生在其他隐藏层。

(二)举例说明

例子1:单个神经元的激活
假设一个神经元计算得到的加权和 zz 为:

  • 如果 z=−2,则 ReLU(-2) = 0;
  • 如果 z=0,ReLU(0) = 0;
  • 如果 z=3.5,ReLU(3.5) = 3.5。

这意味着只有当神经元收到正向足够强的激活时,才会有正输出,否则输出为0。

例子2:深度网络中的应用
在卷积神经网络(CNN)中,每层卷积操作后通常会加上ReLU激活函数。假设某层卷积后的输出是一个特征图,其中包含正值和负值。经过ReLU激活后,所有负值会被截断为0,只保留正值部分。这不仅引入了非线性,还使得特征图变得稀疏,从而有助于提高网络的表达能力和减少计算量。

ReLU函数是一种简单而有效的激活函数,通过将负输入截断为0,保留正输入原值,从而实现非线性映射。它具有计算简单、梯度稳定、稀疏激活等优点,在深度神经网络中得到广泛应用。理解ReLU函数有助于深入认识神经网络的非线性特性和梯度传递机制。

二、ReLU函数的变种

在实际使用中,为了避免ReLU函数的缺点,有几种 ReLU 的变种也会被广泛使用,下面我们逐一介绍。

(一)带泄露的 ReLU

带泄露的 ReLU(Leaky ReLU)是一种改进版的 ReLU 激活函数,其主要目的是解决传统 ReLU 的“死神经元”问题。

1. 标准 ReLU 的问题

  • 标准 ReLU 定义

    当 x≥0 时,输出 x;当 x<0 时,输出 0。

  • 死神经元问题
    如果一个神经元在训练过程中大量接收到负值,标准 ReLU 会将其输出全部截断为 0,且梯度为 0,导致该神经元长时间不更新,进而“死亡”。

2. 带泄露的 ReLU 的原理

  • 定义
    带泄露的 ReLU 改进了标准 ReLU,对于 x<0 的部分,不再输出 0,而是输出一个很小的线性值。常见定义为:

    其中 α 是一个很小的正数,通常取值如 0.01。

        LeakyReLU(𝑥) = max(0, 𝑥) + α min(0, 𝑥),

        其中 α 是一个很小的常数,比如 0.01。当 α < 1 时,带泄露的 ReLU 也可以写为

        LeakyReLU(𝑥) = max(𝑥, α𝑥)(相当于是一个比较简单的 maxout 单元)       

  • 作用
    这样,即使输入为负,神经元也会产生一个小的负输出,并且其梯度为 α\alpha(而非0),从而使得这些神经元在训练过程中仍能接收梯度并更新参数,缓解“死神经元”问题。

3. 直观理解

  • 软性“泄露”
    想象标准 ReLU 就像是一扇只有“关”或“开”的门——当输入为负时门完全关闭(输出为0);而带泄露的 ReLU 就像是一扇带有微小“泄露”的门,即使门基本关闭(输入为负),也会让少量信号泄露出去,从而保持一定的信息流动和梯度传递。

  • 梯度传递
    在 x<0 时,标准 ReLU 的梯度为0,可能导致该神经元永远无法恢复;而 Leaky ReLU 使得即使输入为负,梯度仍然为 α\alpha,保证了神经元有机会在未来输入正信号时重新激活。

  • 标准 ReLU 的梯度为0时,为什么可能导致该神经元永远无法恢复?

      (1)权重无法更新
反向传播过程中,参数(权重和偏置)的更新依赖于梯度信息。如果梯度为0,那么对应权重不会得到任何调整,神经元无法根据数据调整其参数。

     (2)“死”神经元问题
如果一个神经元长时间处于 x<0x < 0x<0 的区域,它的输出始终为0,且梯度为0,这样即使后续输入发生变化,也无法通过梯度更新使该神经元输出恢复到非零状态。这种现象被称为“死神经元”(Dead ReLU)问题,导致该神经元在整个训练过程中失去作用。

     (3)无法捕捉信息
一个“死”神经元不再对任何输入产生响应,从而降低了网络的表达能力和整体性能。

4. 举例说明

例子1:单个神经元输出对比

例子2:深层神经网络中的应用
在一个深度神经网络中,假设某一层大量使用标准 ReLU,部分神经元由于长期接收负输入而“死亡”,导致模型性能下降。如果替换为 Leaky ReLU,即使在负输入区域也能获得微弱梯度,整个网络的训练更加稳定,最终可能得到更高的准确率。

带泄露的 ReLU(Leaky ReLU)通过在 x<0 时输出 αx(而不是0),解决了标准 ReLU 的死神经元问题。它确保在负输入区域仍有微小的梯度传递,从而让神经元有机会在未来恢复激活。通过这个改进,深度神经网络能够更稳定地训练,并提高模型的整体性能。

(二)带参数的 ReLU

PReLU𝑖(𝑥) = = max(0, 𝑥) + 𝛾𝑖 min(0, 𝑥),

带参数的 ReLU(Parametric ReLU,简称PReLU)是一种 ReLU 激活函数的改进版本,其主要区别在于负半轴上的斜率不再固定,而是作为一个可学习的参数。这种设计允许网络在训练过程中自动调整负输入区域的响应程度,从而在一定程度上缓解“死神经元”问题,并提高模型的表达能力。

1. 基本定义

  • 标准 ReLU

    当 x < 0 时,输出为0;当 x≥0 时,输出为 x。

  • 带参数的 ReLU (PReLU)
    定义为:

    其中 α 是一个可学习的参数。
    与 Leaky ReLU 类似,Leaky ReLU 通常固定 α 为一个小值(例如0.01);而 PReLU 则允许 α在训练过程中通过反向传播自动调整,以适应具体任务和数据的需要。

  • 也可以这样理解带参数的 ReLU PReLU

       带参数的 ReLU(Parametric ReLU,PReLU)引入一个可学习的参数,不同神经元可以有不同的参数 .对于第 𝑖 个神经元,      

其中 𝛾_𝑖 为 𝑥 ≤ 0 时函数的斜率.因此,PReLU 是非饱和函数。如果 𝛾_𝑖 = 0,那么 PReLU就退化为ReLU。如果𝛾_𝑖 为一个很小的常数,则PReLU可以看作带泄露的 ReLU。PReLU 可以允许不同神经元具有不同的参数,也可以一组神经元共享一 个参数。

2. 为什么需要带参数的 ReLU

  • 缓解死神经元问题
    在标准 ReLU 中,若神经元长时间接收负输入,其输出恒为0,梯度也为0,导致该神经元无法更新权重(“死神经元”)。PReLU 允许在负区域也有非零梯度(梯度为 α),使得即使在负输入时神经元也能获得更新信号。

  • 自适应学习
    让 α 成为可学习的参数,使得网络可以根据数据自动选择在负区域的最佳激活强度,而不必依赖人工设定的常数。这为网络提供了更大的灵活性,有助于提升模型的性能。

       与Leaky ReLU最大的区别,这个点请注意!!!

  • 提高模型表达能力
    在某些任务中,允许负输入部分有适度的激活(而不是完全屏蔽)能够更好地捕捉数据中的特征分布,从而提高整个网络的表达能力。

3. 举例说明

例子1:单个神经元输出比较

假设输入 x 的取值范围较广,对于某个神经元:

  • 当 x=2 时:

    • 标准 ReLU 输出:ReLU(2)=2
    • PReLU 输出(假设 α=0.2):PReLU(2)=2
      对于正输入,两者输出一致。
  • 当 x=−3 时:

    • 标准 ReLU 输出:ReLU(−3)=0
    • PReLU 输出(α=0.2):PReLU(−3)=0.2×(−3)=−0.6
      这里 PReLU 允许负输入传递一部分信息,同时在反向传播中提供非零梯度(即 0.2),从而有助于该神经元在未来输入变化时能够更新权重。

例子2:深度网络中的应用

在一个深度神经网络中,假设某层使用标准 ReLU,由于训练数据或权重初始化问题,部分神经元可能经常接收负输入,导致它们长时间输出0,无法恢复。如果这一层改为使用 PReLU,尽管负输入仍较低,但神经元输出为 αx(例如 α=0.1),这样即使负输入,神经元也会有微弱的激活,同时反向传播的梯度也不会完全消失。这种机制有助于保持神经元的活跃性,提高整个网络的训练效果和泛化性能。

带参数的 ReLU(PReLU)是一种改进的激活函数,通过将负半轴的斜率设为可学习参数 α,使得神经元在负输入区域仍能保持一定的激活和梯度传递,从而缓解“死神经元”问题,并使网络能够自适应地调整激活行为。
这种灵活性提高了模型的表达能力和训练稳定性,在实际应用中,PReLU 常被用在深度神经网络中,以期达到更好的性能。

4. 单个神经元的激活比较(Leaky ReLU vs PReLU)

例子:

  • 假设一个神经元的输入 x 可能为正也可能为负。

  • 使用 Leaky ReLU(例如 α=0.01):

    • 当 x=−5 时,输出为 0.01×(−5)=−0.05;
    • 当 x=3 时,输出为3。
      这里,负输入处的斜率固定为0.01,无论训练数据如何变化。
  • 使用 PReLU

    • 初始时可能设置 α为0.25,但在训练过程中,网络会根据数据自动调整这个参数。
    • 当 x=−5 时,如果训练过程中认为较小的负斜率更合适,可能最终调整为 α=0.05,输出为 −0.25;或者如果需要更大的斜率,可能调整为 α=0.3,输出为 −1.5。
      这种自适应调整使得模型可以更灵活地处理负输入数据。

(三)ELU 函数

ELU(Exponential Linear Unit,指数线性单元)是一种常用于神经网络中的激活函数,旨在同时获得ReLU的计算效率和缓解“死神经元”及梯度消失问题的优势。其定义通常为:

其中 α 是一个正的超参数,通常设置为1.0。

亦可这样理解,ELU(Exponential Linear Unit,指数线性单元)是一个近似的零中心化的非线性函数:

其中 𝛾 ≥ 0 是一个超参数,决定 𝑥 ≤ 0 时的饱和曲线,并调整输出均值在 0 附近.

如何理解ELU函数

  1. 正区间行为

    • 当 x > 0 时,ELU函数与ReLU函数类似,直接输出 x;
    • 这部分保留了ReLU的简单和高效计算的优点。
  2. 负区间行为

    • 当 x≤0 时,ELU输出为 α(e^x - 1);
    • 对于较大的负输入,e^x 迅速趋近于0,故 ELU(x)→−α;
    • 这意味着函数输出不会一直保持为0,而是趋于一个负的饱和值,从而使得负区间的梯度不为零,缓解了“死神经元”问题,同时保持一定的非线性。
  3. 平滑性和连续性

    • ELU函数在 x=0 处连续且可微,与ReLU相比具有更平滑的梯度,这有助于训练过程中梯度的稳定传递和模型的收敛。
  4. 带来的优势

    • 改善梯度传播:由于在负区间不完全截断梯度,ELU可以在某种程度上缓解梯度消失问题,使得深层网络训练更为稳定。
    • 加快收敛:平滑的负区域和输出的零中心化(因为ELU的输出范围是 (−α,∞) )有助于加速网络收敛。
    • 抗噪声性:通过允许负激活值,ELU为网络提供了更丰富的表达能力和鲁棒性。

举例说明

例子1:数值行为比较

这样可以看出,正区间表现线性,而负区间输出平滑地趋向于-1,而不是突兀地截断为0。

例子2:在神经网络中的应用
在一个深层神经网络中,如果使用标准ReLU,可能会遇到某些神经元在负输入时长期输出0,导致梯度消失,从而影响模型训练。而如果采用ELU函数,即使输入为负,神经元也能输出非零值(接近-α),使得这些神经元在反向传播时仍能接收梯度更新,从而有助于模型在训练过程中保持较好的信息流动和稳定性。
ELU函数通过在正输入时保留线性特性、在负输入时采用指数映射并趋向于一个负饱和值,结合了ReLU的简单高效和改善负区间梯度的优势。它的平滑性和连续性有助于缓解梯度消失问题,加速网络收敛,并在实际应用中提升模型的性能和鲁棒性。

(四)Softplus 函数

Softplus 函数是一种常见的激活函数,定义为:

Softplus 函数其导数刚好是 Logistic 函数。Softplus 函数虽然也具有单侧抑制、宽兴奋边界的特性,却没有稀疏激活性。

它可以被看作是 ReLU(Rectified Linear Unit)的平滑(光滑)近似,具有以下特点和理解方式:

  1. 平滑性与连续性

    • 与 ReLU 不同,ReLU 在 x=0 处不可导(梯度不连续),而 Softplus 函数是光滑且处处可微的。这使得在某些需要平滑梯度传递的场景中,Softplus 更加合适。
  2. 输出范围与行为

  3. 梯度特点

    • Softplus 的导数为 也就是 Sigmoid 函数。这意味着 Softplus 在反向传播中提供平滑且非零的梯度,有助于缓解梯度消失问题。
  4. 直观理解与应用

    • 可以把 Softplus 想象为“软化”后的 ReLU。ReLU 会硬性地将所有负值截断为0,而 Softplus 则会以平滑的方式逐渐将负值压缩到接近0,同时在正值区域近似保持线性。这种平滑过渡可以使网络在训练过程中更加稳定。
    • 在某些应用中,如深度神经网络中,当需要更平滑的梯度传播或者为了避免在激活函数处产生梯度不连续的问题时,可以选择 Softplus 作为激活函数。

Softplus 函数通过 log(1+e^x) 的形式实现了对 ReLU 的平滑近似,既能在正区间近似线性,又能在负区间平滑地趋近于0,同时保持处处可微。它的梯度正好是 Sigmoid 函数,这为梯度下降和反向传播提供了平滑、稳定的梯度,从而帮助神经网络更高效地学习。

三、ReLU、Leaky ReLU、PReLU、ELU 以及 Softplus 函数的对比

结合图示,通过表格对比如下:

函数名称数学表达式核心特点优点缺点适用场景
ReLUf(x)=max⁡(0,x)简单分段线性1. 计算高效;
2. 缓解梯度消失;
3. 稀疏激活。
1. 负区间梯度为零(神经元死亡);
2. 输出非零中心化。
大多数深度网络(默认选择)
Leaky ReLU引入固定负斜率1. 缓解神经元死亡;
2. 保留计算高效性。
1. 需手动调参 αα;
2. 输出仍非零中心化。
需避免神经元死亡的场景(如GAN)
PReLU参数化负斜率1. 自适应学习负区间斜率;
2. 比Leaky ReLU更灵活。
1. 增加参数量;
2. 可能过拟合。
复杂模型(如深层CNN)
ELU负区间指数平滑1. 输出均值接近零,加速收敛;
2. 缓解神经元死亡。
1. 计算指数复杂度稍高;
2. 需调参 αα。
深层网络或噪声敏感任务
Softplus平滑近似ReLU1. 处处可导;
2. 输出更柔和。
1. 计算复杂(含指数和对数);
2. 梯度衰减快(类似Sigmoid)。
理论分析或需平滑性的模型

选择建议

  • 通用场景:ReLU(简单高效,默认选择)。

  • 防止神经元死亡:Leaky ReLU(轻量)或 ELU(深层网络)。

  • 高性能复杂模型:PReLU(自适应学习负斜率,如ResNet)。

  • 理论平滑性需求:Softplus(实际应用较少)。

  • 噪声敏感任务:ELU(如医疗图像分析)。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(十 一)趣学设计模式 之 组合模式!

目录 一、 啥是组合模式&#xff1f;二、 为什么要用组合模式&#xff1f;三、 组合模式的实现方式四、 组合模式的优缺点五、 组合模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;可以多多支…

【MySQL】事务二

事务二 1.数据库并发的场景2.读-写 2.1 3个记录隐藏字段2.2 undo日志2.3 模拟 MVCC2.4 Read View2.5 RR 与 RC的本质区别 3.读-读4.写-写 点赞???收藏???关注??? 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧??? 关于事务的所有知识上篇博客我们都说过了&…

面向AI 的前端发展及初识大模型

AI带来的开发范式迁移 随着AI的涌现&#xff0c;对前端的发展也有着非常大的影响&#xff0c;总结过去前端的发展路径&#xff0c;目前应该属于又一次的大规模的开发范式迁移阶段。上一个阶段是从jquery到React/Vue/Angular迁移&#xff08;jquery之前的就不讨论了&#xff09…

本地部署大语言模型-DeepSeek

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型&#xff0c;具备数学推理、代码生成等深度能力&#xff0c;堪称"AI界的六边形战士"。 Hostease AMD 9950X/96G/3.84T NVMe/1G/5IP/RTX4090 GPU服务器提供多种计费模式。 DeepSeek-R1-32B配置 配置项 规…

第三百七十二节 JavaFX教程 - JavaFX HTMLEditor

JavaFX教程 - JavaFX HTMLEditor HTMLEditor控件是一个富文本编辑器&#xff0c;具有以下功能。 粗体斜体下划线删除线字体系列字体大小前景色背景颜色缩进项目符号列表编号列表对齐水平线复制文本片段粘贴文本片段 HTMLEditor类返回HTML字符串中的编辑内容。 创建HTML编辑器…

java后端开发day25--阶段项目(二)

&#xff08;以下内容全部来自上述课程&#xff09; 1.美化界面 private void initImage() {//路径分两种&#xff1a;//1.绝对路径&#xff1a;从盘符开始写的路径 D:\\aaa\\bbb\\ccc.jpg//2.相对路径&#xff1a;从当前项目开始写的路径 aaa\\bbb\\ccc.jpg//添加图片的时…

Vscode通过Roo Cline接入Deepseek

文章目录 背景第一步、安装插件第二步、申请API key第三步、Vscode中配置第四步、Deepseek对话 背景 在前期介绍【IDEA通过Contince接入Deepseek】步骤和流程&#xff0c;那如何在vscode编译器中使用deepseek&#xff0c;记录下来&#xff0c;方便备查。 第一步、安装插件 在…

计算机毕业设计SpringBoot+Vue.js智能无人仓库管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

DeepSeek如何快速开发PDF转Word软件

一、引言 如今&#xff0c;在线工具的普及让PDF转Word成为了一个常见需求&#xff0c;常见的PDF转Word工具有收费的WPS&#xff0c;免费的有PDFGear&#xff0c;以及在线工具SmallPDF、iLovePDF、24PDF等。然而&#xff0c;大多数免费在线转换工具存在严重隐私风险——文件需上…

【漫话机器学习系列】109.线性无关(Linearly Independent)

1. 什么是线性无关&#xff1f; 在线性代数中&#xff0c;线性无关是描述向量组的一个重要概念。如果一组向量中的任何一个向量不能由该组中其他向量的线性组合表示出来&#xff0c;那么这些向量就是线性无关的。具体而言&#xff0c;若向量 ​ 是线性无关的&#xff0c;那么不…

蓝桥杯 灯笼大乱斗【算法赛】

问题描述 元宵佳节&#xff0c;一场别开生面的灯笼大赛热闹非凡。NN 位技艺精湛的灯笼师依次落座&#xff0c;每位师傅都有相应的资历值&#xff0c;其中第 ii 位师傅的资历值为 AiAi​。从左到右&#xff0c;师傅们的资历值逐级递增&#xff08;即 A1<A2<⋯<ANA1​&l…

Android15 Camera HAL Android.bp中引用Android.mk编译的libB.so

背景描述 Android15 Camera HAL使用Android.bp脚本来构建系统。假设Camera HAL中引用了另外一个HAL实现的so &#xff08;例如VPU HAL&#xff09;&#xff0c; 恰巧被引用的这个VPU HAL so是用Android.mk构建的&#xff0c;那Camera HAL Android.bp在直接引用这个Android.mk编…

计算机视觉(opencv-python)入门之图像的读取,显示,与保存

在计算机视觉领域&#xff0c;Python的cv2库是一个不可或缺的工具&#xff0c;它提供了丰富的图像处理功能。作为OpenCV的Python接口&#xff0c;cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …

鸿蒙5.0实战案例:基于原生能力获取视频缩略图

往期推文全新看点&#xff08;文中附带全新鸿蒙5.0全栈学习笔录&#xff09; ✏️ 鸿蒙&#xff08;HarmonyOS&#xff09;北向开发知识点记录~ ✏️ 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝 问题展示解决办法 问题展示 在使用docker中的consul服务的时候&#xff0c;通过命令行注册相应的服务&#xff08;比如cloudwego项目的demo_proto以及user服务&#xff09;失败。 解决办法 经过分析&#xff0c;是…

随机树算法 自动驾驶汽车的路径规划 静态障碍物(Matlab)

随着自动驾驶技术的蓬勃发展&#xff0c;安全、高效的路径规划成为核心挑战之一。快速探索随机树&#xff08;RRT&#xff09;算法作为一种强大的路径搜索策略&#xff0c;为自动驾驶汽车在复杂环境下绕过静态障碍物规划合理路径提供了有效解决方案。 RRT 算法基于随机采样思想…

数据集笔记:新加坡停车费

data.gov.sg 该数据集包含 新加坡各停车场的停车费&#xff0c;具体信息包括&#xff1a; 停车场名称&#xff08;Carpark&#xff09;&#xff1a;如 Toa Payoh Lorong 8、Ang Mo Kio Hub、Bras Basah Complex 等。停车区域类别&#xff08;Category&#xff09;&#xff1a…

netty如何处理粘包半包

文章目录 NIO中存在问题粘包半包滑动窗口MSS 限制Nagle 算法 解决方案 NIO中存在问题 粘包 现象&#xff0c;发送 abc def&#xff0c;接收 abcdef原因 应用层&#xff1a;接收方 ByteBuf 设置太大&#xff08;Netty 默认 1024&#xff09;滑动窗口&#xff1a;假设发送方 25…

设计模式之责任链模式

引言 在职场中&#xff0c;请假流程大家都再熟悉不过&#xff1a;申请 1 至 2 天的假期&#xff0c;只需直属主管审批即可&#xff1b;若要请假 3 至 5 天&#xff0c;就需部门负责人进行复核&#xff1b;而超过 5 天的假期申请&#xff0c;则必须由总经理最终定夺。要是遇到超…

【漫话机器学习系列】112.逻辑回归(Logistic Regression)

逻辑回归&#xff08;Logistic Regression&#xff09;详解 1. 逻辑回归简介 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛用于二分类任务的统计和机器学习方法&#xff0c;尽管它的名字中带有“回归”&#xff0c;但它实际上是一种分类算法。 在逻辑回归…