PaddleTS的时序预测模型模块模块

现有的时间序列预测方法大致可以分为两类。第一类是经典的时间序列模型,如Box等人(2015年)、Ray(1990年)、Seeger等人(2017年)和Seeger、Salinas和Flunkert(2016年)所描述的模型,它们为时间序列预测提供了可靠的基础。第二类是基于深度学习技术的方法,主要采用RNN及其变体来开发编码器-解码器预测范式(Hochreiter和Schmidhuber,1997年;Li等人,2018年;Yu等人,2017年)。

PaddleTS简介

PaddleTS是基于飞桨深度学习框架PaddlePaddle开发的时序模型库。它提供了丰富的时序分析模型,包括预测、表征、异常检测和分类模型,适用于多种时序数据的分析和应用。

1. paddlets.models.forecasting - 时序预测模型模块

功能
  • 提供多种用于时序预测的模型。

  • 支持单变量和多变量时序预测。

  • 常用模型包括

    DeepAR

    Informer

    LSTNet(Long Short-term Time-series Network)

    MLP(Multilayer Perceptron)

    NBEATS

    NHiTS

    RNN

    SCINet(Sample Convolution Interaction Network)

    TCN(Temporal Convolution Net)

    TFT(Temporal Fusion Transformer)

    Transformer
    等。

当然,请参考以下各个时序模型的论文链接:

1. DeepAR (Deep Autoregressive Networks)

  • 论文链接: DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks
    当涉及到时间序列预测时,DeepAR的目标是对未来的时间序列值进行预测,这是建立在其过去观测数据和已知的协变量基础上的。在这个过程中,DeepAR使用了一种称为自回归递归神经网络的模型架构来实现预测。这个模型被设计成能够从过去的数据中学习,并利用这些学习来预测未来的数据。

具体地说,DeepAR的模型将整个时间序列分为两个部分:条件范围和预测范围。在训练过程中,这两个范围都位于过去,以确保所有时间点的观测值都是已知的。但是在预测时,只有条件范围内的数据是已知的,而预测范围内的数据需要通过模型来预测。

DeepAR使用的模型是基于自回归原理的,意味着每个时间步的预测依赖于前一个时间步的预测值,并且是递归的,即网络在每个时间步使用前一步的输出作为下一步的输入。这种模型结构利用了长短期记忆(LSTM)单元,这些单元有助于捕捉长期的依赖关系,从而提高了模型的预测性能。

关于预测的具体操作,DeepAR使用了一种称为祖先采样的技术来获得模型的样本。这意味着DeepAR首先通过计算模型的初始状态来获得第一个时间步的预测值,然后逐步生成未来时间步的预测值。这些样本可以用来计算未来时间范围内各种感兴趣的量,比如分析其分布的分位数等。

2. Informer

  • 论文链接: Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting

Informer模型采用了编码器-解码器架构,并针对长序列时间序列预测问题进行了优化。为了提高预测能力,Informer模型引入了高效的注意力机制。

标准的注意力机制(Vaswani等人,2017年)基于三元组输入(查询、键和值)进行定义,执行缩放点积运算:[ A(Q,K,V) = \text{Softmax}(\frac{QK^T}{\sqrt{d_k}}) V ] 其中,Q、K和V分别是维度为 ( L Q × d k ) ( L_Q \times d_k ) (LQ×dk) ( L K × d k ) ( L_K \times d_k ) (LK×dk) ( L V × d v ) ( L_V \times d_v ) (LV×dv) 的矩阵, ( d k ) ( d_k ) (dk) 是输入维度。为进一步讨论注意力机制,Informer设 ( q i ) ( q_i ) (qi) ( k i ) ( k_i ) (ki) ( v i ) ( v_i ) (vi) 分别为 Q、K 和 V 的第 i 行。

Informer发现,标准的注意力机制在提高预测能力时存在一些缺点。例如,它需要进行 ( O ( L Q L K ) ) ( O(L_Q L_K) ) (O(LQLK)) 的点积运算和 ( O ( L K L Q ) ) ( O(L_K L_Q) ) (O(LKLQ)) 的内存使用,这在处理长序列时效率较低。此外,Informer还发现,注意力概率分布存在潜在的稀疏性。

为了克服这些缺点,Informer提出了一个称为ProbSparse的注意力机制。在这个机制中,每个键只关注前 u 个最不重要的查询。通过这种方式,Informer只需要为每个查询-键对计算 ( O ( ln ⁡ L Q ) ) ( O(\ln L_Q) ) (O(lnLQ)) 的点积,并且每层的内存使用保持为 ( O ( L K ln ⁡ L Q ) ) ( O(L_K \ln L_Q) ) (O(LKlnLQ))

为了高效地获取查询稀疏度测量,Informer提出了一种经验近似方法。在长尾分布下,Informer只需随机采样 U = L_K \ln L_Q 个点积对来计算 ( M ( q i , K ) ) ( M(q_i, K) ) (M(qi,K)),即填充其他对为零。然后,Informer从中选择稀疏的 Top-u。在实践中,查询和键的输入长度通常在自注意力计算中相等,即 ( L Q = L K = L ) ( L_Q = L_K = L ) (LQ=LK=L),因此ProbSparse自注意力的总时间复杂度和空间复杂度为 ( O ( L ln ⁡ L ) ) ( O(L \ln L) ) (O(LlnL))

编码器被设计用于提取长序列输入的稳健长程依赖关系。在输入表示之后,第 t 个序列输入 ( X t ) ( X_t ) (Xt) 被转换成一个矩阵 ( X t e n ∈ R L x × d model ) ( X_{t_{en}} \in \mathbb{R}^{L_x \times d_{\text{model}}} ) (XtenRLx×dmodel)。为了清晰起见,Informer在图3中给出了编码器的草图。

自注意力蒸馏作为ProbSparse自注意力机制的自然结果,编码器的特征图存在冗余的值V组合。Informer使用蒸馏操作来优先考虑具有主导特征的更优组合,并在下一层中生成一个聚焦的自注意力特征图。它通过设置Attention块中的 n-heads 权重矩阵(重叠的红色正方形)来急剧减少输入的时间维度。受到膨胀卷积(Yu、Koltun和Funkhouser,2017年;Gupta和Rush,2017年)的启发,Informer的“蒸馏”过程从第 j 层传递到第 (j+1) 层。

解码器通过一次前向过程生成长序列输出。Informer使用了标准的解码器结构(Vaswani等人,2017年),它由两个相同的multi-head注意力层的堆栈组成。生成性推理被用来减轻长预测中的速度下降。Informer通过以下向量作为解码器的输入:

[ X_{t_{token}} \in \mathbb{R}^{L_{\text{token}} \times d_{\text{model}}} ] 是起始标记,[ X_{t_0} \in \mathbb{R}^{L_y \times d_{\text{model}}} )$ 是目标序列的占位符(设置为0)。在ProbSparse自注意力计算中应用了遮蔽multi-head注意力,通过将遮蔽点积设置为0来防止每个位置关注后续位置,从而避免了自回归。一个全连接层获得最终输出,其输出大小 ( d y ) ( d_y ) (dy) 取决于Informer是否执行单变量预测或多变量预测。

生成性推理在NLP的“动态解码”(Devlin等人,2018年)中高效应用,Informer将其扩展为生成方式。Informer不选择特定的标志作为标记,而是从输入序列中采样一个长为 ( L token ) ( L_{\text{token}} ) (Ltoken) 的序列,例如在预测168个点(实验部分中的7天温度预测)时,Informer会将目标序列之前的5天作为“起始标记”,并使用 ( X de = X 5 d X 0 ) ( X_{\text{de}} = X_{5d} X_0 ) (Xde=X5dX0) 作为生成风格推理解码器的输入。 ( X 0 ) ( X_0 ) (X0) 包含目标序列的时间戳,即目标周期的上下文。然后,Informer的解码器通过一次前向过程而不是传统编码器-解码器架构中的耗时的“动态解码”来预测输出。

为了增强蒸馏操作的稳健性,Informer构建了主堆栈的副本,并逐渐减少自注意力蒸馏层的数量,每次减少一层,如图2中的金字塔所示,从而使它们的输出维度对齐。因此,Informer连接所有堆栈的输出,并得到编码器的最终隐藏表示。

Informer选择在预测目标序列时使用均方误差(MSE)损失函数,并将损失从解码器的输出传播回整个模型。

3. LSTNet (Long Short-term Time-series Network)

  • 论文链接: LSTNet: Learning Long-Short Term Relationships for Time Series Forecasting
  • 时间 2018年
    这篇论文专注于多元时间序列预测,使用了一种名为LSTNet的深度学习框架,旨在同时捕捉长期和短期模式。让我们逐节来理解一下:

3.1 问题阐述

论文的目标是进行多元时间序列的预测。具体而言,给定一个完全观察到的时间序列信号集合 ( Y = { y 1 , y 2 , … , y T } ) ( Y = \{y_1, y_2, \ldots, y_T\} ) (Y={y1,y2,,yT}),其中 ( y t ∈ R n ) ( y_t \in \mathbb{R}^n ) (ytRn) ( n ) ( n ) (n) 是每个信号的维度,任务是以滚动预测的方式预测未来的信号。例如,要预测 ( y T + h ) ( y_{T+h} ) (yT+h)(其中 ( h ) ( h ) (h) 是预测的时间跨度),模型使用的数据是直到时间 ( T ) ( T ) (T),即 ( { y 1 , y 2 , … , y T } ) ( \{y_1, y_2, \ldots, y_T\} ) ({y1,y2,,yT})。类似地,要预测 ( y T + h + 1 ) ( y_{T+h+1} ) (yT+h+1),则使用的数据是直到 ( T + 1 ) ( T+1 ) (T+1),即 ( { y 1 , y 2 , … , y T + 1 } ) ( \{y_1, y_2, \ldots, y_{T+1}\} ) ({y1,y2,,yT+1})

3.2 卷积组件

LSTNet的第一层是一个无池化的卷积网络。其目的是在时间维度上提取短期模式和变量之间的局部依赖关系。具体工作如下:

  • 卷积层包含多个宽度为 ( ω ) ( \omega ) (ω),高度为 ( n ) ( n ) (n) 的滤波器(高度设置为变量数目)。
  • 每个滤波器 ( W k ) ( W_k ) (Wk) 扫过输入矩阵 ( X ) ( X ) (X),并产生输出 ( h k = RELU ( W k ∗ X + b k ) ) ( h_k = \text{RELU}(W_k * X + b_k) ) (hk=RELU(WkX+bk)),这里 ( ∗ ) ( * ) () 表示卷积操作, ( RELU ( x ) = max ⁡ ( 0 , x ) ) ( \text{RELU}(x) = \max(0, x) ) (RELU(x)=max(0,x)) 是激活函数。
  • 通过在输入矩阵 ( X ) ( X ) (X) 的左侧进行零填充,使得每个 ( h k ) ( h_k ) (hk) 都是长度为 ( T ) ( T ) (T) 的向量。
  • 卷积层的输出矩阵大小为 ( d c × T ) ( d_c \times T ) (dc×T),其中 ( d c ) ( d_c ) (dc) 是滤波器的数量。

3.3 循环组件

卷积层的输出同时被馈送到循环组件和循环跳跃组件(在第 3.4 小节中描述)。循环组件采用门控循环单元(GRU)[6]作为循环层,并使用 RELU 函数作为隐藏状态的更新激活函数。时间 ( t ) ( t ) (t) 时刻的循环单元的隐藏状态计算如下:

  • 重置门 ( r t = σ ( x t W x r + h t − 1 W h r + b r ) ) ( r_t = \sigma(x_t W_{xr} + h_{t-1} W_{hr} + b_r) ) (rt=σ(xtWxr+ht1Whr+br))
  • 更新门 ( u t = σ ( x t W x u + h t − 1 W h u + b u ) ) ( u_t = \sigma(x_t W_{xu} + h_{t-1} W_{hu} + b_u) ) (ut=σ(xtWxu+ht1Whu+bu))
  • 计算单元 ( c t = RELU ( x t W x c + r t ⊙ ( h t − 1 W h c ) + b c ) ) ( c_t = \text{RELU}(x_t W_{xc} + r_t \odot (h_{t-1} W_{hc}) + b_c) ) (ct=RELU(xtWxc+rt(ht1Whc)+bc))
  • 最终隐藏状态 ( h t = ( 1 − u t ) ⊙ h t − 1 + u t ⊙ c t ) ( h_t = (1 - u_t) \odot h_{t-1} + u_t \odot c_t ) (ht=(1ut)ht1+utct)

这些组件共同构成了LSTNet模型的核心部分,用于处理多元时间序列数据,并能有效地捕捉数据中的长期和短期模式。

4. MLP (Multilayer Perceptron)

  • 论文链接: 通常,MLP作为基本的神经网络结构,并没有单独的特定论文,但相关应用和原理可以在深度学习教科书或基础论文中找到。

5. NBEATS (Neural Basis Expansion Analysis)

  • 论文链接: N-BEATS: Neural Basis Expansion Analysis for Time Series Forecasting
    N-BEATS(神经网络的B-样条分解)模型是一种用于时间序列预测的深度学习架构。它的设计遵循以下几个关键原则:
  1. 基础架构的简单性与深度性:基础架构应该简单而通用,同时能够表达复杂的关系。
  2. 不依赖于时间序列特定的特征工程或输入缩放:这允许探索纯深度学习架构在时间序列预测中的潜力。
  3. 可扩展性:为了探索可解释性,架构应可扩展以使其输出对人类可解释。
    N-BEATS模型的基本构建块具有分叉架构,如图1(左)所示。每个块接受其相应的输入x并输出两个向量x和y。对于模型中的第一个块,其相应的x是整体模型的输入——一个历史回看窗口,长度为特定长度,以最后一个测量观测值为结束。我们设置回看窗口的长度为2H到7H的预测范围H的倍数。对于其余的块,它们的输入x是前一个块的残差输出。每个块有两个输出:y,块的前向预测长度H;和x,块的最佳估计x,也称为‘backcast’,给定块可以用来近似信号的函数空间约束。
    内部,基本构建块包含两个部分。第一部分是一个全连接网络,用于预测扩展系数的向前和向后预测器。第二部分包含向后和向前基层,它们接受相应的向前和向后扩展系数,并在基函数集合上投影它们,产生向后cast x和向前预测输出y。
    N-BEATS模型的核心创新之一是双层残差堆叠原理。它有两个残差分支:一个沿着每个层的backcast预测,另一个沿着每个层的forecast分支。这种结构使得网络在梯度传播上更加透明,并允许通过有意义的部分预测的聚合来实现可解释性。
    为了提高模型的可解释性,提出了两种配置:一种是不依赖于时间序列特定知识的通用深度学习架构,另一种是增加某些归纳偏置以使其可解释。在可解释的架构中,通过在堆叠级别为基层添加结构来设计趋势和季节性分解,使得堆叠输出更容易解释。例如,趋势模型可以通过限制gbs和gf为小度数p的多项式来实现单调或缓慢变化的函数,而季节性模型则通过限制gbs和gf为周期性函数来实现周期性的季节性波动。
    N-BEATS模型的整体可解释架构包含两个堆叠:趋势堆叠后是季节性堆叠。通过双层残差堆叠和forecast/backcast原理,趋势组件在输入窗口x被喂入季节性堆叠之前被移除,部分预测的趋势和季节性作为可解释的独立输出。每个堆叠由几个连接的块组成,并且每个堆叠共享其相应的非可学习的gb和gf。我们发现,除了共享gb和gf之外,在堆叠内共享所有块的权重可以获得更好的验证性能。
    N-BEATS模型提供了两种架构配置,一种是不依赖于时间序列特定知识的通用深度学习架构,另一种是增加某些归纳偏置以使其可解释。在通用架构中,gb和gf被设置为前一层输出的线性投影。这种配置的输出可以表示为:
    y = V f f + b f y = V_f f + b_f y=Vff+bf
    x = V b b + b b x = V_b b + b_b x=Vbb+bb
    其中,Vf和Vb是预测和回溯的基向量,f和b是相应的扩展系数。在这种配置中,基本构建块中的全连接层(FC层)学习部分预测y的预测分解,该分解是基于网络学习到的基Vf。矩阵Vf的维度是H dim(f),其中H是预测步长,dim(f)是f的维度。因此,Vf的第一维度在预测域中表示离散时间索引,第二维度表示基函数的索引。Vf的列可以被视为时间域中的波形。由于没有对Vf的形式施加额外的约束,深度模型学习到的波形没有内在的结构(在我们的实验中没有表现出任何结构)。这导致y不可解释。
    为了使模型可解释,我们建议在堆叠级别为基层添加结构,以设计趋势和季节性分解。例如,季节性模型可以通过限制gb和gf为周期性函数来实现,例如使用傅立叶级数作为基函数。这种配置的输出可以表示为:
    y s e a s = S f y_{seas} = S f yseas=Sf
    其中,S是基矩阵,包含周期性函数的基,f是预测的傅立叶系数。
    整体可解释架构包含两个堆叠:趋势堆叠后是季节性堆叠。通过双层残差堆叠和forecast/backcast原则,趋势组件在输入窗口x被喂入季节性堆叠之前被移除,趋势和季节性的部分预测作为可解释的独立输出。每个堆叠由几个连接的块组成,如图1所示,并且每个堆叠共享其相应的非可学习的gb和gf。在趋势和季节性模型中,每个堆叠包含3个块。我们发现,除了共享gb和gf之外,在堆叠内共享所有块的权重可以获得更好的验证性能。

6. NHiTS (Neural Hierarchical Interpolation for Time Series)

  • 论文链接: https://arxiv.org/pdf/2201.12886.pdf
  • 时间 2022年
    多速率数据采样: 我们在全连接块前引入了子采样层,显著减少了内存占用和所需计算量,同时保持了模拟长期依赖关系的能力。

分层插值: 我们通过减少神经网络预测的维度,并通过多尺度分层插值将其时间尺度与最终输出匹配,以确保多步预测的平滑性。这一新颖技术并非仅适用于我们提出的模型,也可以融入到不同的架构中。

N-HiTS 架构: 这是一种新颖的方法,通过在各个块之间同步输入采样速率与输出插值尺度,使得每个块专注于预测时间序列信号的特定频率带。
在多变量长期预测领域,基于Transformer的方法近年来主导了这一领域。例如,Autoformer(Wu等,2021)是一种具有分解能力和基于傅里叶变换的注意力近似的编码器-解码器模型;Informer(Zhou等,2020)采用了基于MLP的多步预测策略,通过稀疏性逼近自注意力;Reformer(Kitaev, Łukasz Kaiser和Levskaya,2020)利用局部敏感哈希来逼近注意力;LogTrans(Li等,2019)则使用了局部/对数稀疏注意力。

关于多步预测策略的研究揭示了在偏差/方差权衡中的不同策略。直接策略为每个预测步骤分配一个不同的模型,降低了偏差但增加了方差,避免了经典递归策略中预测步骤之间的误差累积。相反,联合预测策略使用单一模型一次性生成所有步骤的预测,达到了方差和偏差之间的平衡,避免了误差累积,并利用了共享的模型参数(Bao, Xiong和Hu,2014;Atiya和Taieb,2016;Wen等,2017)。

多速率输入采样是应对极长预测时段挑战的另一重要方法。之前的预测文献意识到这一问题,并提出了混合数据采样回归(MIDAS;Ghysels, Sinko和Valkanov,2007;Armesto, Engemann和Owyang,2010),以缓解参数过多的问题,同时保留高频时间信息。MIDAS回归保持了线性自回归模型的经典递归预测策略,但定义了一种简洁的输入馈送方式。

插值在许多领域广泛应用于增强建模信号的分辨率,例如信号和图像处理(Meijering,2002)。在时间序列预测中,插值的应用包括完成不均匀采样数据和噪声滤波器(Chow和Loh Lin,1971;Fernandez,1981)。当介绍N-HiTS方法时,可以强调其与N-BEATS相似和创新之处,以及其在长期预测中的优势。

N-HiTS方法扩展了Neural Basis Expansion Analysis方法(N-BEATS),在多个关键方面进行了优化,特别是在长期预测的背景下,提高了准确性和计算效率。该方法利用了输入信号的多速率采样和多尺度合成预测,从而构建了预测的分层结构,显著减少了计算需求并改善了预测的准确性。

与N-BEATS类似,N-HiTS通过多个块上的本地非线性投影来实现其预测能力。每个块包含一个多层感知器(MLP),用于学习生成其基础的回溯和预测输出的系数。回溯输出用于清洁后续块的输入,而预测输出则通过求和来组成最终的预测。

N-HiTS的架构由多个堆栈(stacks)组成,每个堆栈中有多个块(blocks)。每个块包含一个MLP,用于预测前向和后向的基础系数。这种结构允许N-HiTS在不同层次上学习和合成信号特征,通过控制不同堆栈和块之间的表达能力比率,进一步提升了预测的精度和泛化能力。

7. RNN (Recurrent Neural Network)

  • 论文链接: RNN作为基础的循环神经网络结构,在深度学习文献中有大量相关文献和应用。

8. SCINet (SCINet: Time Series Modeling and Forecasting with Sample Convolution and Interaction)

  • 论文链接: Sample Convolution Interaction Network for Extreme Multi-label Text Classification

这些论文链接将帮助你进一步了解每个模型的技术细节和应用背景。


### 2. `paddlets.models.representation` - 时序表征模型模块#### 功能
- 提供时序数据的表征学习模型。
- 支持将时序数据转化为低维表示。
- 常用模型包括Autoencoder、VAE等。#### 示例
```python
from paddlets.models.representation import TSEncoder# 假设已经准备好训练数据train_data
model = TSEncoder(in_chunk_len=24, out_chunk_len=24)
model.fit(train_data)
representations = model.transform(test_data)

3. paddlets.models.anomaly - 时序异常检测模型模块

功能
  • 提供多种用于时序数据异常检测的模型。
  • 支持无监督和有监督的异常检测。
  • 常用模型包括Isolation Forest、Autoencoder、LSTM-VAE等。
示例
from paddlets.models.anomaly import LSTMAutoEncoder# 假设已经准备好训练数据train_data
model = LSTMAutoEncoder(in_chunk_len=24)
model.fit(train_data)
anomalies = model.predict(test_data)

4. paddlets.models.classify - 时序分类模型模块

功能
  • 提供多种用于时序数据分类的模型。
  • 支持多类别分类任务。
  • 常用模型包括LSTMClassifier、CNNClassifier等。
示例
from paddlets.models.classify import LSTMClassifier# 假设已经准备好训练数据train_data和标签train_labels
model = LSTMClassifier(in_chunk_len=24, n_classes=3)
model.fit(train_data, train_labels)
predictions = model.predict(test_data)

结语

通过这些模块,PaddleTS为用户提供了一个完整的时序数据分析解决方案。学生们可以根据不同的应用需求选择相应的模型模块,快速构建并部署时序预测、表征、异常检测和分类模型。

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

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

相关文章

VM4.3 二次开发03 小技巧

VM4.3 二次开发03 小技巧 1.查看SDK帮助文档。 SDK帮助文档路径:安装目录下的路径,注意自己安装时的盘符,我是安装在D盘的。 D:\Program Files\VisionMaster4.3.0\Development\V4.x\Documentations\CH 示例程序目录 D:\Program Files\Visi…

模拟实现 Atoi

模拟实现 Atoi 分析思路: 首先先判断是否为空指针 接着我们来引入一个新的库函数isspace它是来解决前面有多少空格的问题,接着是处理正负号的问题,如果指针检测到前面有—,那么就令flg-1, 我们又要引入一个新的库函数isdight …

SAP ABAP 锁对象的分类及其作用

记录锁概念,好记性不如烂笔头。 原博客链接:SAP 锁对象的分类及其作用_sap 程序锁对象-CSDN博客 锁类型描述解释说明E独占锁(写入锁)锁定的数据仅可由一个用户进行显示或编辑。对另一独占锁或共享锁的请求仅将遭到拒绝&#xff…

Java 18新特性概览与解读

随着技术的不断进步,Java作为最流行的编程语言之一,也在持续地进行版本更新,为开发人员提供更强大、更高效的工具和特性。Java 18作为最新的稳定版本,引入了一系列引人注目的新特性和改进。以下是对Java 18中一些主要新特性的详细…

电商淘宝京东,精准关键词搜索API接口

当使用电商淘宝京东的精准关键词搜索API接口时,以下是清晰的步骤指南: 一、注册与申请API密钥 注册账号:在淘宝开放平台或京东开放平台注册成为开发者,并创建账号。 创建应用:登录后,在开放平台创建一个应…

最值得入手的宠物空气净化器!希喂、352、安德迈真实测评~

随着天气越来越热,猫咪们也都开始掉毛啦。这时候,家里面到处都飘浮着猫咪们的浮毛和粑粑异味。抵抗力较差的铲屎官,身体就会出现一些问题,例如打喷嚏、咳嗽等呼吸道问题。 很多铲屎官以为用粘毛器、吸尘器等工具就能将猫咪们掉落…

msvcp100.dll已加载但找不到入口点的处理方法,分析比较靠谱的msvcp100.dll解决方法

用户在日常使用中有时会遇到一个错误提示:“已加载 msvcp100.dll,但找不到入口点”。这一信息不仅引发了使用上的不便,也对软件的稳定性产生了质疑。理解并解决该问题不仅对确保计算机正常运行至关重要,也对维护软件的长期稳定性和…

虚拟货币投资指南|XEX交易所

什么是虚拟货币? 虚拟货币是一种基于区块链技术的数字资产,具有去中心化、透明性和安全性等特点。比特币(BTC)、以太坊(ETH)和莱特币(LTC)等是目前较为知名的虚拟货币。 虚拟货币投…

【Android面试八股文】谈谈你对TCP 流量控制与拥塞控制的理解

文章目录 一、流量控制1.1 流量控制的概念1.2 滑动窗口1.3 零窗口二 、拥塞控制2.1 拥塞控制的概念2.2 慢启动2.3 拥塞避免2.4 快重传与快恢复2.4.1 快重传2.4.2 快恢复三、总结TCP的拥塞控制和流量控制虽然采取的动作很相似,但 拥塞控制与网络的拥堵情况相关联,而 流量控制…

腾讯元宝APP上线:国内大模型产品新力量

随着近日腾讯元宝APP的正式上线,国内大模型产品领域又迎来了一位新成员。这款APP的推出,不仅丰富了市场选择,也为我们提供了更多元、更智能的交互体验。在当下这个信息爆炸的时代,大模型产品以其强大的数据处理能力和广泛的应用场…

JavaScript 的新技能:5 大技巧,打造更强大的 Web 应用

大家好,我是前端宝哥。 JavaScript 在现代 Web 开发中简直是必不可少的工具! 它一直在不断变化,为我们带来新玩法。今天就来跟大家聊聊 5 个顶尖的 JavaScript 技术,教你用更酷炫的方式构建 Web 应用! 为什么 JavaScri…

shell脚本编程(概念、编程和语句)

一、shell脚本概述 1、shell脚本概念 Shell 脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件,将一些 shell 的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能。 2、Shell 脚…

js实例对象读写原型对象成员

在 JavaScript 中,实例对象可以读写原型对象的成员。原型对象是一个对象,用于存储共享的属性和方法,它是通过构造函数创建的实例对象的共享属性和方法的来源。 你可以通过以下几种方式来读写原型对象的成员: 通过实例对象的__pro…

15、架构-可靠通讯之服务安全

概述 我们已经了解了与具体架构形式无关的业界主流安全概念和技术标准(如TLS、JWT、OAuth 2等概念),在上一章节探讨了与微服务运作特点相适应的零信任安全模型。在本节中,我们将从实践和编码的角度出发,介绍在微服务时…

上证50etf期权的手续费要多少钱?期权懂分享

今天带你了解上证50etf期权的手续费要多少钱?上证50ETF期权的开户一般交易手续费默认为7元一张。在进行期权开户之前,建议提前联系一名券商的客户经理,协商期权手续费优惠事宜。 上证50etf期权的手续费要多少钱? 上证50ETF期权的…

IDEA中SpringMVC的运行环境问题

文章目录 一、IEAD 清理缓存二、用阿里云和spring创建 SpringMVC 项目中 pom.xml 文件的区别 一、IEAD 清理缓存 springMVC 运行时存在一些之前运行过的缓存导致项目不能运行,可以试试清理缓存 二、用阿里云和spring创建 SpringMVC 项目中 pom.xml 文件的区别 以下…

通过LotusScript中的NotesDateTime类来进行时间计算

大家好,才是真的好。 今天我们介绍的是时间日期处理,其实以前也讲过,主要是通过LotusScript中的NotesDateTime类来进行时间计算。 但是这里也存在一个问题:就是时间日期类的比较只能计算出秒,不能计算出毫秒。 毕竟…

python反爬⾍策略应对

应对⽹站的反爬⾍措施通常涉及到⼀系列技术和策略,以模仿正常⽤⼾的⾏为或规避检测机制。 1. 更换⽤⼾代理(User-Agent):很多⽹站会检查HTTP请求的 User-Agent 字段来识别爬⾍。通过更换不同的 User-Agent ,爬⾍可以…

BEV 中 multi-frame fusion 多侦融合(一)

文章目录 参数设置align_dynamic_thing:为了将动态物体的点云数据从上一帧对齐到当前帧流程旋转函数平移公式filter_points_in_ego:筛选出属于特定实例的点get_intermediate_frame_info: 函数用于获取中间帧的信息,包括点云数据、传感器校准信息、自车姿态、边界框及其对应…

电脑怎么录音?分享2种音频录制方法

在日常生活和工作中,我们经常需要录制电脑上的音频,无论是为了记录会议内容、保存网络课程,还是为了制作自己的音频素材,录音功能都显得尤为重要。那么电脑怎么录音?本文将详细介绍2种方法教你如何在电脑上进行录音&am…