机器学习第29周周报 Beyond Dropout

文章目录

  • week29 Beyond Dropout
  • 摘要
  • Abstract
  • 一、泛化理论
  • 二、文献阅读
    • 1. 题目
    • 2. abstract
    • 3. 网络架构
      • 3.1 特征图失真
      • 3.2 失真优化
    • 4. 文献解读
      • 4.1 Introduction
      • 4.2 创新点
      • 4.3 实验过程
        • 4.3.1 全连接层实验
        • 4.3.2 卷积网络上的实验
      • 4.4 结论
    • 小结
    • 参考文献

week29 Beyond Dropout

摘要

本文主要讨论Dropout方法及其改进。本文简要介绍了泛化理论。其次本文展示了题为Beyond Dropout: Feature Map Distortion to Regularize Deep Neural Networks的论文主要内容。该文研究了与深度神经网络中间层相关的经验Rademacher复杂度,在此基础上提出了一种特征失真的方法。实验表明,与传统的dropout方法相比,该方法能够更加有效的训练神经网络。

Abstract

This article mainly talks about the Dropout method and its improvements. This article briefly introduces the theory of generalization. Secondly, this paper presents the main content of the paper titled Beyond Dropout: Feature Map Distortion to Regularize Deep Neural Networks. This paper studies the empirical Rademacher complexity associated with the middle layer of deep neural networks and proposes a feature distortion method on this basis. Experiments show that compared with the traditional dropout method, the proposed method can train the neural network more effectively.

一、泛化理论

泛化理论关注预期风险与经验风险之间的关系。考虑 L − l a y e r L-layer Llayer 神经网络 f L ∈ F f^L ∈ F fLF,以及从真值分布 Q ∈ X × Y Q ∈ X × Y QX×Y 采样的标记数据集 D = { ( x i , y i ) } i = 1 N \mathcal D = \{(x_i, y_i)\}^N_{i=1} D={(xi,yi)}i=1N,其中$ x_i ∈ X, y_i ∈ Y$。权重矩阵为 K l ∈ R d l × d l − 1 K^l ∈\mathbb R^{d^l×d^{l−1}} KlRdl×dl1,其中 d l d^l dl 为第 l 层特征图的维度,第 l 层激活函数 φ φ φ 前后对应的输出特征为 o l ∈ R d l , f l ∈ R d l o^l ∈ \mathbb R^{d^l}, f^l\in \mathbb R^{d^l} olRdl,flRdl 。忽略偏差,有 f l + 1 ( x i ) = φ ( o l + 1 ( x i ) ) = φ ( K l + 1 f l ( x i ) ) f^{l+1}(x_i) = φ(o^{l+1}(x_i)) = φ(K^{l+1}f^l(x_i)) fl+1(xi)=φ(ol+1(xi))=φ(Kl+1fl(xi))。为了简单起见,进一步将使用 K : l K^{:l} K:l表示 { K 1 , ⋅ ⋅ ⋅ ⋅ , K l } \{K^1,····,K^l\} {K1⋅⋅⋅⋅Kl}

以图像分类任务为例,总体上的预期风险 R ( f L ) R(f^L) R(fL) 和训练集上的经验风险 R ^ ( f L ) \hat R(f^L) R^(fL)可表示为:
R ( f L ) = E ( x , y ) ∼ Q [ l ( f l ( x , K : L ) , y ) ] (1) R(f^L)=\mathbb E_{(x,y)\sim Q}[l(f^l(x,K^{:L}),y)] \tag{1} R(fL)=E(x,y)Q[l(fl(x,K:L),y)](1)

R ^ ( f L ) = 1 N ∑ ( x i , y i ) ∈ D l ( f L ( x i , K : L ) , y i ) (2) \hat R(f^L)=\frac1N\sum_{(x_i,y_i)\in \mathcal D}l(f^L(x_i,K^{:L}),y_i) \tag{2} R^(fL)=N1(xi,yi)Dl(fL(xi,K:L),yi)(2)

其中 l ( ⋅ ) l(·) l()​表示0-1损失。

ERC的正式定义如下: 对于给定的由分布Q生成的具有N个实例 D = { ( x i , y i ) } \mathcal D = \{(x_i, y_i)\} D={(xi,yi)}的训练数据集,网络函数类 f L f^L fL的经验Rademacher复杂度定义为:
∼ R D ( f L ) = 1 N E σ ∣ s u p k , K : L ∑ i = 1 N σ i f L ( x ) ∣ \sim R_D(f^L)=\frac1N\mathbb E_{\sigma}|sup_{k,K^{:L}}\sum_{i=1}^N\sigma_if^L(x)| RD(fL)=N1Eσsupk,K:Li=1NσifL(x)
其中 Rademacher 变量 σ = σ 1 , ⋅ ⋅ ⋅ , σ N σ = {σ_1, · · · , σ_N} σ=σ1,⋅⋅⋅,σN, σ i σ_i σi 是 {-1,+1} 中的独立均匀随机变量, f L ( x i , K : L ) [ k ] f^L(x_i, K^{:L})[k] fL(xi,K:L)[k] f L ( x i , K : L ) f^L(x_i,K^{:L}) fL(xiK:L)​ 中的第 k 个元素。

使用经验 Rademacher 复杂度和 MaDiarmid 不等式,预期风险 R(fL) 的上限可以通过定理 1 得出

定理1:给定固定的 ρ > 0 ρ > 0 ρ>0,对于任何 δ > 0 δ > 0 δ>0,对于所有 f L ∈ F f^L ∈ F fLF,概率至少为 1 − δ 1 - δ 1δ
R ( f L ) ≤ R ^ ( f L ) + 2 ( d L ) 2 ρ R ^ D ( f L ) + ( 1 + 2 ( d L ) 2 ρ ln ⁡ 1 θ 2 N ) (4) R(f^L)\leq\hat R(f^L)+\frac{2(d^L)^2}{\rho}\hat R_D(f^L)+(1+\frac{2(d^L)^2}{\rho}\sqrt{\frac{\ln\frac{1}{\theta}}{2N}})\tag{4} R(fL)R^(fL)+ρ2(dL)2R^D(fL)+(1+ρ2(dL)22Nlnθ1 )(4)
其中 d L d^L dL​ 表示网络的输出维度。

根据定理 1,预期风险和经验风险之间的差距可以借助特定神经网络和数据集上的经验 Rademacher 复杂度 R∼ D(f) 来限制。直接计算 ERC 是很困难的,因此 ERC 的上限或近似值通常在训练阶段使用,以获得具有更好泛化能力的模型。通过减少与 ERC 相关的正则化项,获得了具有更好泛化能力的模型。

二、文献阅读

1. 题目

题目:Beyond Dropout: Feature Map Distortion to Regularize Deep Neural Networks

作者:Yehui Tang, Yunhe Wang, Yixing Xu, Boxin Shi, Chao Xu, Chunjing Xu, Chang Xu

链接:https://arxiv.org/abs/2002.11022

发表:AAAI2020

2. abstract

基于 dropout 的方法在训练阶段禁用输出特征图中的某些元素,以减少神经元的共同适应。尽管这些方法可以增强所得模型的泛化能力,但传统的二元 dropout 并不是最佳解决方案。因此,该文研究了与深度神经网络中间层相关的经验Rademacher复杂度,并提出了一种特征失真方法(Disout)来解决上述问题。

Dropout based methods disable some elements in the output feature maps during the training phase for reducing the co-adaptation of neurons. Although the generalization ability of the resulting models can be enhanced by these approaches, the conventional binary dropout is not the optimal solution. Therefore, this paper investigate the empirical Rademacher complexity related to intermediate layers of deep neural networks and propose a feature distortion method (Disout) for addressing the aforementioned problem.

3. 网络架构

该文的目标不是固定扰动值,而是通过降低网络的ERC来学习特征图的失真。一般来说,对输入数据 x i x_i xi的第l层的输出特征 f l ( x i ) f^l(x_i) fl(xi)进行的干扰操作可以表示为
f ^ l ( x i ) = f l ( x i ) − m i l ∘ ϵ i l (6) \hat f^l(x_i)\ =\ f^l(x_i)-m_i^l\circ \epsilon_i^l \tag{6} f^l(xi) = fl(xi)milϵil(6)
其中 ϵ i l ∈ R d l \epsilon_i^l\in \mathbb{R}^{d^l} ϵilRdl是作用于特征图 f l ( x i ) f^l(x_i) fl(xi)的失真。相较于原始的dropout方法,上式自动学习是根据ERC推导的失真形式。由于ERC在最后一层上计算的,故在神经网络上直接使用ERC是困难的。在训练阶段很难追踪神经网络的中间特征。故需要考虑任意层的输出特征来重新表征 R ~ D ( f L ) \tilde R_D(f^L) R~D(fL),从而有以下定理

T h e o r e m 2 \mathbf{Theorem\ 2} Theorem 2 K l [ k , : ] \mathcal{K}^l[k,:] Kl[k,:]表示参数矩阵 K l \mathcal{K^l} Kl的k行,而 ∣ ∣ ⋅ ∣ ∣ p ||\cdot||_p ∣∣p是向量的p范数。假定 ∣ ∣ K l [ k , : ] ∣ ∣ p ≤ B l ||K^l[k,:]||_p\leq B^l ∣∣Kl[k,:]pBl,则输出的ERC可以由中间特征的ERC限制:
R ~ D ( f L ) ≤ 2 R ~ D ( o L ) ≤ 2 B L R ~ D ( f L − 1 ) ≤ … ≤ 2 L − t R ~ D ( f t ) ∏ l = t + 1 L B l ≤ 2 L − t + 1 R ~ D ( o t ) ∏ l = t + 1 L B l (7) \tilde R_D(f^L)\leq2\tilde R_D(o^L)\leq2B^L\tilde R_D(f^{L-1})\leq\dots\\\leq2^{L-t}\tilde R_D(f^t)\prod_{l=t+1}^L B^l\leq 2^{L-t+1}\tilde R_D(o^t)\prod_{l=t+1}^LB^l \tag{7} R~D(fL)2R~D(oL)2BLR~D(fL1)2LtR~D(ft)l=t+1LBl2Lt+1R~D(ot)l=t+1LBl(7)
其中 o l , f l o^l, f^l ol,fl分别是激活函数之前和之后的特征映射。

上述理论展示了网络 R ~ D ( f L ) \tilde R_D(f^L) R~D(fL)的ERC由第t层的输出特征 R ~ D ( f t ) \tilde R_D(f^t) R~D(ft) R ~ D ( o t ) \tilde R_D(o^t) R~D(ot)的ERC确定上界。故降低 R ~ D ( f t ) \tilde R_D(f^t) R~D(ft) R ~ D ( o t ) \tilde R_D(o^t) R~D(ot)可以降低 R ~ D ( f L ) \tilde R_D(f^L) R~D(fL) f t f^t ft是网络任意中间层t的特征图,且失真也能应用于中间特征。故 R ~ D ( f t ) \tilde R_D(f^t) R~D(ft) R ~ D ( o t ) \tilde R_D(o^t) R~D(ot)可以作为失真操作的根据。

3.1 特征图失真

本节说明通过在第l层的特征图上应用失真来降低 f l ( x i ) f^l(x_i) fl(xi)的ERC。通过该操作,后续层中所有ERC都会受到影响,满足 l < t ≤ L l<t\leq L l<tL R ~ D ( o t ) \tilde R_D(o^t) R~D(ot)可以影响第l层的失真 ϵ i \epsilon_i ϵi。距离输出层越近的层,整个网络的ERC上限越紧,且能更有效地减少 R ~ D ( f L ) \tilde R_D(f^L) R~D(fL)。但若 t ≤ l t\leq l tl R ~ D ( o t ) \tilde R_D(o^t) R~D(ot) ϵ \epsilon ϵ之间的关系更加复杂,且很难使用 R ~ D ( o t ) \tilde R_D(o^t) R~D(ot)影响 ϵ l \epsilon_l ϵl。故使用第l+1层 R ~ D ( o l + ) \tilde R_D(o^{l+}) R~D(ol+)的ERC来引导第l层。即通过优化 ϵ l \epsilon_l ϵl来降低 R ~ D ( o l + 1 ) \tilde R_D(o^{l+1}) R~D(ol+1),从而有下式
g l ( x ) = ∑ i = 1 N σ i f ^ l ( x i ) (8) g^l(x)=\sum_{i=1}^N\sigma_i\hat f^l(x_i) \tag{8} gl(x)=i=1Nσif^l(xi)(8)
g l ( x ) ∈ R d l g^l(x)\in \mathbb{R}^{d^l} gl(x)Rdl与特征图 f l ( x i ) f^l(x_i) fl(xi)维度相同,则 R ~ D ( o l + 1 ) \tilde R_D(o^{l+1}) R~D(ol+1)如下式
R ~ D ( o l + 1 ) = 1 N E ϵ sup k , K : l + 1 ∣ < K l + 1 [ k , : ] T , g l ( x ) > ∣ (9) \tilde R_D(o^{l+1})=\frac1N\mathbb{E}_\epsilon \text{sup}_{k,\mathcal K^{:l+1}}|<\mathcal K^{l+1}[k,:]^T,g^l(x)>| \tag{9} R~D(ol+1)=N1Eϵsupk,K:l+1<Kl+1[k,:]T,gl(x)>(9)
其中 K l + 1 [ k , : ] ∈ R 1 × d l \mathcal K^{l+1}[k,:]\in \mathbb R^{1\times d^l} Kl+1[k,:]R1×dl表示参数矩阵 K l + 1 \mathcal K^{l+1} Kl+1第k行, K : l + 1 = { K 1 , K 2 , ⋯ , K l + 1 } \mathcal K^{:l+1}=\{\mathcal K^1, \mathcal K^2,\cdots, \mathcal K^{l+1}\} K:l+1={K1,K2,,Kl+1}。理想情况下, ϵ l \epsilon^l ϵl将减少下一层 R ~ D ( o l + 1 ) \tilde R_D(o^{l+1}) R~D(ol+1)ERC的同时保持表示能力。

在训练阶段,考虑一个具有 N ‾ \overline N N 样本的小批量 x ‾ = x 1 , x 2 , ⋅ ⋅ ⋅ x N ‾ \overline x = {x_1, x_2, ··· x_{\overline N}} x=x1,x2,⋅⋅⋅xN,第 l 层的掩模和畸变为 m l = m 1 l , m 2 l , … , m N ‾ l m^l = {m^l_1,m^l_2, \dots, m^l_{\overline N} } ml=m1l,m2l,,mNl ε l = ε 1 l , ε 2 l , … , ε N ‾ l ε^l = {ε^l_1, ε^l_2, \dots, ε^l_{\overline N}} εl=ε1l,ε2l,,εNl。以分类问题为例,通过最小化交叉熵损失来更新网络的权重。基于当前更新的权值 K l \mathcal K^l Kl和Rademacher变量 σ ‾ = σ 1 , σ 2 , … , σ N ‾ \overline \sigma= {\sigma_1, \sigma_2, \dots, \sigma_{\overline N}} σ=σ1,σ2,,σN,通过求解优化问题得到优化后的扰动 ϵ ^ l \hat \epsilon^l ϵ^l
ϵ ^ l = arg ⁡ min ⁡ ϵ l T ( x ‾ , ϵ l ) , l = 1 , 2 , … , L (10) \hat \epsilon^l=\arg \min_{\epsilon^l}\mathcal T(\overline x,\epsilon^l),\ l=1,2,\dots,L \tag{10} ϵ^l=argϵlminT(x,ϵl), l=1,2,,L(10)
其中
T ( x ‾ , ϵ l ) = 1 N [ s u p k ∣ < K l + 1 [ k , : ] T , g l > ∣ + λ 2 ∑ i = 1 N ‾ ∣ ∣ ϵ i l ∣ ∣ 2 2 ] (11) \mathcal T(\overline x,\epsilon^l)=\frac1N[sup_k|<\mathcal K^{l+1}[k,:]^T,g^l>|+\frac{\lambda}2\sum_{i=1}^{\overline N}||\epsilon_i^l||_2^2] \tag{11} T(x,ϵl)=N1[supk<Kl+1[k,:]T,gl>+2λi=1N∣∣ϵil22](11)
其中 ∣ ∣ ⋅ ∣ ∣ 2 ||\cdot||_2 ∣∣2表示l2范数, λ \lambda λ是平衡目标函数和失真强度的超参数

3.2 失真优化

微信图片_20240302150611

4. 文献解读

4.1 Introduction

由于深度网络通常会过度参数化以在训练集上获得更高的性能,因此一个重要的问题是避免过度拟合。经验风险应该接近预期风险。为此,首先提出了传统的二元dropout方法,该方法通过在训练阶段随机丢弃部分神经元来减少神经元的共同适应。该操作可以被视为模型集成技术或数据增强方法,它显着增强了测试集上所得网络的性能。现有的 dropout 变体为最小化预期风险和经验风险之间的差距做出了巨大的努力,但它们都遵循禁用神经网络中任意层的部分输出的一般思想。

本文提出了一种根据特征图上的失真增强深度神经网络泛化能力的新方法。给定深度神经网络的泛化误差界是根据其中间层的Rademacher复杂度建立的。在特征图上引入失真以降低相关Rademacher复杂度,这有利于提高神经网络的泛化能力。基准图像数据集的实验结果表明,使用所提出的特征失真方法训练的深度网络比使用最先进的方法生成的深度网络表现更好。

4.2 创新点

  1. 对dropout方法及其改进方法进行了研究
  2. 使用Rademacher复杂度作为依据设计新方法,从而提高了神经网络的泛化能力

4.3 实验过程

在本节中,在几个基准数据集上进行实验,以验证所提出的特征图失真方法的有效性。该方法在 FC 层和卷积层上实现,并分别使用传统 CNN 和现代 CNN(例如 ResNet)进行验证。为了为不同层设置统一的超参数γ,将γ乘以每一层中特征图的标准差,并交替更新失真和权重以提高效率。失真概率(dropout 和 dropblock 的丢弃概率)从 0 线性增加到指定的失真概率 p(Ghiasi、Lin 和 Le 2018[2])。

4.3.1 全连接层实验

数据集:在 CIFAR-10 和 CIFAR100 数据集上的传统 CNN 上进行了实验。将所提出的方法与多种最先进的 dropout 变体进行比较。CIFAR-10和CIFAR-100数据集均包含60000张尺寸为32×32的自然图像。其中50000张图像用于训练,10000张图像用于测试。图像分别分为10类和100类。 20%的训练数据被视为验证集。数据增强方法不用于公平比较。

实施细节:传统的 CNN 具有三个卷积层,分别具有 96、128 和 256 个滤波器。每层由步幅为 1 的 5 × 5 卷积运算组成,后跟步幅为 2 的 3 × 3 最大池运算。然后将特征发送到两个全连接层,每个层有 2048 个隐藏单元。调整每个 FC 层上的失真方法。畸变概率 p 从 {0,4, 0.5, 0.6} 中选择,步长 γ 设置为 5。模型训练 500 个 epoch,批量大小为 128。学习率初始化为 0.01,衰减系数为10 在 200、300 和 400 epoch。使用不同的随机种子运行方法 5 次,并汇总平均准确度和标准差。

比较方法:使用一般的没有额外正则化操作的CNN模型作为基础模型。此外,将该文中的方法与广泛使用的dropout方法和几个最先进的变体进行比较,包括Vardrop、Sparse Vardrop、RDdrop

结果:下表总结了 CIFAR-10 和 CIFAR-100 上的测试精度。在该方法的帮助下训练的 CNN 达到了 85.24% 的准确率,这使得最先进的 RDdrop 方法在 CIFAR-10 和 CIFAR-100 数据集上的性能分别提高了 2.13% 和 1.58%。

image-20240302172916134

4.3.2 卷积网络上的实验

将所提出的方法应用于卷积层,并在 CIFAR-10 和 CIFAR-100 数据集上进行了多次实验

实现细节:广泛使用的 ResNet-56包含三组块,被用作基线模型。 使用DropBlock 方法作为本文方法的比较对象。二者都是在最后一组块大小=6 中的每个卷积层之后实现的,并且失真概率(DropBlock 的丢弃概率)p ∈ \in ​ {0.01, 0.02, …, 0.1}。根据经验,步长γ设置为30。训练期间进行标准数据增强,包括随机裁剪、水平翻转和旋转(±15度以内)。网络训练了 200 个 epoch,批量大小设置为 128,权重衰减设置为 5e-4。初始学习率设置为 0.1,并在 60、120 和 160 epoch 时衰减 5 倍。使用不同的随机种子将所有方法重复 5 次,并报告带有标准差的平均准确度。

结果:CIFAR-10和CIFAR-100数据集上的结果如下表。所提出的方法优于DropBlock方法,性能分别提高了0.32%和0.63%。

image-20240302174225120

训练曲线: CIFAR-100数据集上的训练曲线如下图所示。实线和虚线分别表示测试阶段和训练阶段,红线和蓝线表示提出的特征图失真方法和基线模型。当训练收敛时,基线ResNet-56陷入过拟合问题,取得了较高的训练精度但较低的测试精度,而所提出的特征图失真方法克服了这一问题并实现了较高的测试精度,这表明模型泛化能力的提高。

image-20240302174545904

特征图失真(红色)与Dropblock(绿色)在不同失真概率p下在CIFAR-100数据机上的测试精度如下图所示。增大p可以增强正则化效率,将p设置在适当的范围内可提高测试精度。

image-20240302174556691

此外,该文还在ImageNet上进行了实验,同样取得了较好的效果。

4.4 结论

基于 Dropout 的方法已成功运用增强深度神经网络的泛化能力。然而,消除神经网络中的一些单元可以被视为一种启发式方法,用于最小化所得网络的预期风险和经验风险之间的差距,这在实践中并不是最佳方法。该文建议通过利用 Rademacher 复杂度将扭曲嵌入到给定深度神经网络的特征图上。大量的实验结果表明,特征失真技术可以轻松嵌入到主流深度网络中,以在基准数据集上获得比传统方法更好的性能。

小结

本周主要学习了dropout相关技术。首先,简要学习了泛化理论。其次,本周阅读了一篇改进dropout技术的论文,该文引入特征图失真以降低相关Rademacher复杂度,这有利于提高神经网络的泛化能力。

下周将继续阅读环境领域的人工智能相关论文,并继续学习接下来可能使用的数学工具。

参考文献

[1] Yehui Tang, Yunhe Wang, Yixing Xu, Boxin Shi, Chao Xu, Chunjing Xu, Chang Xu: Beyond Dropout: Feature Map Distortion to Regularize Deep Neural Networks.[J].arXiv:2002.11022

[2] Ghiasi, G.; Lin, T.-Y.; and Le, Q. V. 2018. Dropblock: A regularization method for convolutional networks. In Advances in Neural Information Processing Systems, 10727–10737.

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

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

相关文章

练习ROS动作编程

ROS学习记录&#xff1a;动作编程 引言&#xff1a; ​ 通过本实验&#xff0c;我们将联系我们学过的动作编程&#xff0c;客户端发送一个运动目标,模拟小乌龟运动到目标位置的过程,包含服务端和客户端的代码实现&#xff0c;并且带有实时的位置反馈。 希望你在本次学习过后&am…

Java 可变长参数

可变长参数定义 从 Java5 开始&#xff0c;Java 支持定义可变长参数&#xff0c;所谓可变长参数就是允许在调用方法时传入不定长度的参数。可变长参数允许方法接受任意多个相同类型的参数&#xff0c;在方法内部可以将这些参数视为数组来处理。可变长参数通过省略号&#xff0…

vue 自定义组件绑定model+弹出选择支持上下按键选择

参考地址v-modelhttps://v2.cn.vuejs.org/v2/guide/components-custom-events.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E7%9A%84-v-model 原文代码 Vue.component(base-checkbox, {model: {prop: checked,event: change},props: {checked: Boolean},template: `…

【SQL】550. 游戏玩法分析 IV (关键点:确定连续两次登录)

前述 常见函数用法示例&#xff1a; DATEDIFF(col1, col2) 1DATE_ADD(MIN(col), INTERVAL 1 DAY)ROUND(3.1415926,3) > 四舍五入得到 3.142 题目描述 leetcode原题&#xff1a;550. 游戏玩法分析 IV 思路 确定连续两次登录统计&#xff0c;保留两位小数 写法一 关键…

c语言,大宗撮合交易中心系统核心模块代码

撮合交易系统&#xff08;Matching System&#xff09;常用于大宗交易&#xff0c;如股票、期货等市场&#xff0c;它负责根据买卖双方的报价和数量&#xff0c;自动撮合成交。撮合系统的核心模块通常包括订单管理、价格计算和撮合逻辑等部分。 由于撮合系统的实现复杂且依赖于…

分享MDN前端结构化技能、实践指南、学习资源

前言 MDN课程为成为一名成功的前端开发人员提供了一个结构化的基本技能和实践指南&#xff0c;以及推荐的学习资源。 先看下让人不得不服的书《宝宝的网页设计》&#xff08;套装共3册&#xff09; 宝宝的HTML、宝宝的CSS、宝宝的JavaScript 全球首套中英文宝宝编程启蒙书&a…

魔众智能AI系统v2.1.0版本支持主流大模型(讯飞星火、文心一言、通义千问、腾讯混元、Azure、MiniMax、Gemini)

支持主流大模型&#xff08;讯飞星火、文心一言、通义千问、腾讯混元、Azure、MiniMax、Gemini&#xff09; [新功能] 系统全局消息提示 UI 全新优化 [新功能] JS 库增加【ijs】类型字符串&#xff0c;支持默认可执行代码 [新功能] 分类快捷操作工具类 CategoryUtil [新功能…

【Flink】Apache Flink 常见问题定位指南

Apache Flink 常见问题定位指南 1.问题分析概览1.1 如何分析 Flink 问题 2.常见问题处理2.1 作业自动停止2.2 输出量稳定但不及预期2.3 输出量逐步减少或完全无输出2.4 个别数据缺失2.5 作业频繁重启 3.问题追因技巧3.1 常用工具3.1.1 内存3.1.2 CPU3.1.3 磁盘 I/O3.1.4 网络 I…

AI绘画提示词案例(宠物

目录 1. 雪地猫猫&#xff1a;1.1 提示词&#xff1a;1.2 效果&#xff1a; 2. 趴地猫猫&#xff1a;2.1 提示词&#xff1a;2.2 效果&#xff1a; 3. 长城萨摩耶&#xff1a;3.1 提示词&#xff1a;3.2 效果&#xff1a; 4. 沙发猫猫&#xff1a;4.1 提示词&#xff1a;4.2 效…

linux 交叉编译curl(+openssl)

一、交叉编译openssl 参考博客&#xff1a;点击跳转 二、交叉编译curl 1、源码下载 地址&#xff1a;点击跳转 2、配置 CPPFLAGS"-I/home/gui/gui/openssl/build_arm/include" LDFLAGS"-L/home/gui/gui/openssl/build_arm/lib" LIBS"-ldl" \ …

考研复试要想顺利通关,务必掌握的一些问题

亲爱的学弟学妹们&#xff0c;大家好&#xff01; 我是研一的学姐&#xff0c;深知考研路上的艰辛与不易。如今&#xff0c;为了回馈广大考研学子&#xff0c;我决定将自己精心整理的考研复试资料拿出来与大家分享&#xff0c;希望能为你们的复试之路添砖加瓦&#xff0c;助你…

指针的学习5

目录 sizeof和strlen的区别 sizeof strlen 数组和指针笔试题解析 一维数组 字符数组 二维数组 指针运算笔试题解析 题目1&#xff1a; 题目2&#xff1a; 题目3&#xff1a; 题目4&#xff1a; 题目5&#xff1a; 题目6&#xff1a; 题目7&#xff1a; sizeof和…