论文《A recurrent latent variable model for sequential data》笔记:详解VRNN

news2024/11/17 15:32:54

A recurrent latent variable model for sequential data

背景

1 通过循环神经网络的序列建模

循环神经网络(RNN)可以接收一个可变长度的序列 x = ( x 1 , x 2 , . . . , x T ) x = (x_1, x_2, ..., x_T) x=(x1,x2,...,xT)作为输入,并通过递归地处理每个符号同时维持其内部隐藏状态 h h h。在每个时间步 t t t,RNN读取符号 x t x_t xt并更新其隐藏状态 h t ∈ R p h_t \in \mathbb{R}^p htRp如下:

h t = f θ ( x t , h t − 1 ) (1) h_t = f_\theta (x_t, h_{t-1})\tag{1} ht=fθ(xt,ht1)(1)

其中 f f f是一个确定性的非线性转移函数, θ \theta θ f f f的参数集。转移函数 f f f可以通过长短期记忆(LSTM)[9]或门控循环单元(GRU)[5]等具有门控激活函数的方式实现。RNN通过参数化联合序列概率分布的条件概率的乘积来建模序列:

p ( x 1 , x 2 , . . . , x T ) = ∏ t = 1 T p ( x t ∣ x < t ) p(x_1, x_2, ..., x_T) = \prod_{t=1}^{T} p(x_t | x_{<t}) p(x1,x2,...,xT)=t=1Tp(xtx<t)

p ( x t ∣ x < t ) = g τ ( h t − 1 ) (2) p(x_t | x_{<t}) = g_\tau (h_{t-1}) \tag{2} p(xtx<t)=gτ(ht1)(2)

其中 g g g是一个将 RNN 隐藏状态 h t − 1 h_{t-1} ht1映射到可能输出上的概率分布的函数, τ \tau τ g g g的参数集。

决定 RNN 表征能力的主要因素之一是输出函数 g g g在方程(2)中的定义。通过一个确定性的转移函数 f f f g g g的选择实际上定义了 RNN 能够表达的联合概率分布 p ( x 1 , . . . , x T ) p(x_1, ..., x_T) p(x1,...,xT)的家族。

我们可以将方程(2)中的输出函数 g g g表达为由两部分组成。第一部分 ϕ τ \phi_\tau ϕτ是一个函数,它根据隐藏状态 h t − 1 h_{t-1} ht1返回参数集 ϕ t \phi_t ϕt,即 ϕ t = ϕ τ ( h t − 1 ) \phi_t = \phi_\tau (h_{t-1}) ϕt=ϕτ(ht1),而 g g g的第二部分返回 x t x_t xt的密度,即 p ϕ t ( x t ∣ x < t ) p_{\phi_t} (x_t | x_{<t}) pϕt(xtx<t)

在建模高维和实值序列时,一个合理的观察模型选择是高斯混合模型(GMM),如在[7]中使用。对于 GMM, ϕ τ \phi_\tau ϕτ返回一组混合系数 α t \alpha_t αt,均值 μ t \mu_t μt,和协方差 Σ t \Sigma_t Σt,它们定义了对应混合组件下 x t x_t xt的概率。在混合分布下 x t x_t xt的概率是:

p α t , μ t , Σ t ( x t ∣ x < t ) = ∑ j α t , j N ( x t ; μ t , j , Σ t , j ) p_{\alpha_t, \mu_t, \Sigma_t} (x_t | x_{<t}) = \sum_j \alpha_{t,j} \mathcal{N}(x_t; \mu_{t,j}, \Sigma_{t,j}) pαt,μt,Σt(xtx<t)=jαt,jN(xt;μt,j,Σt,j)

除了[7]的显著例外,很少有工作研究了针对实值序列的 RNN 的结构化输出密度模型。

RNN模型输出可变性的方式可能存在一个显著问题。鉴于确定性转移函数是唯一的可变性来源,唯一的可变性来源在于条件输出概率密度。这在建模高度可变且需要高信号保真度的序列时会带来问题。为了有效地模拟这些类型的序列,RNN必须能够映射 x t x_t xt中非常微小的变化(即,随机性的唯一来源)到 h t h_t ht中可能非常大的变化。限制网络的表达能力,如必须通过提高隐藏状态的维度来对抗过拟合,将迫使在生成清晰信号和编码足够的输入可变性以捕捉高层次的可变性之间进行折中。

RNN中对高度结构化输出函数的需求已经被之前注意到过。Boulanger-Lewandowski等人[4]广泛测试了NADE和基于RBM的输出密度,用于模拟音乐的二进制向量表示的序列。Bayer和Osendorfer[2]引入了一个序列的独立潜变量表示的压缩传递到状态的RNN。他们的模型,称为STORN,首先从序列的独立潜变量中生成一系列样本 z = ( z 1 , . . . , z T ) z = (z_1, ..., z_T) z=(z1,...,zT),然后在每个时间步骤上,转移函数 f f f根据方程(1)从先前的状态 h t − 1 h_{t-1} ht1,先前的输出 x t − 1 x_{t-1} xt1和采样的潜变量 z t z_t zt计算下一个隐藏状态 h t h_t ht。他们提出根据VAE原则来训练这个模型(见第2.2节)。同样,Pachitariu和Sahani[16]早期提出了一个序列的独立潜变量和随机隐藏状态的RNN。

这些方法与本文提出的方法密切相关。然而,有一个主要差异在于如何对潜在随机变量的先验分布进行建模。与上述方法不同,我们的方法使潜在随机变量的先验分布依赖于通过RNN隐藏状态 h t − 1 h_{t-1} ht1传递的所有前序输入(见方程(5))。引入时间结构到先验分布中预计会提高模型的表征能力,这一点我们在实验中实证观察到(见表1)。然而,重要的是要注意,任何基于具有随机潜在状态的方法与拥有结构化输出函数的方法是正交的,这两者可以一起使用以形成一个单一模型。

2 变分自编码器 (Variational Autoencoder)

对于非序列化数据,变分自编码器(VAEs)[11, 17] 最近已经被证明是一个有效的建模范式,用于恢复数据空间上的复杂多模态分布。VAE引入了一组潜在随机变量 z z z,旨在捕捉观测变量 x x x 的变化。作为一个有向图模型的例子,联合分布被定义为:

p ( x , z ) = p ( x ∣ z ) p ( z ) . (3) p(x, z) = p(x | z)p(z).\tag{3} p(x,z)=p(xz)p(z).(3)

潜在随机变量的先验 p ( z ) p(z) p(z) 通常选择为一个简单的高斯分布,而条件分布 p ( x ∣ z ) p(x | z) p(xz) 是一个任意观测模型,其参数由 z z z 的参数函数计算得出。重要的是,VAE通常用一个高度灵活的函数逼近器(如神经网络)来参数化 p ( x ∣ z ) p(x | z) p(xz) 。尽管潜在随机变量模型的形式如方程 (4) 中所示并不少见,这使得条件 p ( x ∣ z ) p(x | z) p(xz) 作为从潜在变量 z z z 到观测变量 x x x 的非线性映射是VAE的一个独特特征。

然而,从 z 到 x 的高度非线性映射导致后验 p ( z ∣ x ) p(z | x) p(zx) 的推理难以处理。相反,VAE使用后验的变分近似 q ( z ∣ x ) q(z | x) q(zx) ,从而允许使用下界:

log ⁡ p ( x ) ≥ − K L ( q ( z ∣ x ) ∣ ∣ p ( z ) ) + E q ( z ∣ x ) [ log ⁡ p ( x ∣ z ) ] , (4) \log p(x) \geq -KL(q(z | x) || p(z)) + \mathbb{E}_{q(z|x)} [\log p(x | z)],\tag{4} logp(x)KL(q(zx)∣∣p(z))+Eq(zx)[logp(xz)],(4)

其中 K L ( Q ∣ ∣ P ) KL(Q||P) KL(Q∣∣P) 是两个分布 Q 和 P 之间的Kullback-Leibler散度。

在 [11] 中,近似后验 q ( z ∣ x ) q(z | x) q(zx)是一个高斯 N ( μ , d i a g ( σ 2 ) ) N(\mu, diag(\sigma^2)) N(μ,diag(σ2)),其均值 μ \mu μ和方差 σ 2 \sigma^2 σ2是 x 的高度非线性函数的输出,通常再次是一个神经网络。

生成模型 p ( x ∣ z ) p(x | z) p(xz)和推断模型 q ( z ∣ x ) q(z | x) q(zx)然后通过最大化它们的参数的变分下界共同训练,其中积分通过随机近似。这个估计的梯度可以有一个低方差估计,通过重新参数化 z = μ + σ ⊗ ϵ z = \mu + \sigma \otimes \epsilon z=μ+σϵ并重写:

E q ( z ∣ x ) [ log ⁡ p ( x ∣ z ) ] = E p ( ϵ ) [ log ⁡ p ( x ∣ z = μ + σ ⊗ ϵ ) ] , \mathbb{E}_{q(z|x)}[\log p(x | z)] = \mathbb{E}_{p(\epsilon)}[\log p(x | z = \mu + \sigma \otimes \epsilon)], Eq(zx)[logp(xz)]=Ep(ϵ)[logp(xz=μ+σϵ)],

其中 ϵ \epsilon ϵ是标准高斯变量的向量。推断模型可以通过标准的反向传播技术来进行随机梯度下降训练。

变分循环神经网络(VRNN)

在本节中,我们介绍了VAE的递归版本,目的是为了模拟序列。受到简单动态贝叶斯网络(DBNs)如HMMs和卡尔曼滤波器启发,提出的变分递归神经网络(VRNN)明确模型了潜在随机变量在连续时间步之间的依赖性。然而,不像这些更简单的DBN模型,VRNN保留了模拟高度非线性动态的灵活性。

VRNN每个操作的图形说明:(a) 使用方程(5)计算条件先验;(b) 使用方程(6)的生成函数;© 使用方程(7)更新RNN隐藏状态;(d) 使用方程(9)推断近似后验;(e) VRNN的整体计算路径。
image.png

Generation

VRNN在每个时间步包含一个VAE。然而,这些VAEs是基于RNN的状态变量 h t − 1 h_{t-1} ht1 的条件。这一新增功能将帮助VAE考虑到序列数据的时间结构。与标准VAE不同,潜在随机变量的先验不再是标准高斯分布,而是遵循以下分布:

z t ∼ N ( μ 0 , t , d i a g ( σ 0 , t 2 ) ) ,  where  [ μ 0 , t , σ 0 , t ] = ϕ t p r i o r ( h t − 1 ) , (5) z_t \sim \mathcal{N}(\mu_{0,t}, diag(\sigma_{0,t}^2)), \text{ where } [\mu_{0,t}, \sigma_{0,t}] = \phi^{prior}_t (h_{t-1}),\tag{5} ztN(μ0,t,diag(σ0,t2)), where [μ0,t,σ0,t]=ϕtprior(ht1),(5)

上述公式说明 z t z_t zt h t − 1 h_{t-1} ht1通过一个神经网络提取特征得到的 μ 0 , t , σ 0 , t \mu_{0,t}, \sigma_{0,t} μ0,t,σ0,t进行计算得到

其中 μ 0 , t \mu_{0,t} μ0,t σ 0 , t \sigma_{0,t} σ0,t 表示条件先验分布的参数。此外,生成分布不仅基于 z t z_t zt 进行条件化,也基于 h t − 1 h_{t-1} ht1,如下:

x t ∼ N ( μ x , t , d i a g ( σ x , t 2 ) ) ,  where  [ μ x , t , σ x , t ] = ϕ t d e c ( ϕ t p r i o r ( z t , h t − 1 ) ) , (6) x_t \sim \mathcal{N}(\mu_{x,t}, diag(\sigma_{x,t}^2)), \text{ where } [\mu_{x,t}, \sigma_{x,t}] = \phi^{dec}_t (\phi^{prior}_t (z_t, h_{t-1})),\tag{6} xtN(μx,t,diag(σx,t2)), where [μx,t,σx,t]=ϕtdec(ϕtprior(zt,ht1)),(6)

其中 μ x , t \mu_{x,t} μx,t σ x , t \sigma_{x,t} σx,t 表示生成分布的参数。生成分布的参数 ϕ t p r i o r \phi^{prior}_t ϕtprior ϕ t d e c \phi^{dec}_t ϕtdec 可以是任何高度灵活的函数,比如神经网络。 ϕ t p r i o r \phi^{prior}_t ϕtprior ϕ t d e c \phi^{dec}_t ϕtdec 也可以是神经网络,这些网络从 x t x_t xt z t z_t zt 提取特征,我们发现这些特征提取器对于学习复杂序列至关重要。RNN使用以下递归方程更新其隐藏状态:

h t = f θ ( ϕ t e n c ( x t ) , ϕ t p r i o r ( z t ) , h t − 1 ) , (7) h_t = f_{\theta}(\phi^{enc}_t (x_t), \phi^{prior}_t (z_t), h_{t-1}),\tag{7} ht=fθ(ϕtenc(xt),ϕtprior(zt),ht1),(7)

其中 f f f 最初是从方程(1)的过渡函数。从方程(7)我们发现 h t h_t ht x ≤ t x_{\leq t} xt z < t z_{<t} z<t 的函数。因此,方程(5)和方程(6)定义了分布 p ( z t ∣ x ≤ t , z < t ) p(z_t | x_{\leq t}, z_{<t}) p(ztxt,z<t) p ( x t ∣ z ≤ t , x < t ) p(x_t | z_{\leq t}, x_{<t}) p(xtzt,x<t),生成模型的参数化导致了以下因式分解的动机:

p ( x ≤ T , z ≤ T ) = ∏ t = 1 T p ( x t ∣ z ≤ t , x < t ) p ( z t ∣ x ≤ t , z < t ) . (8) p(x_{\leq T}, z_{\leq T}) = \prod_{t=1}^T p(x_t | z_{\leq t}, x_{<t})p(z_t | x_{\leq t}, z_{<t}).\tag{8} p(xT,zT)=t=1Tp(xtzt,x<t)p(ztxt,z<t).(8)

Inference

以类似的方式,近似后验不仅仅是 x t x_t xt 的函数,也是 h t − 1 h_{t-1} ht1 的函数,如下式所示:

z t ∣ x t ∼ N ( μ z , t , d i a g ( σ z , t 2 ) ) ,  其中  [ μ z , t , σ z , t ] = ϕ t e n c ( ϕ t x ( x t ) , h t − 1 ) , (9) z_t | x_t \sim \mathcal{N}(\mu_{z,t}, diag(\sigma_{z,t}^2)), \text{ 其中 } [\mu_{z,t}, \sigma_{z,t}] = \phi_t^{enc}(\phi_t^x(x_t), h_{t-1}),\tag{9} ztxtN(μz,t,diag(σz,t2)), 其中 [μz,t,σz,t]=ϕtenc(ϕtx(xt),ht1),(9)

其中 μ z , t \mu_{z,t} μz,t σ z , t \sigma_{z,t} σz,t 表示近似后验的参数。我们注意到,近似后验的编码和生成的解码通过RNN隐藏状态 h t − 1 h_{t-1} ht1 进行关联。我们也观察到,对 h t − 1 h_{t-1} ht1 的这种条件化导致了因子分解:

q ( z ≤ T ∣ x ≤ T ) = ∏ t = 1 T q ( z t ∣ x ≤ t , z < t ) . (10) q(z_{\leq T} | x_{\leq T}) = \prod_{t=1}^T q(z_t | x_{\leq t}, z_{<t}).\tag{10} q(zTxT)=t=1Tq(ztxt,z<t).(10)

Learning

目标函数变为使用方程(8)和方程(10)的时间步长变分下界:

E q ( z ≤ T ∣ x ≤ T ) [ ∑ t = 1 T ( − K L ( q ( z t ∣ x ≤ t , z < t ) ∣ ∣ p ( z t ∣ x ≤ t , z < t ) ) + log ⁡ p ( x t ∣ z ≤ t , x < t ) ) ] . (11) \mathbb{E}_{q(z_{\leq T} | x_{\leq T})} \left[ \sum_{t=1}^T \left( -KL(q(z_t | x_{\leq t},z_{<t}) || p(z_t | x_{\leq t},z_{<t})) + \log p(x_t | z_{\leq t},x_{<t}) \right) \right].\tag{11} Eq(zTxT)[t=1T(KL(q(ztxt,z<t)∣∣p(ztxt,z<t))+logp(xtzt,x<t))].(11)

如同标准VAE,我们通过最大化它们参数的变分下界共同学习生成模型和推断模型。VRNN的示意图如图1所示,操作(a)-(d)分别对应于方程(1)-(7),方程(9)。VRNN在计算条件先验时应用操作(a)(见方程(5))。如果VRNN的变体(VRNN-I)不应用操作(a),那么先验在时间步之间变得独立。实际上,STORN[2]可以被认为是VRNN-I模型家族的一个实例。我们在实验评估中包括了这个模型版本(VRNN-I),以便直接研究先验(即条件先验)在潜在随机变量上的时间依赖结构的影响。

vrnn_gmm详解

代码:https://github.com/jych/nips2015_vrnn

模型的架构和数据流动如下:

模型架构

  1. 输入层

    • 数据通过train_data.theano_vars()valid_data.theano_vars()被加载为Theano变量xm_x,分别用于训练和验证。
  2. 全连接层(FullyConnectedLayer

    • x_1x_4z_1z_4是一系列用于特征变换的全连接层。每个x层处理来自上一层或原始输入x_t的信息,而每个z层处理来自潜在变量z_t的信息。
    • phi_1phi_4用于构建近似后验分布的参数。
    • prior_1prior_4用于构建先验分布的参数。
    • theta_1theta_4用于构建生成模型的参数。
  3. LSTM层

    • rnn层是一个长短时记忆单元,用于捕获数据的时序特征。
  4. 输出层

    • phi_muphi_sig层分别用于输出近似后验分布的均值和标准差。
    • prior_muprior_sig层分别用于输出先验分布的均值和标准差。
    • theta_mutheta_sig层分别用于输出生成分布的均值和标准差。

数据流动

  1. 前向传播

    • 原始输入数据x经过一系列全连接层(x_1x_4)被转换为适合LSTM层处理的形式。
  2. 递归处理

    • inner_fn函数定义了每个时间步的处理方式。它首先通过phi_*层处理输入x_t和先前的状态s_tm1来获取近似后验分布的参数,然后从该分布中采样得到z_t
    • z_t接着经过全连接层z_1z_4处理,并和x_t一起被送入rnn层得到新的状态s_t
  3. 后向传播和参数更新

    • Theano的scan函数被用来迭代整个序列,应用inner_fn函数,并收集每个时间步的输出。
    • 通过比较每一步生成的均值和标准差与先验和后验的相应值,使用KLGaussianGaussian计算Kullback-Leibler散度,作为正则化项。
    • 使用Gaussian函数计算重构损失,与KL散度相加得到变分下界(也即负对数似然)。
  4. 优化

    • 通过定义的Adam优化器和Theano函数进行梯度下降,更新模型的参数以最小化变分下界。
  5. 监控

    • monitor_fn函数用于在验证数据上计算和监控各种统计量,如模型的上界负对数似然、重构项、KL项以及各参数的最大值、最小值和均值。

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

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

相关文章

install安装路径设定

因为安装路径的前缀 CMAKE_INSTALL_PREFIX 都在外面都写了。 所以在具体的dll 在安装时&#xff0c;就写相对路径就行了。

基于51单片机交通灯仿真_紧急开关+黄灯倒计时+可调时间(proteus+代码+报告+讲解视频)

基于51单片机交通灯_紧急开关黄灯倒计时可调时间 ☑️开题报告☑️仿真图&#xff08;提供源文件&#xff09;&#xff1a;☑️系统硬件设计☑️主控制器选择☑️系统硬件结构图☑️时钟及复位电路☑️指示灯及倒计时模块 ☑️倒计时模块&#xff1a;☑️程序☑️软件主流程框架…

PPT画饼不能信,那现场连数据生成BI报表呢?

PPT说的天花乱坠&#xff0c;不如真正地看到、体验到BI报表效果&#xff0c;眼见为实&#xff01;奥威BI大数据分析工具推出的这套BI方案就将真实的BI报表效果搬到了BI选型会议上了&#xff0c;可以让业务人亲自上手体验三步完成BI报表分析的过程。 只需三步&#xff0c;立即生…

对比学习15篇顶会论文及代码合集,2023最新

对比学习&#xff08;contrastive learning&#xff09;是现在无监督学习中一种常用的学习机制&#xff0c;它可以在没有标签的数据上进行学习&#xff0c;避免依赖大量标签数据&#xff0c;从而帮助我们更好地理解和利用数据集中的信息&#xff0c;提高模型的性能和表现。 作…

Java 开源重试类 guava-retrying 使用案例

使用背景 需要重复尝试执行某些动作&#xff0c;guava-retrying 提供了成型的重试框架 依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>${retrying.version}</version>…

python tkinter 使用

python tkinter 使用 ython可以使用多种GUI库来创建窗口页面&#xff0c;例如Tkinter、PyQt、wxPython等。 本篇文章主要讲述如何使用tkinter。 1&#xff1a;导入 import tkinter as tk这时如果运行的话会提示&#xff1a; ModuleNotFoundError: No module named ‘tkint…

小趴菜教你如何用Python开发手机App..

Python语言虽然很万能&#xff0c;但用它来开发app还是显得有点不对路&#xff0c;因此用Python开发的app应当是作为编码练习、或者自娱自乐所用&#xff0c;加上目前这方面的模块还不是特别成熟&#xff0c;bug比较多&#xff0c;总而言之&#xff0c;劝君莫轻入。 准备工作 …

Rust错误处理机制:优雅地管理错误

大家好&#xff01;我是lincyang。 今天&#xff0c;我们要探讨的是Rust语言中的错误处理机制。 Rust作为一种系统编程语言&#xff0c;对错误处理的重视程度是非常高的。它提供了一套既安全又灵活的机制来处理可能出现的错误。 Rust错误处理的两大类别 在Rust中&#xff0…

酒店品牌纷纷冲击中高端,东呈集团能否“快人一步”?

过去两年酒店行业加速洗牌&#xff0c;“强者恒强”的马太效应正持续凸显。 报告显示&#xff0c;2022年排名前10名的酒店集团分别为锦江国际、华住、首旅如家、格林、东呈集团、尚美数智、亚朵、德胧、逸柏、都市酒店。以上10家酒店集团客房规模在连锁酒店市场占有率为62.36&…

同星智能完成A+轮超亿元融资,国投招商领投

2023年10月&#xff0c;上海同星智能科技有限公司成功完成超亿元A轮融资。本轮融资由国投招商管理的先进制造产业投资基金二期领投&#xff0c;老股东丰年资本超额跟投。 本轮融资将用于产品研发和全球化市场拓展。 同星智能成立于2017年&#xff0c;一直专注于研发国产自主可控…

docker-compose安装harbor

docker-compose安装harbor 环境&#xff1a;centos7 1、安装docker 官方文档 https://docs.docker.com/engine/install/centos/ 1、卸载旧版本 $ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate …

02【SpringBoot静态处理、错误处理】

目录 一、SpringBoot的WEB开发 1.1 静态资源的处理 1.1.1 静态资源目录 1&#xff09;SpringBoot静态资源处理 2&#xff09;关于静态资源处理的配置 3&#xff09;欢迎页面的处理 4&#xff09;修改SpringBoot资源访问路径 1.1.2 WebJars资源 1.2 注册Servlet三大组件…

渗透实例------2个星期艰难的渗透纪实

2个星期艰难的渗透纪实 kyo327 入侵原因,需删一帖子,目标用www.111.com代替,前期通过初期的网站文件暴力猜解,扫描到robots.txt这个文件,有以下目录。如图1: 图1 再通过对这些文件的访问,从3gadm.php文件的标题栏得到该网站采用的是diy-page8.3的cms,自然可以先用搜索…

动捕设备如何推动线下活动以虚拟主持人创新升级互动形式

随着元宇宙概念兴起&#xff0c;虚拟主持人结合全身动捕设备可以依托大屏、全息等形式直观呈现于线下活动&#xff0c;通过动捕设备实时驱动虚拟主持人&#xff0c;将现实活动场景与虚拟相连接&#xff0c;让活动以科技感、多元化的形式呈现&#xff0c;给活动参与者一种新的视…

Altium Designer学习笔记4

学会添加库。 元器件添加成功。 放置TYPE-C元器件。 绘制网络标识和电源端口&#xff0c;并且添加文字备注。 修改元器件的属性。

AR远程辅助技术应用到气象部门有何好处?

随着科技的不断发展&#xff0c;人类对于自然环境的理解和掌控能力也在不断提升。其中&#xff0c;AR(增强现实)技术的应用&#xff0c;为气象监控带来了革命性的变化。AR气象远程监控&#xff0c;就是将AR技术与气象监控相结合&#xff0c;通过虚拟与现实的融合&#xff0c;实…

bitmap基础介绍+holo实现离线UV计算

bitmap 基础介绍bitmaping 数据结构bitmap计算算子集成二阶段分布式计算&#xff1a;RoaringBitmap构造方案分桶方案建序方案 holo官网 离线UV计算创建用户映射表创建聚合结果表更新用户映射表和聚合结果表更新聚合结果表UV、PV查询 基础介绍 RoaringBitmap主要为了解决UV指标…

网站为什么一定要安装SSL证书

随着互联网的普及和发展&#xff0c;网络安全问题日益凸显。在这个信息爆炸的时代&#xff0c;保护用户隐私和数据安全已经成为各大网站和企业的首要任务。而SSL证书作为一种网络安全技术&#xff0c;已经成为网站必备的安全工具。那么&#xff0c;为什么网站一定要安装SSL证书…

DeepStream--测试TrafficCamNet检测模型

模型地址&#xff1a;https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/trafficcamnet/version 目前模型是nvidia的加密格式etlt。 nvinfer的配置 [property] gpu-id0 net-scale-factor0.0039215697906911373 tlt-model-keytlt_encode tlt-encoded-modeltraffic…

01【SpringBoot快速入门、yml语法、自动配置、整合框架】

目录 一、SpringBoot简介 1.1 Spring优缺点 1.1.1 Spring的优点 1.1.2 Spring的缺点 1.2 SpringBoot的概述 1.2.1 SpringBoot概述 1.2.2 SpringBoot的核心功能 二、SpringBoot快速入门 2.1 创建Maven工程 2.2 添加起步依赖 2.3 编写Controller 2.4 编写SpringBoot引…