【CTFN】基于耦合翻译融合网络的多模态情感分析的层次学习

同样用了翻译模块的论文->MTMSA

代码地址->github地址

abstract

多模态情感分析是一个具有挑战性的研究领域,涉及多个异构模态的融合。主要的挑战是在多模式融合过程中出现一些缺失的模式。然而,现有的技术需要所有的模态作为输入,因此在预测时间对缺失的模态很敏感。在这项工作中,首次提出了耦合翻译融合网络(CTFN),通过耦合学习来建模双向相互作用,确保了对缺失模态的鲁棒性。具体来说,为了提高翻译性能,提出了循环一致性约束,允许我们直接丢弃译码器,只包含Transformer的编码器。这可能有助于一个更轻的模型。由于耦合学习,CTFN能够并行进行双向交叉模态相关。在CTFN的基础上,进一步建立了利用多重双向翻译的分层结构,与传统翻译方法相比,实现了双重多模态融合嵌入。此外,利用卷积块进一步突出这些翻译之间的显式交互。为了进行评估,CTFN在两个多模式基准上进行了广泛的消融研究。实验表明,所提出的框架达到了最先进的或经常具有竞争力的性能。此外,当考虑缺失模态时,CTFN仍然保持鲁棒性。

intro

情感分析在人工智能领域取得了许多重大进展,其中文本(Yadollahi等人,2017)、视觉(Kahou等人,2016)和声学(Luo等人,2019)模式分别主要用于相关研究,从而可以有效地利用人类的情感特征和意图(Deng等人,2018)。直观上,由于不同来源之间的一致性和互补性,联合表示参与了多模态消息的推理,能够提高特定任务的性能(Pan et al ., 2016;Gebru et al ., 2017;Al Hanai et Al, 2018)。

多模式融合过程是将多种知识结合起来,以预测精确和适当的结果(Baltrusaitis等人,2018)。从历史上看,现有的融合通常是通过利用模型不可知的过程来完成的,考虑到早期融合、晚期融合和混合融合技术(Poria et al, 2017a)。其中,早期的融合集中在单峰表示的串联上(D 'mello和Kory, 2015)。

相比之下,后期融合通过对所有模型结果进行投票,在决策层面进行整合(Shutova et al, 2016)。对于混合融合,输出来自早期融合和单峰预测的结合(Lan et al, 2014)。然而,多模态情感序列往往由不对齐的属性组成,传统的融合方法未能考虑到异质性和不对齐,这给研究更复杂的模型和估计情感信息带来了问题。(Tsai et al ., 2020;Niu et al, 2017)。

最近,基于transformer的多模态融合框架被开发出来,借助多头注意机制来解决上述问题(Rahman等,2020;Le et al, 2019;Tsai et al, 2019)。通过引入标准Transformer网络(Vaswani等人,2017)作为基础,Tsai等人(Tsai等人,2019)以端到端方式直接从未对齐的多模态流中捕获集成,通过跨模态注意力从一种模态潜在地适应到另一种模态,不管是否需要对齐。此外,Wang等人(Wang et al, 2020)提出了一种并联Transformer单元,可以有效地探索多模态知识之间的相关性。然而,为了提高转换性能,采用了标准Transformer的解码器组件,这可能会导致一些冗余。此外,跨情态翻译之间的显式相互作用也没有被考虑在内。本质上,与我们的CTFN相比,它们的架构需要访问所有模态作为输入,以探索与顺序融合策略的多模态相互作用,因此在多个缺失模态的情况下相当敏感。

本文提出了基于耦合学习的CTFN模型来模拟双向相互作用,以确保对缺失模态的鲁棒性。具体来说,为了提高翻译性能,我们提出了循环一致性约束,允许我们直接丢弃译码器,只包含Transformer的编码器。这可能有助于一个更轻的模型。由于耦合学习,CTFN能够并行地进行双向跨模态相互关联。以CTFN为基础,建立了一种层次结构来进行情态引导翻译。然后,提出卷积融合块,进一步探索上述翻译之间的显式相关性。重要的是,基于并行融合策略,我们的CTFN模型在只考虑一种输入模式时仍然具有灵活性和鲁棒性。

为了进行评估,CTFN在两个多模态情绪基准上进行了验证,CMU-MOSI (Zadeh等人,2016)和MELD (Poria等人,2019)。实验表明,与基线模型相比,CTFN可以达到最先进甚至更好的性能。我们还提供了几个扩展的烧蚀研究,以研究所提出模型的内在特性。

related work

现有的多模态情感融合架构包括两大类:基于翻译的模型和非基于翻译的模型。

非翻译:最近,基于rnn的模型,考虑到GRU和LSTM,在利用跨数据的上下文感知信息方面取得了重大进展(Yang等人,2016;Agarwal et al, 2019)。bc−LSTM (Poria et al, 2017b)和GME−LSTM (Chung et al, 2014)提出了一种基于LSTM的模型来检索上下文信息,其中单峰特征被连接成一个单元作为输入信息。类似地,MELD - base (Poria等人,2019)利用输入层上音频和文本特征的连接,并使用GRU对情感上下文建模。相比之下,CHF - usion (Majumder等人,2018)采用基于rnn的分层结构来绘制模态之间的细粒度局部相关性,经验证据表明,与单模态表示的简单串联相比,CHF - usion取得了更大的进步。MMMU−BA (Ghosal et al, 2018)在RNN的基础上,进一步采用多模态注意块来吸收所有相邻话语的贡献,表明注意机制可以利用邻域贡献来整合上下文信息。但是,所有这些方法都适用于单模态内的低层次表示,以非翻译的方式,容易对源中的噪声项和缺失信息敏感。

基于翻译的模型:受到最近成功的序列到序列(Seq2Seq)模型的启发(Lin等人,2019;?)在机器翻译中,(Pham等人,2019)和(Pham等人,2018)通过从源模态转换为目标模态的基本见解提出了多模态融合模型,该模型能够捕获多个模态之间更强大的关联。MCTN模型采用循环翻译模块,以顺序方式检索模态之间的鲁棒联合表示,例如,语言信息首先与视觉模态相关联,然后潜在地翻译成声学模态。与MCTN相比,Seq2Seq2Sent采用Seq2Seq方法引入了层次融合模型。对于第一层,模态对的联合表示被视为下一层Seq2Seq的输入序列,以尝试解码第三层模态。受基于Transformer模型成功的启发,Tsai等人引入了一个定向跨模态注意模块来扩展标准Transformer网络。Wang等人遵循Tsai等人的基本思想,提出了一种新的多模态融合单元,该单元由两个标准的transformer组成,隐含地包含了前向和后向翻译过程中与一个情态对的关联。然而,现有的模型都采用顺序多模态融合架构,需要所有模态作为输入,因此对多个模态缺失的情况比较敏感。此外,没有考虑跨情态翻译之间的显式相互作用。

方法

在本节中,我们首先介绍CTFN(图2),它能够通过耦合学习探索双向跨模态翻译。在CTFN的基础上,建立了一个层次结构来利用多个双向翻译,从而产生双多模态融合嵌入(图4)。然后,应用卷积融合块(图3)进一步突出跨模态翻译之间的显式相关性。

预备

这两个基准包括三种模式,即音频、视频和文本模式。

具体地说,上述话语级模态记为

话语的数量表示为

表示单模特征的维度。

耦合翻译融合网络

为简单起见,我们考虑分别从音频(A)和视频(V)中探索的两种单模表示Xa和Xv。在CTFN的原始过程中,我们重点学习了一个定向翻译器,用于将音频模态翻译成视频。然后,双重过程旨在学习一个反向翻译器,允许从模态视频到音频的翻译。

受transformer在自然语言处理的启发,我们将Transformer的编码器作为翻译块引入到模型中,这是一种有效的、自适应的方法,可以沿时间域检索远程相互作用。重要的是,提出了循环一致性约束来提高翻译性能。

并且由于耦合学习,CTFN能够将原始过程和对偶过程结合成一个耦合结构,从而确保了对缺失模态的鲁棒性。

Q:我不理解什么叫循环一致性

A:"循环一致性"(Cycle Consistency)是一种在多模态学习和机器翻译中常用的技术,特别是在将Transformer架构应用于跨模态转换(如文本到图像、语音到文本等)的场景中。循环一致性可以帮助提高模型在翻译任务中的性能,尤其是在处理带有缺失信息的复杂数据时。

它要求一个通过模型转换的结果可以被另一个模型逆向转换回原始的形态或内容。例如,如果有两种不同的模态A和B:

  1. 如果模态A被转换为模态B(A -> B),然后再将结果从模态B转换回模态A(B -> A),理想的输出应该与原始的模态A非常相似或一致。
  2. 同理,从B到A的转换,再从A回到B,也应该能恢复到原始的B。

对于原始任务,首先将传递到一个密连层,接收一个线性变换,其中La为该线性层的输出维数。对应的查询矩阵、键矩阵和值矩阵记为, , ,其中为权值矩阵。

模态A到V的转换为,其中为伪为尺度系数。

注意,输入Xa直接传递给翻译过程,而输入Xv用于分析真实数据Xv与虚假输出Xv之间的差异。随后,经过,得到重构输出其中Xa仅用于计算真实数据与重构数据的差值。

Q:计算过程完全没有涉及到Xv啊?怎么就可以翻译成X'v了?

A:观察的非常准确,从公司来看,计算过程确实完全没有涉及到Xv,而是完全基于Xa本身来计算翻译后的视频模态特征X'v。这个过程使用了自注意力机制,其中Xa被用于生成QKV。最终输出了X'v也是完全依赖于Xa的变换。

类似地,在对偶过程中,根据输入,捕获,重构表示

本质上,是由几个顺序编码器层实现的。在转换过程中,我们假设中间编码器层包含跨模态融合信息,有效地平衡了两模态的贡献。因此,中间编码器层的输出表示多模态融合知识,其中L表示层数,当L为奇数时,则L = L + 1。

Q:不懂啊,这句话什么意思?这是在干什么?

A:

第一个问题,为什么中间编码器层的输出表示多模态融合信息?

在多模态学习和转换模型中,尤其是那些涉及使用Transformer或类似架构的情况,每个编码器层通常会处理并整合输入数据的特征。在这种上下文中:

当使用多层编码器时,每一层都在前一层的基础上进一步提炼和整合信息。中间层特别重要,因为它们位于输入层和输出层之间,能够捕获和融合来自不同模态的信息。

在处理多模态数据时(如音频、视频等),每个模态的输入首先经过初步处理以提取相关特征,然后这些特征在中间层被进一步结合。中间层的输出因此可以被视为一个融合了多模态输入特征的综合表示,这有助于模型更全面地理解和处理跨模态的内容。

第二个问题,为什么当L是奇数的时候,需要L = L+1?

这个问题涉及到模型设计和实现中的一个具体细节:

在一些多层架构中,特别是那些使用自注意力机制的模型中,设计者可能会希望每个“阶段”或任务(如前向和后向翻译)都能有均等的处理层次。使L为偶数可以确保模型在进行前向和后向处理时,每部分都有相等数量的层来处理信息。

通过增加一个额外的层(当L为奇数时转变为偶数),可以确保所有数据处理阶段都能有充分的深度来学习和抽象数据特征,这在进行复杂的多模态融合时尤其重要。

在某些模型中,中间层的输出被特别设计为多模态融合的关键节点。确保有偶数层数可以使得这些融合层在模型中对称地分布,有利于优化整体的数据流和信息处理。

对于模型奖励,原始过程有一个即时奖励 和 双步相关奖励

表明真实数据与翻译器重构输出的相似度。为简单起见,采用线性变换模块将原步和双步奖励合并为总模型奖励,如

Q:reward,即“奖励”是什么?为什么需要他?如何计算?

A:

1,指导模型学习方向:奖励就是优化目标,奖励机制为模型提供了明确的优化目标,即最大化奖励,通过定义合理的奖励,模型可以更有效地学习到不同模态之间的转换关系。在某些模型中,借鉴强化学习的思想,使用奖励信号来引导模型朝着期望的方向调整参数。

2,增强循环一致性:通过奖励机制,模型被鼓励在模态转换过程中尽可能保留原始信息,以确保在循环转换(如A->V->A)的过程中,恢复模态与原始模态一致。也可以惩罚在转换过程中丢失信息的行为,从而提高模型的鲁棒性进而精准性。

3,处理缺失模态的鲁棒性:在多模态数据中,可能存在某些模态的数据缺失。奖励机制可以引导模型学会在缺失模态的情况下,如何有效地推断或补全缺失的信息。通过对奖励的优化,模型可以更好地适应不同的数据情况,提高对未知数据的泛化能力。

计算奖励机制是基于模型输出与目标之间的差异

在训练过程中,通过最小化lA->V和lV->A,模型学习如何更准确地进行音频到视频以及视频到音频的翻译。

优化这些损失有助于模型在实际应用中更好地处理和重建跨模态数据,增强了模型对于缺失模态信息的处理能力。

其中α用于平衡对偶块和原始块之间的贡献。

另外,耦合平移多模态融合块中使用的损失函数定义如下:

其中分别表示原翻译员和双翻译员的训练损失,lA↔V表示双向翻译员单元的损失。本质上,当训练过程中所有的耦合翻译块都完成的时候,

我们的模型在预测时只需要一个输入模态,不需要目标模态的帮助

的确,lA↔V表示我们的偶学习模型中的循环一致性约束。循环一致性是众所周知的,它是向前和向后循环一致性的结合。

然而,我们的目标是解决多模态学习中的模态缺失问题,这是应用循环一致性直接方法无法实现的。这是因为在CTFN中引入这种严格的循环一致性不能有效地将原始任务与耦合学习模型的双重任务相关联。为了解决这一问题,我们通过使用参数“α”来放松原始循环一致性的约束,以平衡正向和反向循环一致性的贡献,从而获得更灵活的循环一致性。由于新提出的循环一致性具有很大的灵活性,我们可以自适应地将原始任务与双重任务充分关联起来,从而使模式之间的一致性更加平衡。

多模态卷积融合块

基于CTFN,将每个模态作为(M−1)次的source moment,即每个模态保持(M−1)个方向平移,,其中M为模态总数。

例如,给定情态音频,我们可以检索以下两种情态指导翻译:

请注意,音频在不同的跨模态翻译中起着关键作用,并为捕捉各种跨模态相互作用提供了强有力的指导。

为了有效地混合源模态(音频)的贡献,引入了卷积融合块来探索模态引导翻译之间的显式和局部相关性。

首先,将两个跨模态中间相关沿时域连接成一个单位表示,其中时间序列的大小相等,因此连接的大小为

随后,利用时间卷积进一步检索跨模态翻译之间的显式相互作用。具体来说,我们采用一维时间卷积层来轻松地利用局部模式:

其中,Kconcat为卷积核的大小,Ld为跨模态积分维的长度。时间核用于沿特征维度执行卷积操作,允许进一步利用跨模态转换之间的局部相互作用。也就是说,局部的相互作用充分利用了模态导向翻译的贡献

Q:卷积融合模块的作用是什么?

A:卷积融合模块被用于处理和增强跨模态转换后的特征表示,具体地,模型通过结合多模态信息并使用时间卷积来探索和加强这些模态之间的局部和显示交互。

1.数据准备
  • 跨模态转换输出:首先,来自不同模态的翻译输出(如音频到视频和音频到文本)在特定的中间层L/2被提取。这些层级的输出被视为捕获了重要的多模态交互信息。
  • 数据拼接:这些跨模态转换的结果被沿着时间轴拼接起来,形成一个统一的数据表示

2.卷积处理

  • 一维时间卷积:对拼接后的数据Zconcat应用一维时间卷积,这种卷积专注于沿时间轴(或跨模态集成维度Ld)探索数据的局部模式。
  • 卷积参数:卷积核的大小Kconcat和特征维度的长度Ld定义了卷积操作的覆盖范围和感受野,这对于捕获局部依赖性至关重要。

3.输出

  • 卷积输出:卷积操作的结果提供了一个经过增强的特征表示,这些特征更有效地融合了不同模态之间的交互信息。
  • 功能:这个增强的特征表示有助于模型更好地理解和利用跨模态数据中的关系,特别是在需要对这些复杂数据进行决策或进一步处理时。

层次化的体系结构

在CTFN和卷积多模态融合网络的基础上,提出了一种利用多重双向平移实现双多模态融合嵌入的分层结构。例如,给定M模态,我们的模型可以实现双嵌入。如图4所示,所提出的体系结构由三个CTFNs 组成。考虑到制导(源)模态的贡献,将模态-制导翻译分别记为

同样,当考虑目标模态的贡献时,相应的模态引导翻译分别为 ,

随后,利用卷积融合层进一步利用相同源/目标模态关联的模态制导转换之间的显式局部相互作用,充分利用源/目标模态的贡献。

从本质上看,如图4所示,我们的模型总共有“12+1”个损失约束,其中包括3个CTFNs,每个CTFN有4个训练损失(原始和双重翻译训练损失)和1个分类损失。然而,我们不需要同时平衡这些目标,这是通过我们的训练策略来实现的,即分别训练3个ctfn。对于每个CTFN,引入一个超参数“α”来平衡原始翻译器和双翻译器的损失,并且该超参数在3个CTFN中共享。因此,3个CTFNs只需要1个超参数就可以平衡训练损失,而且很容易调优。分类损失用于在3个CTFNs的输出上训练分类器。

experiments

experimental setups

数据集。CMU-MOSI由来自在线分享网站(如YouTube)的2199个观点视频剪辑组成。视频片段的每一个话语都被标注了一个特定的情感标签,在[−3,+3]的范围内,是积极的还是消极的。相应的训练、验证、测试规模参照除法集(1284、229、686)。此外,相同的说话人不会同时出现在训练集和测试集中,从而允许利用与说话人无关的联合表示。MELD数据集包含来自著名电视剧《老友记》的13000句台词。每个话语都有情绪和情绪标签,考虑到7类情绪标签(愤怒、厌恶、恐惧、喜悦、中性、悲伤和惊讶)和3个情感倾向水平(积极、中性和消极)。因此,对于数据注释,原始数据集可以表示为MELD (Sentiment)和MELD (Emotion),我们只在MELD (Sentiment)上验证了我们的模型。请注意,CMU-MOSI和MELD是已经被对齐和分割的公共和广泛使用的数据集。

特征。对于CMU-MOSI数据集,我们采用与MFN (Zadeh et al ., 2018)相同的预处理方式提取多模态数据的低级表示,并在与文本模态一致的话语层面进行同步。对于MELD基准,我们遵循MELD的相关工作,其中将300维GloVe (Pennington et al ., 2014)文本向量输入到1D-CNN (Chen et al ., 2017)层中以提取文本表示,并使用流行的工具包openSMILE (Eyben et al ., 2010)探索基于音频的描述符,而在情感分析中不考虑视觉特征。

对比。我们介绍了基于翻译和非基于翻译的模型作为这项工作的基线。基于翻译的:多模态循环翻译网络(MCTN),情感序列到序列(Seq2Seq2Sent),基于Transformer的多模态情感分析(TransModality)。非翻译基础:双向上下文LSTM (bc-LSTM)、门控嵌入LSTM (GME-LSTM)、多模态EmotionLines数据集基线模型(MELDbase)、分层融合上下文建模(CHFusion)、多模态多话语双模态注意(MMMU-BA)。

experiment result and analysis

性能比较与最先进的模型

首先,我们分析了最先进的基线和我们提出的模型之间的性能。表1中最下面的几行表明了我们模型的有效性和优越性。特别是,在CMU-MOSI数据集上,CTFN在(视频,音频)上超过了之前最好的TransModality 4.51。此外,在MELD (Sentiment)数据集上,CTFN的经验改进为0.78。有趣的是,(视频、音频)的改进比(文本、视频)和(文本、音频)的改进更显著。这意味着耦合翻译结构能够有效地降低视频和音频之间的干扰风险,并进一步利用辅助特征之间的显式一致性。在(文本、音频、视频)方面,CTFN超过了之前的最佳TransModality,提高了0.06,达到了相当的性能。的确,对于同样的三模态融合任务,TransModality需要4个编码器和4个解码器,而CTFN只需要6个编码器。应该强调的是,循环一致性机制可以促成一个更轻的模型,以及更有效的双向转换。此外,与双模态设置相比,三模态情况下的改进率提高了0.61,这表明分层结构和卷积融合带来的好处。

缺失模式下CTFN的影响

现有的基于翻译的方式只关注模态之间的连接表示,而忽略了缺失模态的潜在发生。 

因此,我们分析了缺失模态如何影响CTFN和基于序列翻译的模型SeqSeq2Sent的最终性能。

注意,SeqSeq2Sent只使用LSTM来分析单模态,而不是基于翻译的方法。具体而言,我们采用分层结构结合三个ctfn作为测试模型。从表2中,我们观察到,与设置(文本,音频,视频)相比,基于文本的设置{(音频,视频,文本),(音频,视频,文本),(音频,视频,文本)}似乎达到了可比较的结果,只有相对较小的性能下降。相比之下,当文本缺失时,模型的性能下降相对较大,这意味着语言情态比音频和视频包含更多的歧视性情感信息,导致性能明显更好。从本质上讲,(音频、视频、文本)的性能表明,当只考虑单一输入模式时,分层CTFN能够保持鲁棒性和一致性。换句话说,循环一致性机制允许CTFN充分利用跨模态相互作用,从而分层CTFN可以将单一模态传递给各种预训练的CTFN以检索多模态融合信息。

翻译方向的影响

在本文中,我们提出了一个耦合翻译块,旨在包含双向翻译过程中的融合信息。因此,我们有兴趣研究翻译方向的影响。图6描述了考虑(音频、文本)、(音频、视频)和(文本、视频)翻译的各种翻译的性能。对于(音频,文本)实例,翻译文本→音频比翻译音频→文本的效果更好。

同样,翻译文本→视频的结果也超越了视频→文本的结果。但是,音频→视频和视频→音频的表现似乎非常相似。文本→视频和文本→音频的优势可以说明文本情态具有更多的情感信息。

此外,文本情态的前景使文本成为翻译的坚强支柱。

翻译层的作用

由于每个转换器由几个顺序编码器层组成。在这一部分中,我们假设特定层的输出表示可能会影响所提议模型的性能。为了简单起见,我们在CMU-MOSI上执行相关任务,设置为(a, v, t),以及MELD (Sentiment)上的(t, a)。最初,我们从特定层检索嵌入,其中层的范围从1到L (L是层的总数)。在图7中,有趣的是,模型在CMU-MOSI的第5层达到峰值,这意味着第5层的输出包含了最具判别性的融合信息。相比之下,在MELD(情感)上,模型在第1层实现了最佳性能,这可能意味着仅与一层关联的简单翻译器能够捕获简单情况(文本,音频)的联合表示。总之,较低的编码器层可能涉及低级别的相互作用特征,而较高的编码器层可能包含显式消息。此外,编码器的特定层的输出取决于相应的任务和数据集。我们也在MOSI上尝试了(文本,音频),CTFN在第3层最大化了性能。与(文本、音频、视频)相比,(文本、音频)是相对简单的情况,因此较低的编码器层可能足以演示文本和音频之间的交互。

翻译串联策略的效果

在我们的工作中,那些与相同指导(源)模态相关的翻译沿着特征域连接起来。由于每种情态依次作为源语和目的语情态,我们有兴趣分析不同的连接策略的影响,例如,通过相同的源语或目的语情态连接翻译。如图8所示,我们可以明显地发现基于音频的目标拼接[(T→A)⊕(V→A)]的性能明显优于[(A→T)⊕(A→V)],且差距很大。类似地,基于视频的目标拼接[(T→V)⊕(A→V)]比[(V→A)⊕(V→T)]效果更好。上述表现可能表明,借助引导情态文本,联合示列能够实现显著提高的效益。综上所述,当文本模态作为引导模态时,可以有效地利用音频和视频的贡献,从而以稳健和一致的方式进一步提升任务绩效。

结论

本文提出了一种基于耦合平移融合网络(CTFN)的分层多模态融合架构。最初,CTFN被用于利用双向相互作用,通过偶学习,确保对缺失模态的鲁棒性。具体来说,循环机制直接抛弃了解码器,而只包含了Transformer的编码器,这有助于实现更轻的模型。由于耦合学习,CTFN能够并行进行双向跨模态相互关联。在CTFN的基础上,进一步建立了利用多重双向翻译的分层结构,与传统翻译方法相比,实现了双重多模态融合嵌入。此外,采用多模态卷积融合块进一步探索跨模态翻译之间的互补性和一致性。从本质上讲,并行融合策略允许模型在只考虑一种输入模态时保持鲁棒性和灵活性。CTFN在两个公共多模态情感基准上进行了验证,实验证明了CTFN的有效性和灵活性,并且CTFN在CMU-MOSI和MELD(情感)上达到了状态或相当的性能。对于未来的工作,我们希望在更多的多模态融合任务中评估CTFN。

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

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

相关文章

Go的环境搭建以及GoLand安装教程

目录 一、开发环境Golang安装 二、配置环境变量 三、GoLand安装 四、Go 语言的 Hello World 一、开发环境Golang安装 官方网址: The Go Programming Language 1. 首先进入官网,点击Download,选择版本并进行下载: ​ ​ 2. …

Spring IoC DI

1. IoC 1.1 容器 容器是用来容纳某种物品的(基本)装置。——来自:百度百科 生活中的水杯,垃圾桶,冰箱等等,都是容器 代码中的容器,如:List/Map -> 数据存储容器;T…

Python异常检测 - LSTM(长短期记忆网络)

系列文章目录 Python异常检测- Isolation Forest(孤立森林) python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS) python异常检测-局部异常因子(LOF)算法 Python异常检测- DBSCAN Python异常检测- 单类支持向量机(…

DolphinDB 与南方科技大学联合授课啦!

11月1日,南方科技大学商学院和 DolphinDB 联合举办了高校课程讲座。讲座由南方科技大学商学院高级研究学者冯鹏举主持,DolphinDB 创始人兼 CEO 周小华博士、某百亿私募数据平台架构师潜蛟老师进行精彩演讲。 Part 1 : 大数据时代下数据库架构革新与生态…

3.PyCharm工具

第三方IDE,集成开发工具,官网下载。 社区版本,免费使用。 创建项目

微信小程序——用户隐私保护指引填写(详细版)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

【在Linux世界中追寻伟大的One Piece】poll代码改写

目录 1 -> poll代码改写 1 -> poll代码改写 结合select代码&#xff0c;将select server更改成为pollserver&#xff0c;不是一件困难的事情。 #pragma once#include <iostream> #include <string> #include <poll.h> #include <memory> #inc…

安利一款开源企业级的报表系统SpringReport

SpringReport是一款企业级的报表系统&#xff0c;支持在线设计报表&#xff0c;并绑定动态数据源&#xff0c;无需写代码即可快速生成想要的报表&#xff0c;可以支持excel报表和word报表两种格式&#xff0c;同时还可以支持excel多人协同编辑&#xff0c;后续考虑实现大屏设计…

【11月10日最新】V2.6.1版本植物大战僵尸杂交版分享与下载

&#x1f447;下载链接&#xff1a; 点击下载 更新内容 植物大战僵尸杂交版2.6.1版本的更新内容主要包括以下几个方面&#xff1a; 梦幻联动&#xff1a; 与UP主轻柔北风合作&#xff0c;推出了“植物大战僵尸贴吧版”。联动植物包括石果子与雷蘑菇杂交的雷果子&#xff0c;…

Jenkins找不到maven构建项目

有的可能没有出现maven这个选项 解决办法&#xff1a;需要安装Maven项目插件 输入​Maven Integration plugin​

路过宝安乌石岩庙记

​每周带娃从上屋地铁去罗租大道的七彩城堡儿童乐园玩&#xff0c;路上都会经过乌石岩庙附近。听说香火很繁盛&#xff0c;娃说也想去看看&#xff0c;于是来到了乌石岩庙。 石岩乌石岩庙 广东省深圳市宝安区老街一区94号 ​从百度知悉&#xff1a;乌石岩庙&#xff0c;又称“…

练习LabVIEW第四十四题

学习目标&#xff1a; 计算学生三门课(语文&#xff0c;数学&#xff0c;英语)的平均分&#xff0c;并根据平均分划分成绩等级。要求输出等级A,B,C,D,E。90分以上为A&#xff0c;80&#xff5e;89为B&#xff0c;70&#xff5e;79为C&#xff0c;60&#xff5e;69为D&#xff…

软考高级架构 - 8.1 - 系统质量属性与架构评估 - 超详细讲解+精简总结

第8章 系统质量属性与架构评估 软件系统属性包括功能属性和质量属性&#xff0c;而软件架构重点关注质量属性。 8.1 软件系统质量属性 8.1.1 概述 软件系统的质量反映了其与需求的一致性&#xff0c;即&#xff1a;软件系统的质量高低取决于它是否能满足用户提出的需求&#…

最详细【Elasticsearch】Elasticsearch Java API + Spring Boot集成 实战入门(基础篇)

Elasticsearch Java API Spring Boot集成 实战入门&#xff08;基础篇&#xff09; 一、初始Elasticseach1、什么是Elasticseach2、Elasticsearch生态2、Elasticsearch结构3、Elasticsearch核心概念4、Elasticsearch 实现全文检索的原理 二、Elasticsearch入门1、入门-环境安装…

类文件结构详解

回顾一下字节码 在 Java 中&#xff0c;JVM 可以理解的代码就叫做字节码&#xff08;即扩展名为 .class 的文件&#xff09;&#xff0c;它不面向任何特定的处理器&#xff0c;只面向虚拟机。Java 语言通过字节码的方式&#xff0c;在一定程度上解决了传统解释型语言执行效率低…

RabbitMQ的应用

七种工作模式介绍 1.Simple(简单模式) P&#xff1a;生产者&#xff0c;也就是要发送信息的程序 C&#xff1a;消费者&#xff0c;消息的接收者 Queue&#xff1a;消息队列。图中黄色背景部分&#xff0c;类似一个邮箱&#xff0c;可以缓存发送信息&#xff1b;生产者向其中…

科研绘图系列:R语言组合堆积图(stacked plot)

文章目录 介绍加载R包数据数据预处理画图1画图2组合图形系统信息介绍 堆积图(Stacked Chart),也称为堆叠图,是一种常用的数据可视化图表,主要用于展示不同类别的数据量在总体中的分布情况。堆积图可以是柱状图、条形图或面积图的形式,其中各个类别的数据量被叠加在一起,…

测试概念以及测试bug

关于测试的概念 什么是需求&#xff1f; 需求分为用户需求和软件需求。 软件需求可以作为开发和测试工作的依据&#xff0c;而用户需求不一定是合理的&#xff0c;这里的不合理有很多的角度&#xff1a;技术角度上&#xff0c;市场需求上&#xff0c;投入成本和收益比噔噔。…

单体架构的 IM 系统设计

先直接抛出业务背景&#xff01; 有一款游戏&#xff0c;日活跃量&#xff08;DAU&#xff09;在两千左右&#xff0c;虽然 DAU 不高&#xff0c;但这两千用户的忠诚度非常高&#xff0c;而且会持续为游戏充值&#xff1b;为了进一步提高用户体验&#xff0c;继续增强用户的忠…

Node.js——fs模块-文件删除

1、在Node.js中&#xff0c;我们可以使用unlink或unlinkSync来删除文件。 2、语法&#xff1a; fs.unlink(path,callback) fs.unlinkSync(path) 参数说明&#xff1a; path 文件路径 callback 操作后的回调函数 本文的分享到此结束&#xff0c;欢迎大家评论区一同讨论学…