深度学习中常用激活函数介绍

深度学习中常用激活函数介绍

在深度学习中,激活函数的作用主要是引入非线性特性,提高模型的表达能力。具体如下:
  1. 解决线性不可分问题:激活函数可以将输入特征的复杂度提升,使得神经网络能够处理非线性问题,从而增强网络的分类和回归能力。
  2. 决定神经元激活状态:激活函数决定了某个神经元是否被激活,即输出值是否有用。这有助于网络学习到更加复杂的数据模式。
  3. 反向传播算法的基础:激活函数是实现反向传播算法的基础,它允许误差从输出层向输入层传递,使得网络能够通过梯度下降等方法进行有效的权重更新。
  4. 增加模型的非线性:通过引入非线性激活函数,可以构建更深的网络结构,使模型能够捕捉到数据的深层次特征。
  5. 影响网络的训练和预测:不同的激活函数具有不同的性质,如饱和性、单调性等,这些性质会影响神经网络的收敛速度和泛化能力。
激活函数的选择:
  1. 理解任务需求
  • 对于分类问题,尤其是二分类问题,Sigmoid 函数是一个不错的选择,因为它可以将输出压缩到0和1之间,表示概率。
  • 对于多分类问题,Softmax 函数通常用于输出层,它可以将多个神经元的输出归一化为概率分布。
  1. 考虑网络架构
  • 对于深度神经网络,ReLU及其变体(如Leaky ReLU、Parametric ReLU)通常是首选,因为它们能够有效缓解梯度消失问题,加速网络训练。
  • 在循环神经网络(RNN)中,Tanh 或 LSTM单元可能更合适,因为它们能够更好地处理序列数据。
  1. 实验验证
  • 不同的激活函数在不同的数据集上表现各异。最佳实践是通过交叉验证来测试不同激活函数的表现,从而选择最适合你模型的那个。
  1. 注意激活函数的性质
  • 考虑到激活函数的饱和性,Sigmoid 和 Tanh 函数在输入值非常大或非常小的时候会饱和,这可能导致梯度消失问题。
  • ReLU函数在输入值为负时输出为零,这可能会导致某些神经元在训练过程中失活,即所谓的“死亡ReLU”现象。
常见激活函数如下:
1. Sigmoid

sigmoid函数将输入变换为(0,1)上的输出。它将范围(-inf,inf)中的任意输入压缩到区间(0,1)中的某个值:

优点:

  1. Sigmoid函数的输出范围是(0,1),这使得它可以用作输出层,为分类问题提供概率估计。
  2. Sigmoid函数容易求导,这使得在反向传播过程中可以轻松计算梯度。
  3. Sigmoid函数具有非线性特性,可以引入非线性因素,使神经网络能够更好地学习和表示复杂的模式。

缺点:

  1. Sigmoid函数存在饱和性问题,当输入的数值过大或过小,函数的梯度会变得非常小,这可能导致训练过程中的梯度消失问题。
  2. Sigmoid函数的输出不是以0为中心的,这可能会影响某些任务的数值稳定性,例如在二元分类问题中。
  3. Sigmoid函数对输入的数值范围非常敏感,如果输入的数值范围过大或过小,都可能影响模型的训练效果。

公式: S i g m o i d ( x ) = 1 1 + e − x Sigmoid(x) = \frac{1}{1 + e^{-x}} Sigmoid(x)=1+ex1

在这里插入图片描述

2. LogSigmoid

优点:

  1. 平滑性:与Sigmoid相似,LogSigmoid激活函数也是平滑的,这有助于减少模型训练时的梯度消失问题。
  2. 输出范围:LogSigmoid的输出范围是(0,1),这使得它非常适合用作神经网络的输出层,特别是在二分类问题中。
  3. 易求导:LogSigmoid函数的求导相对容易,这使得在模型训练过程中进行反向传播变得简单。

缺点:

  1. 不是以0为中心:与Sigmoid函数一样,LogSigmoid的输出不是以0为中心的,这可能导致一些数值稳定性问题。
  2. 饱和性问题:与Sigmoid函数一样,LogSigmoid也存在饱和性问题,即在某些输入下,函数的梯度变得非常小,这可能导致训练困难。

公式: L o g S i g m o i d ( x ) = l o g ( 1 1 + e − x ) LogSigmoid(x) = log(\frac{1}{1 + e^{-x}}) LogSigmoid(x)=log(1+ex1)

在这里插入图片描述

3. Tanh

tanh函数将输入变换为(0,1)上的输出。它将范围(-inf,inf)中的任意输入压缩到区间(0,1)中的某个值:

优点:

  1. 输出范围:Tanh的输出始终在-1到1之间,这使得它在某些应用中能够提供更好的数值稳定性。
  2. 计算效率:Tanh函数的计算相对简单,因此它在一些硬件上可能有更好的计算效率。
  3. 非线性:Tanh是一种非线性函数,能够增强神经网络的表达能力。

缺点:

  1. 不是以0为中心:Tanh的输出不是以0为中心,这可能导致一些数值稳定性问题。
  2. 梯度消失问题:与Sigmoid函数类似,Tanh也存在梯度消失问题。当梯度接近于0时,这会导致训练困难。
  3. 硬饱和问题:当输入值非常大或非常小的时候,Tanh可能会进入硬饱和区,导致梯度接近于0,从而影响模型的训练。

公式: T a n h ( x ) = 1 − e − 2 x 1 + e − 2 x Tanh(x) = \frac{1 - e^{-2x}}{1 + e^{-2x}} Tanh(x)=1+e2x1e2x

在这里插入图片描述

4. ReLu

全称是Rectified Linear Unit。它在输入小于0时输出0,输入大于0时输出等于输入值。

优点:

  1. 计算速度快:由于ReLU激活函数在实现上只需要进行简单的阈值操作,因此计算速度非常快,适合用于大规模的神经网络。
  2. 缓解过拟合:ReLU具有稀疏性,能够有效缓解过拟合问题,提高模型的泛化能力。
  3. 增加非线性:ReLU具有非线性特性,能够增加神经网络的非线性表达能力,使得模型能够更好地学习和表示复杂的输入数据。

缺点:

  1. 负值不激活:ReLU在输入小于0时输出为0,这可能导致神经元在某些情况下无法被激活,从而影响模型的表达能力。
  2. 不稳定梯度:在训练过程中,ReLU的梯度可能会变得非常大或非常小,导致梯度爆炸或梯度消失问题,影响模型的训练效果。
  3. 不适合用于深度网络:在深度网络中,ReLU激活函数可能会导致神经元“死亡”问题,即某些神经元永远不会被激活,从而导致模型无法正确学习和表达数据。

公式: R e L u ( x ) = { x x > 0 0 x <= 0 ReLu(x)= \begin{cases} x& \text{x > 0}\\ 0& \text{x <= 0} \end{cases} ReLu(x)={x0x > 0x <= 0

在这里插入图片描述

5. LeakyReLu

LeakyReLU是一种改进的激活函数,相对于标准的ReLU函数,它引入了一个小的负斜率,使得在输入小于0的情况下,输出不再为0,而是有一个小的非零值。

优点:

  1. 解决神经元死亡问题:由于LeakyReLU允许负数通过,因此可以避免神经元死亡的问题。这有助于提高模型的表达能力,并减少模型训练时的梯度消失问题。
  2. 加速收敛速度:LeakyReLU由于允许负数通过,在训练过程中能够更快地达到收敛状态。这可以缩短模型的训练时间,提高训练效率。
  3. 增加非线性:LeakyReLU具有非线性特性,能够增加神经网络的非线性表达能力,使得模型能够更好地学习和表示复杂的输入数据。

缺点:

  1. 超参数调整:LeakyReLU引入了一个超参数负斜率,需要人工调整。调整不当可能会影响模型的训练效果和收敛速度。
  2. 计算量增加:由于LeakyReLU允许负数通过,因此相对于标准的ReLU函数,其计算量会有所增加。这可能会增加模型的训练时间和内存消耗。
  3. 不稳定性:LeakyReLU的负斜率值需要谨慎选择,如果设置不当,可能会导致模型训练不稳定或者出现其他问题。

公式: L e a k y R e L u ( x ) = { x x > 0 α ∗ x x <= 0 LeakyReLu(x)= \begin{cases} x& \text{x > 0}\\ \alpha * x& \text{x <= 0} \end{cases} LeakyReLu(x)={xαxx > 0x <= 0

在这里插入图片描述

6. PReLu

也称为Parametric ReLU。与LeakyReLU类似,PReLU也允许负数通过,但nn.PReLU的负斜率是一个可学习的参数,可以随着训练过程进行更新。

优点:

  1. 解决神经元死亡问题:与LeakyReLU一样,PReLU允许负数通过,可以避免神经元死亡的问题,提高模型的表达能力。
  2. 增加非线性:PReLU具有非线性特性,能够增加神经网络的非线性表达能力,使得模型能够更好地学习和表示复杂的输入数据。
  3. 可学习的参数:PReLU的负斜率是一个可学习的参数,随着训练过程进行更新。这有助于提高模型的泛化能力和训练效果。

缺点:

  1. 计算量增加:由于PReLU需要额外的参数来存储负斜率,因此相对于标准的ReLU函数,其计算量会有所增加。这可能会增加模型的训练时间和内存消耗。
  2. 超参数调整:虽然PReLU的负斜率是一个可学习的参数,但仍需要人工设定一个初始值。初始值的选择可能会影响模型的训练效果和收敛速度。
  3. 不稳定性:与LeakyReLU一样,PReLU的负斜率值需要谨慎选择,如果设置不当,可能会导致模型训练不稳定或者出现其他问题。

公式: P R e L u ( x ) = { x x > 0 α i ∗ x x <= 0 PReLu(x)= \begin{cases} x& \text{x > 0}\\ \alpha_i * x& \text{x <= 0} \end{cases} PReLu(x)={xαixx > 0x <= 0

在这里插入图片描述

7. ELu

优点:

  1. 避免神经元死亡:与ReLU和LeakyReLU相比,ELU可以避免神经元死亡的问题。由于其负值区域的斜率为负,因此不会出现神经元完全不激活的情况。
  2. 更快收敛:ELU的梯度在输入为负值时相对较大,这有助于加快训练时的收敛速度。
  3. 实现非线性:ELU具有非线性特性,能够增加神经网络的非线性表达能力,使得模型能够更好地学习和表示复杂的输入数据。
  4. 避免梯度消失问题:ELU的输出梯度在输入为负值时较大,而在输入为正值时相对较小。这种特性有助于避免梯度消失问题,从而使得深层神经网络能够更好地训练和收敛。

缺点:

  1. 计算效率较低:由于ELU涉及到指数运算,相对于ReLU和LeakyReLU等线性运算,其计算效率较低。这可能会增加模型的训练时间和内存消耗。
  2. 参数设置问题:ELU涉及到两个可学习的参数,α和β。这两个参数的选择会对模型的训练效果和收敛速度产生影响,需要谨慎设置。
  3. 不稳定性:与ReLU和LeakyReLU相比,ELU的输出范围更大,因此其训练过程中可能会存在不稳定性问题。

公式: E L u ( x ) = { x x > 0 α i ∗ ( e x − 1 ) x <= 0 ELu(x) = \begin{cases} x& \text{x > 0}\\ \alpha_i * (e^x - 1)& \text{x <= 0} \end{cases} ELu(x)={xαi(ex1)x > 0x <= 0

在这里插入图片描述

8. SeLu

全称为Scaled Exponential Linear Unit,是一种神经网络激活函数。

优点:

  1. 自归一化:SELU具有自归一化的特性,这意味着在训练过程中,神经网络的输入和输出会逐渐被归一化,使得网络的参数更新更加稳定。
  2. 避免梯度消失和爆炸:SELU的梯度在输入较小时较大,在输入较大时较小,这有助于避免梯度消失和梯度爆炸问题,使得深层神经网络能够更好地训练和收敛。
  3. 高效计算:相对于其他激活函数,SELU的计算效率较高,因为其涉及到的是简单的数学运算,不需要指数或对数运算。

缺点:

  1. 应用范围有限:虽然SELU具有自归一化的特性,但其在某些问题上的表现并不一定优于其他激活函数,因此其应用范围相对有限。
  2. 需要调整参数:SELU涉及到两个可学习的参数λ和γ,这两个参数的选择会对模型的训练效果和收敛速度产生影响,需要谨慎设置。
  3. 缺乏理论支持:SELU虽然在实际应用中表现良好,但其理论基础相对较弱,仍需要进一步的研究和探索。

公式: S e L u ( x ) = λ { x x > 0 α e x − α x <= 0 SeLu(x) = \lambda\begin{cases} x& \text{x > 0}\\ \alpha e^x - \alpha& \text{x <= 0} \end{cases} SeLu(x)=λ{xαexαx > 0x <= 0

在这里插入图片描述

9. CeLu

优点:

  1. 避免梯度消失:CELU的梯度在输入较小时较大,有助于避免梯度消失问题,使得深层神经网络能够更好地训练和收敛。
  2. 连续可微:CELU是连续可微的,这意味着其可以在整个输入范围内进行微分,而不会出现梯度爆炸或梯度消失的问题。
  3. 计算效率高:CELU的计算过程相对简单,只需要进行指数运算和线性运算,因此其计算效率较高。

缺点:

  1. 参数设置问题:CELU涉及到两个可学习的参数β和α,这两个参数的选择会对模型的训练效果和收敛速度产生影响,需要谨慎设置。
  2. 无法解决梯度爆炸问题:虽然CELU可以避免梯度消失问题,但其无法解决梯度爆炸问题。在某些情况下,梯度可能会变得非常大,导致训练不稳定。
  3. 缺乏广泛应用:相对于其他激活函数,CELU的应用范围相对较窄,主要在一些特定的问题上使用。

公式: C e L u ( x ) = M a x ( 0 , x ) + M i n ( 0 , α ( e x α − 1 ) ) CeLu(x) = Max(0, x) + Min(0, \alpha(e^{\frac{x}{\alpha}} - 1)) CeLu(x)=Max(0,x)+Min(0,α(eαx1))

在这里插入图片描述

10. GeLu

优点:

  1. 避免梯度消失:GELU的梯度在输入较小时较大,有助于避免梯度消失问题,使得深层神经网络能够更好地训练和收敛。
  2. 平滑性:GELU是一种平滑的激活函数,其输出在整个输入范围内变化较为平缓,有助于减少模型训练时的震荡和梯度爆炸问题。
  3. 高效计算:相对于其他激活函数,GELU的计算过程相对简单,只需要进行指数运算和线性运算,因此其计算效率较高。

缺点:

  1. 参数设置问题:GELU涉及到两个可学习的参数β和α,这两个参数的选择会对模型的训练效果和收敛速度产生影响,需要谨慎设置。
  2. 无法解决梯度爆炸问题:虽然GELU可以避免梯度消失问题,但其无法解决梯度爆炸问题。在某些情况下,梯度可能会变得非常大,导致训练不稳定。
  3. 缺乏广泛应用:相对于其他激活函数,GELU的应用范围相对较窄,主要在一些特定的问题上使用。

在这里插入图片描述

11. ReLu6

ReLU6 就是普通的ReLU但是限制最大输出为6,这是为了在移动端设备float16/int8的低精度的时候也能有很好的数值分辨率。

优点:

  1. 避免梯度爆炸:由于ReLU6限制了激活值的范围,因此可以有效地避免梯度爆炸问题,使得模型训练更加稳定。
  2. 计算效率高:如上所述,ReLU6的计算过程相对简单,因此可以提高模型的训练速度。
  3. 在某些问题上表现出色:在一些特定的问题上,例如图像分类和目标检测等任务,ReLU6表现出了良好的性能。

缺点:

  1. 限制了激活值的范围:由于ReLU6将激活值限制在[0,6]的范围内,可能会导致模型表达能力受限,影响模型的泛化能力。
  2. 无法解决梯度消失问题:虽然ReLU6可以避免梯度爆炸问题,但其无法解决梯度消失问题。在某些情况下,梯度可能会变得非常小,导致训练缓慢或者不收敛。
  3. 缺乏理论支持:相对于其他激活函数,ReLU6的理论基础相对较弱,缺乏深入的理论分析和证明。

在这里插入图片描述

12. SiLu

相对于ReLU函数,SiLU函数在接近零时具有更平滑的曲线,并且由于其使用了sigmoid函数,可以使网络的输出范围在0和1之间。这使得SiLU在一些应用中比ReLU表现更好,例如在语音识别中使用SiLU比ReLU可以取得更好的效果。

优点:

  1. 非线性表达能力:SiLU作为一种非线性激活函数,能够引入非线性特性,增加模型的表达能力,有助于提高模型的分类和回归性能。
  2. 平滑性:由于SiLU具有平滑的特性,可以缓解梯度消失或梯度爆炸问题,使得模型训练更加稳定。
  3. 计算效率高:SiLU的计算过程相对简单,具有较低的复杂度,可以加快模型的训练速度。
  4. 广泛应用:SiLU在许多深度学习模型中得到了广泛应用,如在图像分类、目标检测、语音识别等领域取得了良好的效果。

缺点:

  1. 缺乏理论支持:相对于其他激活函数,SiLU的理论基础相对较弱,缺乏深入的理论分析和证明。
  2. 需要调整参数:SiLU涉及到可学习的参数β,该参数的选择会对模型的训练效果和收敛速度产生影响,需要谨慎调整。
  3. 对输入的敏感性:SiLU对输入的敏感性较高,当输入数据的分布发生较大变化时,可能会导致模型性能下降。

公式: S i L u ( x ) = x 1 + e − x SiLu(x) = \frac{x}{1 + e^{-x}} SiLu(x)=1+exx

在这里插入图片描述

13. HardSwish

HardSwish是一种非线性激活函数,能够引入非线性特性,增加模型的表达能力。具有平滑的特性,其函数形式相对较为平滑,有助于缓解梯度消失或梯度爆炸问题。HardSwish的计算过程相对简单,具有较低的复杂度,可以提高模型的训练速度。

优点:

  1. 非线性表达能力:HardSwish作为一种非线性激活函数,能够引入非线性特性,增加模型的表达能力,有助于提高模型的分类和回归性能。
  2. 平滑性:由于HardSwish具有平滑的特性,可以缓解梯度消失或梯度爆炸问题,使得模型训练更加稳定。
  3. 计算效率高:HardSwish的计算过程相对简单,具有较低的复杂度,可以加快模型的训练速度。
  4. 避免数值溢出:相对于SiLU,HardSwish具有更好的数值稳定性,可以避免在训练过程中出现数值溢出的问题。
  5. 在嵌入式设备上的优势:由于HardSwish具有较低的计算复杂度,因此在嵌入式设备上使用时具有更好的性能和较低的功耗。

缺点:

  1. 缺乏理论支持:相对于其他激活函数,HardSwish的理论基础相对较弱,缺乏深入的理论分析和证明。
  2. 需要调整参数:虽然HardSwish的计算过程相对简单,但仍然涉及到可学习的参数β,该参数的选择会对模型的训练效果和收敛速度产生影响,需要谨慎调整。
  3. 对输入的敏感性:HardSwish对输入的敏感性较高,当输入数据的分布发生较大变化时,可能会导致模型性能下降。

公式: H a r d S w i s h ( x ) = { 0 x <= -3 x x >= 3 x ∗ ( x + 3 ) 6 -3 <= x <= 3 HardSwish(x)= \begin{cases} 0& \text{x <= -3}\\ x& \text{x >= 3}\\ x * \frac{(x + 3)}{6}& \text{-3 <= x <= 3} \end{cases} HardSwish(x)= 0xx6(x+3)x <= -3x >= 3-3 <= x <= 3

在这里插入图片描述

14. SoftPlus

特点是函数图像以0为渐近线,并在大于0的部分类似于ReLU函数。计算过程相对简单,具有较低的复杂度,可以提高模型的训练速度。

优点:

  1. 平滑性:由于SoftPlus函数图像以0为渐近线,因此其导数在输入为0时为1,可以避免ReLU中存在的神经元“死亡”问题。
  2. 计算效率高:SoftPlus的计算过程相对简单,具有较低的复杂度,可以加快模型的训练速度。
  3. 应用广泛:SoftPlus在许多深度学习模型中得到了广泛应用,如在图像分类、目标检测、语音识别等领域取得了良好的效果。

缺点:

  1. 对输入的敏感性:SoftPlus对输入的敏感性较高,当输入数据的分布发生较大变化时,可能会导致模型性能下降。
  2. 缺乏理论支持:相对于其他激活函数,SoftPlus的理论基础相对较弱,缺乏深入的理论分析和证明。
  3. 存在偏移现象:由于SoftPlus的函数图像以0为渐近线,因此存在偏移现象,这可能会对模型的性能产生影响。

公式: S o f t P l u s ( x ) = l o g ( 1 + e x ) SoftPlus(x) = log(1 + e^x) SoftPlus(x)=log(1+ex)

在这里插入图片描述

15. Mish

Mish是一种自正则化的非单调神经激活函数,与传统的激活函数(如ReLU、Sigmoid等)不同,Mish是一种非单调函数。这种非单调性可以帮助模型更好地捕获数据的复杂模式。Mish的输出范围是无界的,这有助于避免梯度饱和问题,使模型在训练过程中具有更好的梯度传播性能。Mish在整个输入范围内都是平滑的,这有助于减少模型训练时的梯度噪声,使模型更加稳定。Mish具有一定的自正则化效果,这有助于减少模型过拟合的风险,提高模型的泛化能力。

优点:

  1. 表达能力:由于nn.Mish具有非单调性和无界性,它能够为模型提供更强大的表达能力,有助于模型学习更复杂的特征表示。
  2. 训练稳定性:nn.Mish的平滑性有助于减少训练过程中的梯度噪声,使模型训练更加稳定,降低梯度消失或梯度爆炸的风险。
  3. 泛化能力:nn.Mish的自正则化效果有助于减少模型过拟合,提高模型在未见数据上的泛化能力。

缺点:

  1. 计算成本:相较于一些简单的激活函数(如ReLU),nn.Mish的计算成本较高,因为它涉及到指数运算和乘法运算。这可能导致模型训练和推理速度相对较慢。
  2. 参数调整:虽然nn.Mish在许多情况下表现良好,但仍需要针对特定任务进行参数调整。这可能增加了模型优化的复杂性。
  3. 缺乏理论支持:尽管nn.Mish在实验中表现出色,但其理论基础相对较弱。目前尚缺乏深入的理论分析来证明其在各种场景下的优越性。

公式: M i s h ( x ) = x ∗ T a n h ( l o g ( 1 + e x ) ) Mish(x) = x * Tanh(log(1 + e^x)) Mish(x)=xTanh(log(1+ex))

在这里插入图片描述

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

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

相关文章

分布式系统架构介绍

1、为什么需要分布式架构&#xff1f; 增大系统容量&#xff1a;单台系统的性能瓶颈&#xff0c;多台机器才能应对大规模的应用场景&#xff0c;所以就需要我们的应用支撑平台具备分布式架构。 加强系统的可用&#xff1a;为了满足业务的SLA要求&#xff0c;需要通过分布式架构…

第62讲商品搜索动态实现以及性能优化

商品搜索后端动态获取数据 后端动态获取数据&#xff1a; /*** 商品搜索* param q* return*/GetMapping("/search")public R search(String q){List<Product> productList productService.list(new QueryWrapper<Product>().like("name", q)…

Java学习笔记2024/2/8

面向对象 //面向对象介绍 //面向: 拿、找 //对象: 能干活的东西 //面向对象编程: 拿东西过来做对应的事情 //01-如何设计对象并使用 //1.类和对象 //2.类的几个不错注意事项 1. 类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 &#xff0c;所以我们也常常说万物皆对…

机器学习 | 深入集成学习的精髓及实战技巧挑战

目录 xgboost算法简介 泰坦尼克号乘客生存预测(实操) lightGBM算法简介 《绝地求生》玩家排名预测(实操) xgboost算法简介 XGBoost全名叫极端梯度提升树&#xff0c;XGBoost是集成学习方法的王牌&#xff0c;在Kaggle数据挖掘比赛中&#xff0c;大部分获胜者用了XGBoost。…

Java后端技术助力,党员学习平台更稳定

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

大模型2024规模化场景涌现,加速云计算走出第二增长曲线

导读&#xff1a;2024&#xff0c;大模型第一批规模化应用场景已出现。 如果说“百模大战”是2023年国内AI产业的关键词&#xff0c;那么2024年我们将正式迈进“应用为王”的新阶段。 不少业内观点认为&#xff0c;2024年“百模大战”将逐渐收敛甚至洗牌&#xff0c;而大模型在…

video / image上传操作-校验、截取首帧和正方形预览图等

常见video / image上传操作-校验、截取首帧和正方形预览图等。 上回搞了一个视频和图片上传和校验的需求&#xff0c;感觉学到很多&#xff0c;一些常见的函数记录如下&#xff1a; 1. 图片校验尺寸 const { maxCount 30, maxWidth, maxHeight, minHeight 200, minWidth …

Java基础知识练习题

1.对Java源文件进行编译操作的命令是&#xff08;B&#xff09; A.Java B.javac C.where is java D.javaw 2.下列命令中&#xff0c;用来运行Java程序的是&#xff08;A&#xff09;A.java B. javadoc C. jar D. javac 分析&#xff1a; 对Java源程序进行编译的命令是J…

力扣102. 二叉树的层序遍历 (复习vector和queue的常见用法

目录 题目描述 题目解析 题目答案 题目所用知识点 最后 题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术…

使用pygame生成红包封面

import pygame import sys# 初始化pygame pygame.init()# 设置红包封面尺寸 size width, height 640, 960 screen_color (255, 0, 0) # 红色背景# 创建窗口 screen pygame.display.set_mode(size) pygame.display.set_caption(红包封面)# 加载龙形图片 dragon_image pygam…

一些参数(仅供个人理解)

1.mAP&#xff1a; 数据集的平均准确率 mAP50-95&#xff1a;mAP阈值为50到mAP阈值为95&#xff0c;间隔5%,取得10个mAP值&#xff0c;然后对这十个值取平均。 目标检测评估指标mAP&#xff1a;从Precision,Recall,到AP50-95【未完待续】_map50和map50-95-CSDN博客 2.IoU&a…

JVM调优(Window下)

1、编写代码&#xff0c;像下面代码这样&#xff0c;产生OOM&#xff0c; private static final Integer K 1024;/*** 死循环&#xff0c;验证JVM调优* return*/GetMapping(value "/deadLoop")public void deadLoop(){int size K * K * 8;List<byte[]> lis…

C语言第二十一弹---指针(五)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 转移表 1、转移表 总结 1、转移表 函数指针数组的用途&#xff1a;转移表 举例&#xff1a;计算器的⼀般实现&#xff1a; 假设我们需要做一个能够进行加减…

Flume拦截器使用-实现分表、解决零点漂移等

1.场景分析 使用flume做数据传输时&#xff0c;可能遇到将一个数据流中的多张表分别保存到各自位置的问题&#xff0c;同时由于采集时间和数据实际发生时间存在差异&#xff0c;因此需要根据数据实际发生时间进行分区保存。 鉴于此&#xff0c;需要设计flume拦截器配置conf文件…

C#,佩尔数(Pell Number)的算法与源代码

1 佩尔数&#xff08;Pell Number&#xff09; 佩尔数&#xff08;Pell Number&#xff09;是一个自古以来就知道的整数数列&#xff0c;由递推关系定义&#xff0c;与斐波那契数类似。佩尔数呈指数增长&#xff0c;增长速率与白银比的幂成正比。它出现在2的算术平方根的近似值…

一图窥探RAG技术发展现状

2023年除了大语言模型&#xff0c;听到最多的当属RAG&#xff08;检索增强生成技术了&#xff09;&#xff0c;在实际业务场景落地过程中&#xff0c;由于大模型目前的一定局限和能力现状以及Token限制、训练成本等多种因素的影响下&#xff0c;RAG不得不成为大家选择快速试错、…

WebSocket+Http实现功能加成

WebSocketHttp实现功能加成 前言 首先&#xff0c;WebSocket和HTTP是两种不同的协议&#xff0c;它们在设计和用途上有一些显著的区别。以下是它们的主要特点和区别&#xff1a; HTTP (HyperText Transfer Protocol): 请求-响应模型&#xff1a; HTTP 是基于请求-响应模型的协…

Three.js学习8:基础贴图

一、贴图 贴图&#xff08;Texture Mapping&#xff09;&#xff0c;也翻译为纹理映射&#xff0c;“贴图”这个翻译更直观。 贴图&#xff0c;就是把图片贴在 3D 物体材质的表面&#xff0c;让它具有一定的纹理&#xff0c;来为 3D 物体添加细节的一种方法。这使我们能够添加…

TCP和UDP相关问题(重点)——7.TCP的流量控制怎么实现的?

流量控制就是在双方通信时&#xff0c;发送方的速率和接收方的速率不一定是相等的&#xff0c;如果发送方发送的太快&#xff0c;接收方就只能把数据先放到接收缓冲区中&#xff0c;如果缓冲区都满了&#xff0c;那么处理不过来就只能丢弃&#xff0c;所以需要控制发送方的速率…

【Go】三、Go并发编程

并发编程 我们主流的并发编程思路一般有&#xff1a;多进程、多线程 但这两种方式都需要操作系统介入&#xff0c;进入内核态&#xff0c;是十分大的时间开销 由此而来&#xff0c;一个解决该需求的技术出现了&#xff1a;用户级线程&#xff0c;也叫做 绿程、轻量级线程、协…
最新文章