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

news2024/11/26 13:34:52

同样用了翻译模块的论文->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.coloradmin.cn/o/2236279.html

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

相关文章

1.每日SQL----2024/11/7

题目: 计算用户次日留存率,即用户第二天继续登录的概率 表: iddevice_iddate121382024-05-03232142024-05-09332142024-06-15465432024-08-13523152024-08-13623152024-08-14723152024-08-15832142024-05-09932142024-08-151065432024-08-131123152024-…

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

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

使用ookii-dialogs-wpf在WPF选择文件夹时能输入路径

在进行WPF开发时,System.Windows.Forms.FolderBrowserDialog的选择文件夹功能不支持输入路径: 希望能够获得下图所示的选择文件夹功能: 于是,通过NuGet中安装Ookii.Dialogs.Wpf包,并创建一个简单的工具类: …

RHCE---搭建lnmp云存储

一、恢复快照后,检查安全性(查看selinux 以及防火墙) 二、搭建LNMP环境 [rootserver ~]# yum -y install nginx mariadb-server php*三、上传软件 1、将nextcloud-25.0.1.zip压缩包传递到根目录下 2、解压缩nextcloud-25.0.1.zip &#xf…

Day95 Docker

Docker的使用 1、Docker是什么 docker是一个用来管理镜像的容器 容器(container):可以装东西 镜像( image ):所谓的镜像,你可以认为就是一个虚拟机 虚拟机:用软件代理硬件来模拟整个计算机的这样一套软件就成为 虚拟机 镜像说白了…

从分析Vue实例生命周期开始,剖析Vue页面跳转背后执行过程

文章目录 1.概要2.Vue实例生命周期3.生命周期函数解释4.存在父子组件情况页面执行过程5. 分析路由跳转页面执行过程6.扩展补充7.小结 1.概要 本文旨在分析Vue页面进行路由切换时,Vue背后的运行过程,旨在让大家更加清晰地明白Vue页面运行过程中钩子方法的…

超分辨重建——复现SwinIR网络推理测试(详细图文教程)

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 📝《图像增强》 &a…

【青牛科技】应用方案 | D75xx-150mA三端稳压器

概 述 D75XX系列是一套三端高电流低压稳压器。它们可以提供 150mA 的输出电流和允许输入电压高达30V。它们有几个固定的输出电压范围为3.0 V至5.0 V。CMOS 技术确保低电压降和低静态电流。 虽然这些设备主要设计为固定电压调节器,但它们可以与外部元件一起使用&…

BO-CNN-LSTM回归预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多输入单输出回归预测

BO-CNN-LSTM回归预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多输入单输出回归预测 目录 BO-CNN-LSTM回归预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 …

WPF 打包

打包为单个exe文件直接运行 - - -版本.NET8 新建WPF项目 右键 - 发布 选择发布文件夹 选择发布文件夹 选择发布文件夹 配置 配置,保存 发布 WPF 打包为exe安装程序 示例 实现思路 引导项目中嵌入其它项目可运行目录的zip引导项目中解压zip文件到指定文件夹是…

三维测量与建模笔记 - 3.3 张正友标定法

上图中,提到了世界坐标系在张正友标定法中的设计,可以理解为将世界坐标系的原点放到了棋盘格左上角点的位置,并且棋盘格平面上所有点的Z为0,将Z规定为0的话,可以简化掉一个维度(列向量r3)。去掉…

【解决办法】无法使用右键“通过VSCode打开文件夹”

个人博客:苏三有春的博客 前言 作者的编程环境为VScode,工作时常使用VScode打开整个工程文件夹。如果先打开VScode再从VScode中选择文件夹打开效率太慢,作者一般使用的方式是右键文件夹,直接选择"通过code打开文件夹"…

推荐一款ETCD桌面客户端——Etcd Workbench

Etcd Workbench 我相信很多人在开始管理ETCD的时候都去搜了Etcd客户端工具,然后找到了官方的Etcd Manager,但用完之后发现它并不好用,还不支持多连接和代码格式化,并且已经好几年不更新了,于是市面上就有了好多其他客…

Docker配置及简单应用

谈论/理解 Docker 的常用核心部分,以下皆在 Ubuntu 操作系统下进行 1 国内源安装 Docker-ce 1.1 配置 Linux 内核流量转发 因为docker和宿主机的端口映射,本质是内核的流量转发功能,所以要对其进行配置 1.1.1 未配置流量转发 如果没有配置流…

(十二)JavaWeb后端开发——MySQL数据库

目录 1.数据库概述 2.MyQSL 3.数据库设计 DDL 4.MySQL常见数据类型 5.DML 1.数据库概述 数据库:DataBase(DB),是存储和管理数据的仓库 数据库管理系统:DataBase ManagementSystem(DBMS),操纵和管理数据库的大型软件 SQL&a…

fastadmin后台列表根据所选中的行统计指定字段|fastadmin点击checkbox或反选统计某个字段的值

当选中对应行时,统计选中行的用户注册数和用户点击数。 此项功能需要有 点击全选触发事件、点击反选触发事件、勾选某一行触发事件、反选某一行触发事件,用到fastadmin自带的表格事件功能,参考:https://doc.fastadmin.net/doc/19…

stm32使用串口DMA实现数据的收发

前言 DMA的作用就是帮助CPU来传输数据,从而使CPU去完成更重要的任务,不浪费CPU的时间。 一、配置stm32cubeMX 这两个全添加上。参数配置一般默认即可 代码部分 只需要把上期文章里的HAL_UART_Transmit_IT(&huart2,DATE,2); 全都改为HAL_UART_Tra…

轨迹规划中优化预测:学习多个初始解的优化器

Abstract 在许多应用中,如机器人控制、自动驾驶和投资组合管理,需要在严格的运行时间限制下连续地解决相似的优化问题。在这种情况下,局部优化方法的性能对初始解的质量非常敏感:不良的初始化可能会导致收敛缓慢或得到次优解。为…

05 SQL炼金术:深入探索与实战优化

文章目录 SQL炼金术:深入探索与实战优化一、SQL解析与执行计划1.1 获取执行计划1.2 解读执行计划 二、统计信息与执行上下文2.1 收集统计信息2.2 执行上下文 三、SQL优化工具与实战3.1 SQL Profile3.2 Hint3.3 Plan Baselines3.4 实战优化示例 SQL炼金术&#xff1a…

JS封装随机生成一个颜色值工具函数

本文给大家带来的是封装的一个随机生成一个颜色值的工具函数。案例中提供了4个不同的调用函数,但实现的功能本质上都是一样的,开箱即用,随调随用。 //方法一 function getRandomColor() { //随机颜色return #${Math.floor(Math.random() * …