当前位置: 首页 > news >正文

2023.04.16 学习周报

文章目录

  • 摘要
  • 文献阅读
    • 1.题目
    • 2.摘要
    • 3.简介
    • 4.Dual-Stage Attention-Based RNN
      • 4.1 问题定义
      • 4.2 模型
        • 4.2.1 Encoder with input attention
        • 4.2.2 Decoder with temporal attention
        • 4.2.3 Training procedure
    • 5.实验
      • 5.1 数据集
      • 5.2 参数设置和评价指标
      • 5.3 实验结果
    • 6.结论
  • MDS降维算法
  • 梯度
    • 1.基础知识
    • 2.雅可比矩阵
    • 3.海森矩阵
    • 4.泰勒展开式
  • 广义相对论
    • 1.形象描述物体的位置
    • 2.定义物体的速度
    • 3.测地线方程
    • 4.度规张量
    • 5.黎曼曲率张量
  • Navier-Stokes方程
    • 1.NS方程的精髓
    • 2.有限元法求解NS方程的步骤
    • 3.加权残差法
  • 总结


摘要

This week, I read a computer science about time series prediction. It is mentioned that few models can properly capture long-term temporal correlations and select relevant sequences for prediction. Therefore, it proposes a Dual-Stage Attention-Based Recurrent Neural Network to solve this problem. Firstly, an input attention mechanism is proposed, which can adaptively extract the features of each moment of the relevant node. Then, a temporal attention mechanism is used to select the implicit state of the relevant node across all time steps. The experimental results show that DA-RNN is superior to the most advanced time series prediction method. In addition, I learn MDS dimension reduction algorithm, gradient, general relativity and Navier-Stokes equations. For MDS dimension reduction algorithm, I try to use python to complete the algorithm implementation; For gradient, I learn Jacobian matrix and Hessian matrix to expand the understanding of gradient; For general relativity, I learn and comb the relevant knowledge; For NS equation, I learn Weighted Residual Method, which laid a foundation for learning Finite Element Method.

本周,我阅读了一篇与时间序列预测相关的文章。文章提到很少有模型可以适当地捕捉长期的时间相关性,并选择相关的序列进行预测。于是,文章提出了一种基于双阶段注意力的循环神经网络来解决这个问题。首先,提出了一个输入注意力机制,该机制可以自适应地提取相关节点每个时刻的特征。然后,使用了一个时间注意力机制,在所有时间步中选择相关节点的隐含状态。通过实验结果表明,DA-RNN 优于最先进的时间系列预测方法。此外,我学习了MDS降维算法、梯度、广义相对论和Navier-Stokes方程的相关内容。对于MDS降维算法,我尝试用python完成对算法的实现;对于梯度,我学习了雅可比矩阵和海森矩阵去扩展对梯度的认识;对于广义相对论,我学习并梳理了相关的知识;对于NS方程,我学习了加权残差法,为学习有限元法打下基础。


文献阅读

1.题目

文献链接:A Dual-Stage Attention-Based Recurrent Neural Network for Time Series Prediction

2.摘要

The Nonlinear autoregressive exogenous (NARX) model, which predicts the current value of a time series based upon its previous values as well as the current and past values of multiple driving (exogenous) series, has been studied for decades. Despite the fact that various NARX models have been developed, few of them can capture the long-term temporal dependencies appropriately and select the relevant driving series to make predictions. In this paper, we propose a dual-stage attention-based recurrent neural network (DA-RNN) to address these two issues. In the first stage, we introduce an input attention mechanism to adaptively extract relevant driving series (a.k.a., input features) at each time step by referring to the previous encoder hidden state. In the second stage, we use a temporal attention mechanism to select relevant encoder hidden states across all time steps. With this dual-stage attention scheme, our model can not only make predictions effectively, but can also be easily interpreted. Thorough empirical studies based upon the SML 2010 dataset and the NASDAQ 100 Stock dataset demonstrate that the DA-RNN can outperform state-of-the-art methods for time series prediction.

3.简介

背景:
1)时间序列预测算法已广泛应用于许多领域,如金融市场预测,天气预报,复杂动力系统分析等;
2)著名的自回归移动平均模型(ARMA)及其变体已经证明了它们在各种现实世界应用中的有效性,但它们不能建模非线性关系,也不能区分外生输入项;
3)为了解决这个问题,各种非线性自回归外生模型(NARX)已经被开发;
4)考虑最先进的 RNN 模型,例如编码器-解码器网络和基于注意力的编码器解码器网络,用于时间序列预测。

问题:
1)处理时间序列问题;
2)RNN 共享一组训练参数,因此梯度在反向传播过程中,不断连乘,数值不是越来越大,就是越来越小,即出现长序列训练过程中的梯度消失和梯度爆炸问题;
3)编码后的定长向量能力受到限制,无法存储众多时间步骤的信息,当序列长度增加时,性能将大幅下降。

亮点:
不仅在解码器的输入阶段引入注意力机制,还在编码器阶段引入注意力机制,编码器阶段的注意力机制实现了特征选取和把握时序依赖关系的作用。

4.Dual-Stage Attention-Based RNN

针对目前非线性自回归模型难以捕捉长期时间依赖关系的问题,文章提出了基于双阶段注意力的循环神经网络(DA-RNN);第一步引入输入注意力机制去提取每个时间步的特征,第二步使用时间注意力机制去选择所有时间步长中相关的隐含状态;模型如下图所示:
在这里插入图片描述

4.1 问题定义

假定 n 维的时间序列表示为 X = (x^1, x^2, …, x^n)T = (x1, x2, …, xT) ∈ Rn*T,其中 T 表示序列长度。现给定一个目标序列 (y1, y2, …, yT-1) 以及其他序列 (x1, x2, …, xT) -> xt ∈ Rn,最终需要预测目标序列在 T 时刻的值,即学习得到一个映射函数F:
在这里插入图片描述

4.2 模型

4.2.1 Encoder with input attention

1)编码器采用 RNN 结构的 LSTM 模型,将每一个时间步的 n 维数据映射到 m 维,表示为:
在这里插入图片描述
2)受到注意力机制的启发,提出input attention-based encoder,给定第k个序列 xk = (x1k, x2k, …, xTk)T ∈ RT,利用多层感知机构建注意力机制,表示为:
在这里插入图片描述
3)可以看出,首先在每一个单独的序列上计算 et^k,然后在不同的维度之间利用softmax计算 at^k,其表示第 k 个输入特征在时间 t 的重要性的注意力权重。因此,提取的序列特征以及每个时间步的隐含状态为:
在这里插入图片描述
4)模型使用输入注意力机制,编码器可以选择性地关注某些序列,而不是平等地对待所有序列。

4.2.2 Decoder with temporal attention

为了预测输出,使用基于 LSTM 的循环神经网络来作为编码输入信息的解码器;但是随着输入序列长度地增加,编码器-解码器网络的性能会迅速恶化;因此,在引入输入注意力的编码器后,在解码器中使用时间注意力机制来自适应地选择所有时间步长的相关编码器隐藏状态。

1)每个编码器隐藏状态在时刻 t 的注意力权重是根据前一个解码器隐藏状态 dt-1 和 LSTM 单元状态 s’t-1计算得到:
在这里插入图片描述
2)权重 βi,t 表示第 i 个编码器隐藏状态对t时刻值预测的重要性,即计算所有隐含状态的加权求和:
在这里插入图片描述
3) ct 在每个时刻是不一样的,然后与目标序列 (y1, y2, …, yT-1) 进行拼接,重新计算得到新的目标序列:
在这里插入图片描述
4)利用计算得到的 yt-1 hat,计算解码器在 t 时刻的隐含状态:
在这里插入图片描述
5)上图中 f2 是一个LSTM单元,最后估计预测输出 yT hat 为:
在这里插入图片描述

4.2.3 Training procedure

1)使用小批量随机梯度下降(SGD)和 Adam 优化器来训练模型;
2)minibatch 的大小是128,learning rate 从0.001开始,每 10000 次迭代后学习率降低10%;
3)DA-RNN 是光滑且可微的,因此参数可以通过均方误差作为目标函数的标准反向传播进行学习:
在这里插入图片描述
其中:N是训练样本的个数。

5.实验

5.1 数据集

两个用于实证研究的数据集:
1)SML 2010 是一个用于室内温度预测的公共数据集;
2)NASDAQ 100 是一个用于股票预测的数据集。
在这里插入图片描述

5.2 参数设置和评价指标

在这里插入图片描述
1)在 DA-RNN 中有三个参数,即窗口 T 的时间步长,编码器 m 的隐藏状态大小和解码器 p 的隐藏状态大小,其中分别设为 m = p = 64 和128。
2)为了衡量各种时间序列预测方法的有效性,考虑了三个不同的评估指标。
RMSE:
在这里插入图片描述
MAE:
在这里插入图片描述
MAPE:
在这里插入图片描述

5.3 实验结果

1)实验证明了输入注意力机制可以帮助 DA-RNN 选择相关的输入序列,抑制有噪声的输入序列:
在这里插入图片描述
2)实验证明了时间注意力机制可以在所有时间步中选择相关的编码器隐藏状态来捕获长期依赖关系:
在这里插入图片描述
3)实验证明了 DA-RNN对参数的鲁棒性优于Input-Attn-RNN:
在这里插入图片描述

6.结论

1)作者提出了一种新型的基于注意力的双阶段循环神经网络(DA-RNN),该网络由具有输入注意力机制的编码器和具有时间注意力机制的解码器组成;
2)基于这两种注意力机制,DA-RNN 不仅可以自适应地选择最相关的输入特征,而且可以适当地捕获时间序列的长期时间依赖性;
3)作者提出的 DA-RNN 模型可用于时间序列预测,并有潜力作为计算机视觉任务中的通用特征学习工具;
4)在未来,作者将使用 DA-RNN 进行排序和二进制编码。

MDS降维算法

python实现MDS算法:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.manifold import MDS
import matplotlib.pyplot as plt# 1.计算两点间的距离
def cal_pairwise_dist(x):sum_x = np.sum(np.square(x), 1)dist = np.add(np.add(-2 * np.dot(x, x.T), sum_x).T, sum_x)return dist# 2.MDS算法
def my_mds(data, n_dims):n, d = data.shape# 计算四个中间变量T1, T2, T3, T4dist = cal_pairwise_dist(data)dist[dist < 0] = 0T1 = np.ones((n, n)) * np.sum(dist) / n ** 2T2 = np.sum(dist, axis=1, keepdims=True) / nT3 = np.sum(dist, axis=0, keepdims=True) / n# 得到矩阵BB = -(T1 - T2 - T3 + dist) / 2# 对矩阵B进行特征分解eig_val, eig_vector = np.linalg.eig(B)index_ = np.argsort(-eig_val)[:n_dims]picked_eig_val = eig_val[index_].realpicked_eig_vector = eig_vector[:, index_]return picked_eig_vector * picked_eig_val ** 0.5if __name__ == '__main__':iris = load_iris()data = iris.dataY = iris.targetdata_1 = my_mds(data, 2)data_2 = MDS(n_components=2).fit_transform(data)plt.figure(figsize=(8, 4))plt.subplot(121)plt.title("my_MDS")plt.scatter(data_1[:, 0], data_1[:, 1], c=Y)plt.subplot(122)plt.title("sklearn_MDS")plt.scatter(data_2[:, 0], data_2[:, 1], c=Y)plt.show()

与sklearn实现的效果进行对比:
在这里插入图片描述

梯度

1.基础知识

在空间中的每一个点都可以确定无限多个方向,一个多元函数在某个点也必然有无限多个方向。因此,在这无限多个方向中导数最大的一个是多少?它是沿什么方向达到的?描述这个最大方向导数及其所沿方向的矢量就是梯度,它直接反映了函数在这个点的变化率的数量级。因此,梯度的本质是一个矢量, 表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向变化最快,变化率最大。

雅可比矩阵和海森矩阵都和梯度相关,但是它们从不同的角度看待梯度。

2.雅可比矩阵

1)雅可比矩阵描述了相同维度的变量之间相互影响的程度;
2)假设 F:Rn → Rm 是一个从 n 维欧式空间映射到 m 维欧式空间的函数。这个函数由 m 个实函数组成:
在这里插入图片描述
如果这些函数的偏导数存在,则可以组成一个 m 行 n 列的矩阵,这个矩阵就是雅可比矩阵:
在这里插入图片描述
其中的每一个元素 Ji,j 对应的是 ∂yi/∂xj ,表示 xj 对 yi 的影响程度,可以表示为:
在这里插入图片描述
3)雅可比矩阵描述的是每个自变量变化时,函数值相应的变化情况,因此它是梯度的广度拓展;
4)我们可以发现雅可比矩阵不一定为方阵,它是一个有着矩阵外观的二阶张量;
5)梯度是雅可比矩阵的一种特殊形式,当 m=1 时函数的雅可比矩阵就是梯度。

3.海森矩阵

1)海森矩阵描述了梯度的变化率,即描述了函数曲面的弯曲程度和方向;
2)海森矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,假设有一个实数函数:
在这里插入图片描述
如果 f 的所有二阶偏导数都存在并在定义域内连续,那么函数 f 的海森矩阵为:
在这里插入图片描述
其中:第 i 行第 j 列的元素 Hi,j 表示函数曲面在 xi 和 xj 方向的弯曲程度。
3)因此,海森矩阵描述了梯度方向变化的程度,它是梯度的深度拓展。

综上所述,雅可比矩阵和海森矩阵从不同的角度描述了梯度的性质,前者描述了自变量变化对函数值的影响程度,后者描述了梯度在不同方向上的弯曲程度。这两个矩阵都是优化算法中的重要工具,可以用来决定梯度下降、牛顿法等优化算法的步长和方向。

4.泰勒展开式

1)n 阶泰勒展开式在 x = a 处展开:
在这里插入图片描述
2)由泰勒展开式推导梯度下降:
在这里插入图片描述
因此,只需迭代 x 就可以让函数 f(x) 的值降低。

广义相对论

广义相对论方程:
在这里插入图片描述

1.形象描述物体的位置

1)宇宙的时空具有四个维度,为了方便理解,我们把它简化为二维平面。在这个二维平面上画一条曲线去描述一个物体,这条曲线被称为物体的世界线。然后把这条世界线切分成多个具有相同间隙的线段,任选一个切点为原点,于是就可以对这些间隙进行编号,这样就把曲线转换成了一系列连续的点,这些就可以表示物体的轨迹,它代表了物体在时空中的运动。因此,这些编号被称为物体的原时τ。
在这里插入图片描述
2)为了表示物体在时空中的位置,于是在平面上建立一个二维坐标系,这个二维坐标系用网格表示,因此我们可以通过两个数字去表示物体的位置。需要注意的是,这些网格的形状和大小是不规则的,不具备任何物理意义。
在这里插入图片描述
3)在真实的宇宙时空中,没有物体处于静止状态,尽管物体可以在空间中保持静止,但它仍会一直在时间的流逝中运动。当物体垂直地落向地面,我们可以准确地测量出物体到地心的距离,以及在测量物体下落时所花费的时间。因此,可以建立一个二维坐标系,横轴表示时间,纵轴表示物体的高度,随着原时的流逝,我们可以得到物体运动的轨迹。
在这里插入图片描述
但需要注意的是,流逝的时间和物体的原时流逝速度不相同。

2.定义物体的速度

1)物体在时空中的速度是一个与世界线相切的向量,它的方向始终指向前方。物体的速度大小,即速率,在任何位置都是相同的。实际上,宇宙中所有物体都是以相同的速率在时空中运动,即光速c。因此可以得到第一个数学方程,宇宙中所有物体速度的大小始终等于光速:
在这里插入图片描述
2)考虑用坐标来表示物体的速度,在横轴和纵轴上分别有两个基向量,于是可以通过横轴和纵轴来分解速度。因此可以得到第二个数学方程,即速度等于各个维度速度分量的和,即爱因斯坦求和约定:
在这里插入图片描述
3)思考:在给定两个坐标值的前提下,是否可以通过勾股定理来求物体在时间线上的速度?其实是不可行的,因此两维平面上的坐标值不代表真实的物理距离,并且网格坐标是不规则的。

3.测地线方程

1)在宇宙中,物体在自然状态下会沿直线运动,当没有外力干扰时,物体在时空中的世界线趋向直线,即直线轨迹的平移对称性。因此,对于物体而言,我们用箭头表示物体的运动速度,就可以沿着箭头自身的平移来预测物体的运动,而这种平移速度形成的轨迹称为测地线。
在这里插入图片描述
2)在宇宙中,所有物体都倾向于沿着测地线运动,在侧地线上速度向量不会发生偏转,因此得到速度对原时的导数为0,于是把第二个方程带入到这个求导方程中并展开得到:
在这里插入图片描述
注意方程的左边,我们可以观察到速度分量随原时的变化以及基向量随原时的变化。
3)由于网格坐标系是不规则的,所以基向量是可以随着轨迹发生变化的,因此以纵轴方向上的基向量为例,它沿着世界线的变化可以被分解为沿着两个坐标维度的变化乘上物体的速率再求和,这是因为物体运动得越快,基向量变化得越快。
4)由此,我们可以用基向量对坐标维度的求导表示基向量是如何沿着坐标维度变化,于是得到的这个新向量可以用两个分向量Γ表示,而纵轴方向会有四个分向量Γ,因此对于整个二维平面会有8个Γ分向量,即克里斯托福弗符号。
5)克里斯托福弗符号表示网格如何沿着每个方向变化,将克里斯托福弗符号带入前面的方程中,就可以得到测地线方程,而我们可以通过测地线方程去预测物体的整个运动轨迹。
在这里插入图片描述

4.度规张量

1)由于网格坐标系的不规则性,因此无法提供坐标系中两点之间的真实距离以及夹角信息。
2)假设坐标系中有两个非常接近的点(在同一个网格中),考虑能否通过两个点抽象的坐标值反映两点间的真实距离?通常情况下,距离的平方总可以写成两条边所有可能的乘积组合再乘上系数,系数取决于网格的形状。于是,将这些系数放进两行两列的表格中,即度规张量g。
在这里插入图片描述
3)克里斯托福弗符号描述了基向量是如何随着网格变化,而基向量与网格的形状直接相关,网格的形状由度规张量表示。通过测量度规张量,就可以得到克里斯托福弗符号的具体数值。
4)度规张量只能计算近距离的两点距离,而对于远距离的两点距离,则需要沿着路径逐个计算度规张量,即 s = ∫ds。

5.黎曼曲率张量

1)实际上,时空不总是平坦的,它可以被弯曲,这会对物体的轨迹产生影响。例如,在一个平面上,有一个箭头,我们将它向上平移再向右平移或者向右平移再向上平移,会得到箭头的方向相同,但在一个球面上,有一个箭头,我们将它向上平移再向右平移或者向右平移再向上平移,会得到箭头的方向不相同,这表示表面的弯曲。
2)举例说明,在一个弯曲的平面上有一个基向量,经过上面两次不同的平移后,会得到两个方向不同的基向量,这两个基向量的差异用向量R表示,当其为0时,表示表面是平坦的。
在这里插入图片描述
3)将克里斯托福弗符号带入上图公式,可得到向量R的最终表达式,并得到了分量的表示式,所有分量集合描述了沿表面平移基向量的每种可能性,即黎曼曲率张量(蕴含了一个表面在所有可能方向的曲率)。
在这里插入图片描述
4)由于黎曼曲率张量的体量大,于是根据分量的数标将具有16个分量的黎曼曲率张量写成具有两行两列的里奇张量,而里奇张量描述了体积是如何沿着表面变化。
5)在球面上,两条平行测地线之间的体积随着我们在表面上前进而减少,而对于某些具有对称性的球面而言,它的曲率在所有方向上都是相同的,因此用数字R表示在所有方向上的平均曲率,即里奇标量。

Navier-Stokes方程

1.NS方程的精髓

1)NS方程是描述液体或气体运动行为的基本方程之一,可以用来解释热流、水流、空气流动等现象。
2)NS方程的主要含义是,液体或气体内部的每个微小元素都受到压力、摩擦力和重力的作用,从而产生推动力和阻力,进而引起流动运动。这些微小元素的运动状态可以用速度、压力和密度等参数来描述。
3)NS方程是偏微分方程,通常可以写成连续性方程和动量方程两个方程的形式。连续性方程描述了物质守恒,即质量在时间内的变化率等于质量流入减去质量流出。动量方程描述了运动守恒,即运动量在时间内的变化率等于运动量输入减去运动量输出,再考虑压力、摩擦力和重力的影响。
4)NS方程的精髓在于,它描述了流体作为一个整体的运动特性,涉及到许多微小元素的相互作用和运动状态。因此,对于实际应用中的流体流动问题,我们需要适当简化NS方程,并采用适当的边界条件和数值方法进行求解,以获得准确的结果。

2.有限元法求解NS方程的步骤

有限元法是一种求解偏微分方程的数值方法,其中NS方程是描述流体动力学的一类偏微分方程,可以用于分析流体的流动和行为。因此,使用FEM对NS方程进行求解,主要分为以下几个步骤:
1)建立几何模型:将流体区域离散化为有限数量的单元,形成一个计算网格。这些单元通常是三角形或四边形,具有良好的几何形状,并能够充分覆盖模型中的流体区域。
2)确定边界条件:在模型边界上指定流体的速度、温度、压力等边界条件,这些条件将影响NS方程的求解结果。
3)离散化NS方程:将NS方程离散为有限元方程组,这涉及将被求解变量分解成离散的节点,以及将偏微分方程转化成离散的代数方程。
4)求解节点位移:通过求解上述离散的代数方程组,确定每个节点的位移(速度和压力)。这些位移可以用于计算流体的速度场和压力场。
5)计算物理量:利用节点位移计算流体的物理量,如速度、压力、剪切应力等。
其中:在实际求解中,需要考虑如何选择单元类型、求解策略、网格剖分等方面的问题,以及如何确保数值稳定性和精度等问题。

3.加权残差法

问题:求解 x(t),使其满足微分方程 dx/dt + x = 0,初始条件为 x(0) = 1,求解区域 t ∈ [0, 1]。于是,得到这个方程的解析解是 e^-t。即:
在这里插入图片描述
在计算机上展开到无穷阶,就能给出方程的精确解。但在现实中,只能考虑有限项,后面忽略的项称作截断误差。假设截断到二阶:
在这里插入图片描述
然后,代入原方程会产生残差 R,即 dx/dt + x = R,R ≠ 0,R 越接近于0,表示近似解越接近精确解。此时,我们可以明确知道精确解 e^-t 不在 (1, t, t^2 ) 这三个函数支撑起的函数空间中,于是我们可以做出改进。使用待定系数展开:
在这里插入图片描述
此时残差函数为:
在这里插入图片描述
因此,通过调节 c1 和 c2,最小化 R(t) 的绝对值,就能得到比 1 - t + (1/2)*(t^2) 更好的解。


总结

本周,我用 python 实现 MDS 降维算法,根据上周的数学推导,实现起来难度不大并且代码简单易懂;对梯度的相关知识进行展开学习,试图去解释了为什么说雅可比矩阵是梯度的广度拓展,海森矩阵是梯度的深度扩展;整理学习了一些关于广义相对论的知识,对于里面的测地线方程、度规张量、黎曼曲率张量等,在下周会花时间学习并理解;加权残差法是有限元法的一个基础,而对于加权残差法,其最优情况是 R(t) 对任意 t 都等于零,但是这个做不到。因此,在下周我会学习四种不同的方法去减弱约束。

相关文章:

2023.04.16 学习周报

文章目录 摘要文献阅读1.题目2.摘要3.简介4.Dual-Stage Attention-Based RNN4.1 问题定义4.2 模型4.2.1 Encoder with input attention4.2.2 Decoder with temporal attention4.2.3 Training procedure 5.实验5.1 数据集5.2 参数设置和评价指标5.3 实验结果 6.结论 MDS降维算法…...

【面试】如何设计SaaS产品的数据权限?

文章目录 前言数据权限是什么&#xff1f;设计原则整体方案RBAC模型怎么控制数据权限&#xff1f;1. 数据范围权限控制2. 业务对象操作权限控制3. 业务对象字段权限控制 总结 前言 一套系统的权限可以分为两类&#xff0c;数据权限和功能权限&#xff0c;今天我们从以下几个点…...

ansible管理变量

ansible变量简介 变量用于存储值&#xff0c;便于重复使用&#xff0c;可以简化项目的创建和维护。 变量命令规则 ansible变量的名称必须以字母开头&#xff0c;平且只能包含字母、数字和下划线&#xff0c;不允许有其他特殊字符。 变量范围 全局范围&#xff1a;从命令行…...

一种轻量级日志采集解决方案

前言 目前各大公司生产部署很多都是采用的集群微服务的部署方式&#xff0c;如果让日志散落在各个主机上&#xff0c;查询起来会非常的困难&#xff0c;所以目前我了解到的都是采用的日志中心来统一收集管控日志&#xff0c;日志中心的实现方案大多基于ELK(即Elasticsearch、L…...

【源码】Spring Cloud Gateway 是在哪里匹配路由的?

我们知道&#xff0c;经过网关的业务请求会被路由到后端真实的业务服务上去&#xff0c;假如我们使用的是Spring Cloud Gateway&#xff0c;那么你知道Spring Cloud Gateway是在哪一步去匹配路由的吗&#xff1f; 源码之下无秘密&#xff0c;让我们一起从源码中寻找答案。 入…...

BAT批处理基本命令

什么是 BAT 批处理脚本语言&#xff1f; BAT 批处理脚本语言是 Windows 系统自带的一种脚本语言&#xff0c;主要用于批量处理文件、目录、注册表、系统设置等任务。使用 BAT 批处理脚本语言可以节省大量手动操作的时间和精力。 如何编写 BAT 批处理脚本&#xff1f; 使用记事本…...

Python数组仿射变换

文章目录 仿射变换坐标变换的逻辑scipy实现 仿射变换 前面提到的平移、旋转以及缩放&#xff0c;都可以通过一个变换矩阵来实现&#xff0c;以二维空间中的变换矩阵为例&#xff0c;记点的坐标向量为 ( x , y , 1 ) (x,y,1) (x,y,1)&#xff0c;则平移矩阵可表示为 [ 1 0 T x …...

“==“和equals方法究竟有什么区别?

操作符专门用来比较两个变量的值是否相等&#xff0c;也就是用于比较变量所对应的内存中所存储的数值是否相同&#xff0c;要比较两个基本类型的数据或两个引用变量是否相等&#xff0c;只能用操作符。 如果一个变量指向的数据是对象类型的&#xff0c;那么&#xff0c;这时候…...

蓝桥杯15单片机--超声波模块

目录 一、超声波工作原理 二、超声波电路图 三、程序设计 1-设计思路 2-具体实现 四、程序源码 一、超声波工作原理 超声波时间差测距原理超声波发射器向某一方向发射超声波&#xff0c;在发射时刻的同时开始计时&#xff0c;超声波在空气中传播&#xff0c;途中碰到障碍…...

【学习笔记】ARC159

D - LIS 2 因为没有让你求方案数&#xff0c;所以还是比较好做的。 如果每一个连续段都退化成一个点&#xff0c;那么答案就是直接求 L I S LIS LIS。 否则&#xff0c;假设我们选了一些连续段把它们拼起来形成答案&#xff0c;显然我们有 r i 1 ≥ l i r_{i1}\ge l_i ri1​…...

2023/4/16总结

图的存储 链式前向星 链式前向星和邻接表很相似&#xff0c;只是存储方式变成了数组。 链式前向星一般要用到一个结构体数组和一个一维数组,结构体数组edges中包括三个变量。结构体数组的大小一般由边的大小决定。 edges数组中的to代表的是某条边的终点v。w代表的是这条边的…...

【剑指offer】常用的数据增强的方法

系列文章目录 BN层详解 梯度消失和梯度爆炸 交叉熵损失函数 反向传播 1*1卷积的作用 文章目录 系列文章目录常用的数据增强的方法示例代码 常用的数据增强的方法 数据增强是指通过对原始数据进行一系列变换来生成更多的训练数据&#xff0c;从而提高模型的泛化能力。常用的数…...

/lib/lsb/init-functions文件解析

零、背景 在玩AppArmor的时候涉及到了/etc/init.d/apparmor&#xff08;无论是sudo /etc/init.d/apparmor start还是sudo systemctl start apparmor.service&#xff09;&#xff0c;而这个文件又涉及到了另一个文件、也就是本文的主角&#xff1a;/lib/lsb/init-functions。 …...

【ChatGPT】ChatGPT-5 强到什么地步?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 ChatGPT-5 强到什么地步&#xff1f; 技术 深度学习模型的升级 更好的预测能力 自适应学习能力 特点 语言理解能力更强 自我修正和优化 更广泛的应用领域 应用 对话系统 智能写作…...

[ARM+Linux] 基于全志h616外设开发笔记

修改用户密码 配置网络 nmcli dev wifi 命令扫描周围WIFI热点 nmcli dev wifi connect xxx password xxx 命令连接WiFi 查看ip地址的指令&#xff1a; ifconfig ip addr show wlan0 SSH登录 这是企业开发调试必用方式&#xff0c;比串口来说不用接线&#xff0c;前提是接入网络…...

如何实现24小时客户服务

许多企业都有着这样的愿望&#xff1a;在不增加客服人员的同时能实现24小时客户服务。 那么有没有什么方法可以实现这一想法呢&#xff1f;在想解决方案之前我们可以先来谈谈客服的作用。 客服的作用主要为以下2点&#xff1a; 帮助用户更快地了解产品&#xff08;减轻产品的…...

查询数据库空间(mysql和oracle)

Mysql版 1、查看所有数据库容量大小 -- 查看所有数据库容量大小 SELECTtable_schema AS 数据库,sum( table_rows ) AS 记录数,sum(TRUNCATE ( data_length / 1024 / 1024, 2 )) AS 数据容量(MB),sum(TRUNCATE ( index_length / 1024 / 1024, 2 )) AS 索引容量(MB) FROMinfor…...

为什么 SQLite 一定要用 C 语言来开发?

SQLite 是一种专门为在 Unix 和类 Unix 操作系统上运行的 Linux 服务器应用程序而设计的数据库管理系统&#xff0c;是一种轻量级的关系型数据库管理系统&#xff0c;它适用于许多嵌入式设备和物联网设备。它使用 C 语言编写&#xff0c;并且是一个开源项目。 简单易用&#x…...

TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11

原文&#xff1a;Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的…...

你的GPT跟ChatGPT可能只差了一个DPU

“人类永远不会嫌网络太快&#xff0c;就像永远不会嫌高铁太快&#xff0c;你只会嫌它慢&#xff0c;希望它更快些。” 一个月内&#xff0c;百度、阿里、腾讯、商汤、讯飞、360等国内大厂扎堆发布“中国版 GPT ”&#xff0c;这家的名字还没记清楚&#xff0c;另一家的又蹦了出…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...