【论文精读】DCRNN-扩散图卷积循环神经网络

DCRNN 模型是南加州大学的 Li 等人发表在 I C L R 2018 ICLR 2018 ICLR2018 会议上一个用于交通预测的时空预测模型,论文题目为: 《DIFFUSION CONVOLUTIONAL RECURRENT NEURAL NETWORK: DATA-DRIVEN TRAFFIC FORECASTING》,文章地址为: https://arxiv.org/abs/1707.01926。

引言

文章首先指出了交通预测问题的难点是如何处理复杂的时空依赖关系,一方面,交通序列在时间上具有强烈的时间动态性,反复发生的事件(如高峰时段或交通事故)会导致时序表现出非平稳定性,从而难以进行长期预测。同时,道路网络上的传感器包含复杂而独特的空间相关性。如下图所示:

在这里插入图片描述

路段1和路段2相关,路段1和路段3不相关,尽管两者在欧式空间中很接近,但它们的交通行为却截然不同。同时,未来车速受下游车流的影响大于上游车流,说明交通流的空间结构是非欧几里得且是一个有向图。

文章指出,当前时序预测算法主要分为2大阵营: 知识驱动和数据驱动,知识驱动主要通过应用排队论来模拟交通中的车辆行为进而实现预测。数据驱动类方法,如自回归综合移动平均(ARIMA) 模型和卡尔曼滤波等传统机器学习算法仍然很流行。而深度学习方面,用于序列分析的 LSTM 和 GRU 等 RNN 类算法也大量应用于时间序列的预测。但上述算法均未考虑交通路网的空间特性,虽然也出现了将 CNN 用于空间特征的挖掘,但其是将交通路网作为欧几里得空间(二维图像)来进行处理的,后续出现的谱域图卷积(ChebNet,GCN等)虽然实现了非欧几里得空间的卷积操作,但其只能应用于无向图,无法处理有向图。

在此基础上,给出了 DCRNN 模型优势:

  • 将交通流量的空间依赖性建模为有向图上的扩散过程,在此基础上提出了扩散图卷积,其具有直观的解释且计算高效。

  • 提出的 DCRNN 模型将扩散图卷积和Seq2Seq结构有机结合起来,并通过策略采样技术完成训练,实现了时序预测空间依赖和时间依赖的共同学习,且该模型不仅仅局限于交通预测领域,也可以迁移到其他领域。

  • 在2个大规模的真实数据集上进行了性能测试,比最先进的基线方法有了显著改进。

模型

交通预测问题定义

交通预测的目标是,根据路网上 N N N 个传感器观测到的交通流特征,来预测未来的交通速度。可以将传感器网络表示为一个有权有向图 G = ( v , ε , W ) \mathcal{G}=(\mathcal{v}, \varepsilon, W) G=(v,ε,W),其中 v \mathcal{v} v 代表节点集合,节点数量为 N N N ε \varepsilon ε 是边的集合,而 W ∈ R N × N W \in \mathbb{R}^{N \times N} WRN×N 是一个有权的邻接矩阵,表示节点之间的邻近程度(例如: 节点间的路网距离函数)。将 G \mathcal{G} G 上观测到的交通流特征表示为图上的信号 X ∈ R N × P X \in \mathbb{R}^{N \times P} XRN×P P P P 表示每个节点的特征维度(如速度、流量等)。 X ( t ) X^{(t)} X(t) 表示在 t 时刻的图信号,而交通预测的目标就是学习一个 h ( ⋅ ) h(\cdot) h() 函数,建立历史 T ′ T^{'} T 个图信号到未来 T T T 个图信号的映射关系。

[ X ( t − T ′ + 1 ) , . . . , X ( t ) ; G ] ⟶ h ( ⋅ ) [ X ( t + 1 ) , . . . , X ( t + T ) [X^{(t-T^{'}+1)},...,X^{(t)};\mathcal{G}]\overset{h(\cdot)}{\longrightarrow}[X^{(t+1)},...,X^{(t+T)} [X(tT+1),...,X(t);G]h()[X(t+1),...,X(t+T)

空间依赖建模

扩散卷积

本文通过将交通流与扩散过程联系起来来模拟空间依赖性,扩散过程是在图 G \mathcal{G} G 上的随机行走,重启概率为 α ∈ [ 0 , 1 ] \alpha \in [0, 1] α[0,1],状态转移矩阵为 D o − 1 W D_{o}^{-1}W Do1W

其中, D o = d i a g ( W 1 ) D_{o}=diag(W1) Do=diag(W1) 为出度的对角矩阵, 1 ∈ R N 1 \in \mathbb{R}^{N} 1RN 表示一个全为1的 N N N 维向量。

经过很多时间步后,这样的马尔科夫过程会收敛到一个稳态分布 P ∈ R N × N \mathcal{P} \in \mathbb{R}^{N \times N} PRN×N,其第 i i i P i , : ∈ R N \mathcal{P}_{i,:} \in \mathbb{R}^{N} Pi,:RN 表示从节点 v i ∈ V \mathcal{v}_{i} \in \mathcal{V} viV 向外扩散的可能性,下述定理给出了稳态分布的闭合解:

P = ∑ k = 0 ∞ α ( 1 − α ) k ( D o − 1 W ) k \mathcal{P}=\sum_{k=0}^{\infty}\alpha(1-\alpha)^{k}(D_{o}^{-1}W)^{k} P=k=0α(1α)k(Do1W)k

即扩散过程的稳态分布可以表示作为图上无限随机游走的加权组合,并以闭合形式计算。

其中 k k k 是扩散步骤。在实践中,使用扩散过程的有限 K K K 步截断,并为每个步骤分配一个可训练的权重。同时,扩散过程还包括反向扩散过程,这样,双向扩散为模型提供了更大的灵活性,以同时捕获来自上游和下游的流量。

综上,图信号 X ∈ R N × P X \in \mathbb{R}^{N \times P} XRN×P 和卷积核 f θ f_{\theta} fθ 的图卷积过程可以定义为:

X : , p ∗ G f θ = ∑ k = 0 K − 1 ( θ k , 1 ( D o − 1 W ) k + θ k , 2 ( D i − 1 W T ) k ) X : , p    f o r   p ∈ { 1 , . . . , P } X_{:,p}* _\mathcal{G}f_{\theta}=\sum_{k=0}^{K-1}(\theta_{k,1}(D_{o}^{-1}W)^{k}+\theta_{k,2}(D_{i}^{-1}W^{T})^{k})X_{:,p} \space \space for \space p \in \{1,...,P\} X:,pGfθ=k=0K1(θk,1(Do1W)k+θk,2(Di1WT)k)X:,p  for p{1,...,P}

其中, θ ∈ R K × 2 \theta \in \mathbb{R}^{K \times 2} θRK×2 为卷积核 D o − 1 W , D i − 1 W T D_{o}^{-1}W,D_{i}^{-1}W^{T} Do1W,Di1WT 的参数。一般来讲,当图比较大时,上述卷积计算可能比较昂贵,但如果 G \mathcal{G} G 是稀疏连接的话,上述等式可以使用递归稀疏-密集矩阵乘法,总复杂度降为 O ( K ∣ ε ∣ ) ≪ O ( N 2 ) \mathcal{O}(K|\varepsilon|)\ll \mathcal{O}(N^2) O(Kε)O(N2)

扩散卷积层

基于扩散卷积,很容易构建将 P P P 维输入特征映射为 Q Q Q 维输出特征的扩散卷积层:

H : , q = a ( ∑ p = 1 P X : , p ∗ G f θ q , p , : , : )    f o r   q ∈ { 1 , . . . , Q } H_{:,q}=a(\sum_{p=1}^{P}X_{:,p}* _{\mathcal{G}}f_{\theta_{q,p,:,:}}) \space \space for \space q \in \{1,...,Q\} H:,q=a(p=1PX:,pGfθq,p,:,:)  for q{1,...,Q}

此时,输入为 X ∈ R N × P X \in \mathbb{R}^{N \times P} XRN×P,输出为 H ∈ R N × Q H \in \mathbb{R}^{N \times Q} HRN×Q a a a 为激活函数(例如: Sigmoid 或者 ReLU)。

整个扩散卷积层的参数集合 Θ ∈ R Q × P × K × 2 = [ θ ] p , q \Theta \in \mathbb{R}^{Q \times P \times K \times 2}=[\theta]_{p,q} ΘRQ×P×K×2=[θ]p,q,其中 Θ p , q , : , : ∈ R K × 2 \Theta_{p,q,:,:} \in \mathbb{R}^{K \times 2} Θp,q,:,:RK×2 代表输入的第 i i i 维变量到输出的第 j j j 维变量的卷积核。

和谱域图卷积的关系

论文指出,扩散图卷积不但适用无向图,还适用有向图。而无向图上比较经典的谱域图卷积算法,例如: ChebNet(Defferrard等,2016),可以当做是扩散图卷积的一个特例。

谱域图卷积的定义为:

X : , p ∗ G f θ = Φ F ( θ ) Φ T X : , p X_{:,p}* _{\mathcal{G}} f_{\theta}=\Phi F(\theta) \Phi^{T}X_{:,p} X:,pGfθ=ΦF(θ)ΦTX:,p

其中, L = Φ Λ Φ T L=\Phi\Lambda\Phi^{T} L=ΦΛΦT F ( θ ) = ∑ 0 K − 1 θ k Λ k F(\theta)=\sum_{0}^{K-1}\theta_{k}\Lambda^{k} F(θ)=0K1θkΛk

故上式也可以转化为:

X : , p ∗ G f θ = Φ F ( θ ) Φ T X : , p = Φ ( ∑ 0 K − 1 θ k Λ k ) Φ T X : , p = ∑ 0 K − 1 θ k ( Φ Λ Φ T ) k X : , p = ∑ 0 K − 1 θ k L k X : , p \begin{equation} \begin{split} X_{:,p}* _{\mathcal{G}} f_{\theta} &= \Phi F(\theta) \Phi^{T}X_{:,p} \\ &= \Phi (\sum_{0}^{K-1}\theta_{k}\Lambda^{k})\Phi^{T}X_{:,p} \\ &= \sum_{0}^{K-1}\theta_{k}(\Phi\Lambda\Phi^{T})^{k}X_{:,p} \\ &= \sum_{0}^{K-1}\theta_{k}L^{k}X_{:,p} \end{split} \end{equation} X:,pGfθ=ΦF(θ)ΦTX:,p=Φ(0K1θkΛk)ΦTX:,p=0K1θk(ΦΛΦT)kX:,p=0K1θkLkX:,p

谱域图卷积中 L = Φ Λ Φ T L=\Phi\Lambda\Phi^{T} L=ΦΛΦT 成立的前提是图为无向图,无向图的出度矩阵和入度矩阵是一样的,且无向图为对称矩阵,所以 W = W T W=W^{T} W=WT

则扩散卷积公式可以转化为:

X : , p ∗ G f θ = ∑ k = 0 K − 1 ( θ k , 1 ( D o − 1 W ) k + θ k , 2 ( D i − 1 W T ) k ) X : , p    f o r   p ∈ { 1 , . . . , P } = ∑ k = 0 K − 1 ( θ k , 1 ( D − 1 W ) k + θ k , 2 ( D − 1 W ) k ) X : , p = ∑ k = 0 K − 1 ( θ k , 1 + θ k , 2 ) ( D − 1 W ) k X : , p = ∑ k = 0 K − 1 θ k ( D − 1 W ) k X : , p \begin{equation} \begin{split} X_{:,p}* _\mathcal{G}f_{\theta} &= \sum_{k=0}^{K-1}(\theta_{k,1}(D_{o}^{-1}W)^{k}+\theta_{k,2}(D_{i}^{-1}W^{T})^{k})X_{:,p} \space \space for \space p \in \{1,...,P\} \\ &= \sum_{k=0}^{K-1}(\theta_{k,1}(D^{-1}W)^{k}+\theta_{k,2}(D^{-1}W)^{k})X_{:,p} \\ &= \sum_{k=0}^{K-1}(\theta_{k,1}+\theta_{k,2})(D^{-1}W)^{k}X_{:,p} \\ &= \sum_{k=0}^{K-1}\theta_k(D^{-1}W)^{k}X_{:,p} \end{split} \end{equation} X:,pGfθ=k=0K1(θk,1(Do1W)k+θk,2(Di1WT)k)X:,p  for p{1,...,P}=k=0K1(θk,1(D1W)k+θk,2(D1W)k)X:,p=k=0K1(θk,1+θk,2)(D1W)kX:,p=k=0K1θk(D1W)kX:,p

可以发现,谱域图卷积其实就是相当于将扩散卷积公式里的 D o − 1 W D_{o}^{-1}W Do1W 替换为了 L L L 而已。

时间依赖建模

本文选取 GRU 这个 RNN 类模型来进行时间依赖的学习和挖掘,并将其中的矩阵乘法替换为了上述的扩散图卷积,并将此结构命名为 DCGRU。

具体过程如下:

r ( t ) = σ ( Θ r ∗ G [ X ( t ) , H ( t − 1 ) ] + b r ) u ( t ) = σ ( Θ u ∗ G [ X ( t ) , H ( t − 1 ) ] + b u ) C ( t ) = t a n h ( Θ C ∗ G [ X ( t ) , ( r ( t ) ⊙ H ( t − 1 ) ) ] + b c ) H ( t ) = u ( t ) ⊙ H ( t − 1 ) ) + ( 1 − u ( t ) ) ⊙ C ( t ) ) \begin{equation} \begin{split} r^{(t)} = \sigma (\Theta_{r} * _{\mathcal{G}}[X^{(t)},H^{(t-1)}]+b_{r}) \\ u^{(t)} = \sigma (\Theta_{u} * _{\mathcal{G}}[X^{(t)},H^{(t-1)}]+b_{u}) \\ C^{(t)} = tanh (\Theta_{C} * _{\mathcal{G}}[X^{(t)},(r^{(t)} \odot H^{(t-1))}]+b_{c}) \\ H^{(t)} = u^{(t)} \odot H^{(t-1))} + (1-u^{(t)}) \odot C^{(t))} \end{split} \end{equation} r(t)=σ(ΘrG[X(t),H(t1)]+br)u(t)=σ(ΘuG[X(t),H(t1)]+bu)C(t)=tanh(ΘCG[X(t),(r(t)H(t1))]+bc)H(t)=u(t)H(t1))+(1u(t))C(t))

这里有些人会有疑问: GRU 的结构好像 (1-) 的位置有问题吧,他们可能看到的是下图:

在这里插入图片描述

按照上图所示,上述公式的最后一行应该调整为:

H ( t ) = u ( t ) ⊙ C ( t ) ) + ( 1 − u ( t ) ) ⊙ H ( t − 1 ) ) H^{(t)} = u^{(t)} \odot C^{(t))} + (1-u^{(t)}) \odot H^{(t-1))} H(t)=u(t)C(t))+(1u(t))H(t1))

到底哪一个对呢?我们可以查看一下 GRU 的原始论文: Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling

在这里插入图片描述

可以看到,原始论文的 (1-) 的位置确实和上图一致,而和本文中的不一致。

但 GRU 作者的另外一篇文章,Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation。

在这里插入图片描述

哈哈哈,这篇论文里 (1-) 的位置又和本文中的一致了!

而 Pytorch 的 GRU 官方实现如下:

在这里插入图片描述

到底哪个对呢,其实我理解下来,(1-) 的位置上述两种情况是等效的,因为 u ( t ) u^{(t)} u(t) 本身就是 σ \sigma σ 激活以后,通过将范围压到 [ 0 , 1 ] [0,1] [0,1] 起到门控的作用。

假如第1种情况下(本文),训练得到的 u ( t ) u^{(t)} u(t) 为0.7,则同样的一批数据在第2种情况下(GRU原文)执行训练,得到的 u ( t ) u^{(t)} u(t) 将为 0.3。而两者其实都相当于70%的 H ( t − 1 ) H^{(t-1)} H(t1) 和30%的 C ( t ) C^{(t)} C(t) 流向下游。

多步预测

多步预测场景下,DCRNN 采用的架构是 Encoder-Decoder。

在这里插入图片描述

其中,Encoder 和 Decoder 均是由前面定义的 DCGRU 组成,在训练过程中,将历史时间序列输入Encoder,并使用其最终状态来初始化 Decoder,Decoder 将根据历史观测真值来生成预测结果。在测试阶段,模型上一步迭代生成的预测结果将取代上一步的真值来进行下一步的预测。此时,训练和测试输入分布之间的差异会导致性能下降,为了缓解这一问题,本文采用了计划采样策略(scheduled sampling),即在第 i i i 步迭代时,以 ϵ i \epsilon_{i} ϵi 的概率喂给模型观测真值,而以 1 − ϵ i 1-\epsilon_{i} 1ϵi 的概率喂给模型前一步的预测值。在训练阶段, ϵ i \epsilon_{i} ϵi 的值将逐渐下降为0来使得模型能够学习到测试分布。

实验

基础实验

DCRNN 在两个真实世界的大规模数据集上进行了实验:

  • METR-LA

包含从洛杉矶高速公路上的线圈检测器收集的交通信息(Jagadish 等,2014),选择了207个传感器,并收集了2012年3月1日以到2012年6月30日的数据进行实验。

  • PEMS-BAY

此流量数据集由加利福尼亚州交通局基于 PeMS 系统收集,本文选择了325个湾区的传感器,并收集从 2017年1月1日到2017年5月31日的数据进行实验。

在这两个数据集中,将交通速度指标聚合到5分钟窗口中,并应用 Z − S c o r e Z-Score ZScore 归一化。70%的数据用于训练,20%用于测试,其余10%用于验证。邻接矩阵的构建方式如下:

W i , j = { e x p ( − d i s t ( v i , v j ) 2 σ 2 )  if  i ≠ j   and   d i s t ( v i , v j ) ≤ κ 0  otherwise  W_{i,j}=\begin{cases} exp(-\frac{dist(\mathcal{v}_{i}, \mathcal{v}_{j})^2}{\sigma ^{2} } )& \text{ if } i\ne j \space \space \text{and} \space \space dist(\mathcal{v}_{i}, \mathcal{v}_{j})\le \kappa \\ 0 & \text{ otherwise } \end{cases} Wi,j={exp(σ2dist(vi,vj)2)0 if i=j  and  dist(vi,vj)κ otherwise 

性能对比测试结果如下:

在这里插入图片描述

消融实验

设计了两个消融模型来说明扩散图卷积的作用。

  • DCRNN-NoConv

将扩散卷积的扩散概率矩阵替换为单位阵,相当于节点预测仅能依赖节点自身的历史特征,而无法获取周边邻接节点的信息。

  • DCRNN-UniConv

仅保留扩散图卷积公式中的前向随机行走。

在这里插入图片描述

可以看出,DCRNN-NoConv相比DCRNN的实验结果说明周边邻接节点的信息还是非常重要的,DCRNN-UniConv相比DCRNN的实验结果,则说明了双向随机游走的有效性。

同时,论文还通过 W ^ i , j = W ^ j , i = m a x ( W i , j , W j , i ) \hat{W}_{i,j} = \hat{W}_{j,i}=max(W_{i,j},W_{j,i}) W^i,j=W^j,i=max(Wi,j,Wj,i) 操作强行构建了1个无向图的对称矩阵 W ^ \hat{W} W^,然后将 DCRNN 中的扩散图卷积部分替换为 ChebNet 图卷积,并将新模型命名为 GCRNN,并进行了性能对比。

在这里插入图片描述

可以看出,DCRNN 模型优于 GCRNN 模型,直觉是有向图更好地捕捉了交通传感器之间的不对称相关性。

文章还对超参数 K K K U n i t s Units Units 进行了探索:

在这里插入图片描述

为了评估时间建模的效果,文章设计了3种变体:

  • DCNN

将历史观测结果连接为固定长度的向量,并将其输入到堆叠的扩散卷积层来预测未来的时间序列,仅训练1个单步预测模型,多步预测通过迭代预测来实现。

  • DCRNN-SEQ

采用 Encoder-Decoder 结构进行预测。

  • DCRNN

与DCRNN-SEQ相似,但增加了计划采样策略(scheduled sampling)。

在这里插入图片描述

可以发现,预测步长越大,DCRNN 相比于 DCNN 的优势越明显。

模型评价

主要创新点就是将双向扩散图卷积引入到了交通时空预测领域,解决了谱域图卷积仅能应用在无向图上的限制。

至于和GRU的结合,在之前就有很多类似的工作了,比如2015年的Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting。

整体来看是篇不错的论文,实验部分设计得也比较扎实,值得精读。

最后说一句,该论文的附录里有个小的错误:

在这里插入图片描述

应该为:

T k ( x ) = 2 x T k − 1 ( x ) − T k − 2 ( x ) T_{k}(x)=2xT_{k-1}(x)-T_{k-2}(x) Tk(x)=2xTk1(x)Tk2(x)

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

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

相关文章

算法导论实战(三)(算法导论习题第十六章)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀算法启示录 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 前言 算法导论的知识点学习将持续性更新在算…

ARM32开发--GPIO输入模式

知不足而奋进 望远山而前行 目录 文章目录 前言 浮空输入 上拉输入 下拉输入 模拟输入 总结 前言 在数字电路设计和嵌入式系统开发中,理解输入信号的处理方式对确保系统稳定性和可靠性至关重要。不同的输入处理方式包括上拉输入、下拉输入、浮空输入和模拟输…

【C#学习笔记】属性和字段

文章目录 前言属性和字段的区别字段访问修饰符和关键字定义变量类型的定义变量命名变量的赋值 属性 不同的使用情况 前言 最近在工作的过程中常常会觉得自己在程序设计方面的能力还是有欠缺。例如一直对于变量的声明感到不足,在工作中为了图方便总是直接public定义…

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:无人机自主飞行软件平台

案例简介 北京泛化智能科技有限公司(gi)所主导开发的 Generalized Autonomy Aviation System (GAAS) 是为无人机以及城市空中交通 (UAM, Urban Air Mobility) 所设计的开源无人机自主飞行框架。通过 SLAM、路径规划和 Global Optimization Graph 等功能…

骨传导耳机有哪些是值得入手的?看完这篇推荐就懂了!

骨传导耳机在运动圈非常的受欢迎,因为佩戴运动的时候,骨传导耳机能够稳固佩戴,无论是跳跃或者是摇晃身体等,耳机都不会轻易掉落!而很多朋友对于骨传导耳机总是想尝试却又害怕掉坑!于是为了给大家提供更多的…

分布式事务Seata中XA和AT模式介绍

Seata中XA和AT模式介绍 分布式事务介绍分布式解决方案解决分布式事务的思路Seata的架构Seata中的XA模式Seata的XA模型流程XA模式优缺点实现XA模式 Seata中的AT模式Seata中的AT模式流程实现AT模式AT模式优缺点 AT模式与XA模式的区别 分布式事务介绍 分布式事务,就是…

HCIA-RS基础-VLAN配置

目录 前言创建拓扑创建VLAN查看创建的VLAN配置trunk口并放行VLAN配置access接口查看所有vlan基本信息测试网络连通性命令合集 前言 VLAN定义:VLAN是一种将局域网内的设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术。VLAN优点&…

移动硬盘读不出来?5个解决技巧公开!

“不知道为什么,我的移动硬盘突然就读不出来了,大家有什么方法可以更好的读取移动硬盘吗?希望大家帮帮我!” 在数字化日益盛行的今天,移动硬盘已成为我们存储和携带大量数据的重要工具。然而,当这个“数据仓…

HashMap第2讲——put方法源码及细节

上篇文章介绍了HashMap在JDK 1.8前后的四大变化,今天就进入到put方法的源码解析。HashMap的设计非常巧妙,细节也很多,今天来看看部分细节,后续的文章会一一介绍。 ps:学习源码的目的不仅仅是为了了解它的运行机制&…

idea的代码没有提交到仓库怎么撤回到本地?

代码已经提交到变更列表但是还没有push推送到仓库上,可以用这个方法 点击日志-右键要撤回的记录-选择撤销提交 撤销的又回到本地变更 当然你只能撤销自己提交的,别人的你撤销不了

AI基础设施是AI落地赋能的核心关键

AI基础设施内涵与特性 以深度落地赋能为导向,AI供给侧持续推进技术要素全面融合、技术能力自主可控、技术服务普惠低成本,AI供给“基建 化”势在必行,AI基础设施正成为AI的关键供给形态。算法、算力、数据是AI技术应用的三大核心支撑要素&am…

SpringBoot+Vue在线视频课程网站(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 用户教师管理员 系统功能截图

Gradio.NET:一个快速制作演示demo网页的利器

Gradio介绍 Gradio是一个用于创建机器学习模型交互界面的Python库。它允许开发者快速为他们的模型创建一个简单的web界面,以便于非技术用户和其他开发者进行交互和测试。 Gradio的主要优点是易用性和灵活性。你只需要几行代码就可以为你的模型创建一个交互界面。你…

【Python数据挖掘实战案例】机器学习LightGBM算法原理、特点、应用---基于鸢尾花iris数据集分类实战

一、引言 1、简要介绍数据挖掘的重要性和应用 在数字化时代,数据已经成为企业和社会决策的重要依据。数据挖掘作为一门交叉学科,结合了统计学、机器学习、数据库技术和可视化等多个领域的知识,旨在从海量数据中提取有价值的信息&#xff0c…

Marvelous Designer中一些棉质布料预设

Marvelous Designer中一些棉质布料预设的解释: Cotton_14_Wale_Corduroy:14条细鲸鱼纹的灯芯绒,适合制作温暖且有质感的服装。Cotton_40s_Chambray:40支精梳针织的府绸布,通常用于制作休闲衬衫。Cotton_40s_Poplin&am…

echars饼图、柱状图 java返回的数据格式

1、echars饼状图返回的数据格式 [ { "name": "A", "value": 3 }, { "name": "B", "value": 2 }, { "name": "C", "value": 2 } ] java代码Demo 为例:根据名字分组&…

vuInhub靶场实战系列--prime:1

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶场信息1.2 靶场配置 二、信息收集2.1 主机发现2.1.1 netdiscover2.1.2 nmap主机扫描2.1.3 arp-scan主机扫描 2.2 端口扫描…

【CMake系列】06-项目结构与输出路径管理

为了对大型项目实现更好的管理【模块化协作开发等等】,cmake 提供了很多指令,可以对项目的结构进行调整、管理,便于项目的合理规划。本文我们要学习的就是 项目结构的设置,以及 构建程序等 输出路径的设置 本专栏的实践代码全部放…

倾斜侧壁增强光提取效率相关机制的建模仿真研究

较低的光提取效率(LEE)是制约深紫外发光二极管(LED)快速发展的一个重要因素,倾斜侧壁结构可以直接将横向传播的横向磁场(TM)偏振光散射到c面逃逸锥,从而提高器件的LEE,因…

review of c++

友元关系是单向的。 指针