【对比学习论文】SimCLR 视觉表征对比学习的简单框架

news2024/12/20 22:22:33
  • 文章题目:A Simple Framework for Contrastive Learning of Visual Representations
  • 时间:2020

摘要

  • 本文提出了SimCLR:一种用于视觉表征对比学习的简单框架。我们简化了最近提出的对比自监督学习算法,而不需要专门的架构或内存库。为了了解是什么使对比预测任务能够学习有用的表示,我们系统地研究了框架的主要组成部分。我们表明(1)数据增强的组成在定义有效的预测任务中起着关键作用,(2)在表示和对比损失之间引入可学习的非线性转换,极大地提高了学习表示的质量,(3)与监督学习相比,对比学习受益于更大的批量和更多的训练步骤。通过结合这些发现,我们能够大大优于以前在ImageNet上进行自监督和半监督学习的方法。在SimCLR学习的自监督表示上训练的线性分类器达到了76.5%的top-1精度,这比以前的技术水平相对提高了7%,与有监督的ResNet-50的性能相匹配。当只对1%的标签进行微调时,我们达到了85.8%的前5名准确率,比AlexNet少100倍的标签。

引言

  • 在没有人类监督的情况下学习有效的视觉表现是一个长期存在的问题。大多数主流方法可以分为两类:生成式或鉴别式。生成式方法学习在输入空间中生成或以其他方式建模像素(Hinton等人,2006;金玛和韦林,2013;Goodfellow等人,2014)。然而,像素级生成在计算上是昂贵的,对于表示学习可能不是必需的。判别方法使用类似于监督学习的目标函数学习表示,但训练网络执行借口任务,其中输入和标签都来自未标记的数据集。许多这样的方法依赖启发式来设计借口任务(Doersch等人,2015;Zhang et al, 2016;Noroozi & Favaro, 2016;Gidaris等人,2018),这可能会限制习得表征的普遍性。在潜在空间中基于对比学习的判别方法最近显示出了巨大的前景,取得了最先进的结果(Hadsell等人,2006;Dosovitskiy等人,2014;Oord等人,2018;巴赫曼等人,2019)。
  • 在这项工作中,我们介绍了一个简单的视觉表征对比学习框架,我们称之为SimCLR。SimCLR不仅优于以前的工作(图1),而且它也更简单,不需要专门的架构(Bachman等人,2019;Hénaff等人,2019)也没有记忆库(Wu等人,2018;田等,2019;He et al, 2019;Misra & van der Maaten, 2019)。
    在这里插入图片描述
  • 图1:用不同的自监督方法(在ImageNet上预训练)学习的表示训练线性分类器的Top-1精度。灰色叉表示受监管的ResNet-50。我们的方法SimCLR以粗体显示。
  • 为了理解是什么促成了良好的对比表征学习,我们系统地研究了框架的主要组成部分,并表明:
    • 多个数据增强操作的组合对于定义产生有效表示的对比预测任务至关重要。此外,无监督对比学习比监督学习受益于更强的数据增强。
    • 在表示和对比损失之间引入一个可学习的非线性转换,极大地提高了学习表示的质量。
    • 具有对比交叉熵损失的表示学习受益于标准化嵌入和适当调整的温度参数
    • 与监督学习相比,对比学习受益于更大的批量和更长的训练。像监督学习一样,对比学习受益于更深更广的网络。
  • 我们将这些发现结合起来,在ImageNet ILSVRC-2012上实现了自监督和半监督学习的最新技术(Russakovsky et al, 2015)。在线性评估协议下,SimCLR达到了76.5%的top-1精度,比以前的最先进技术相对提高了7% (Hénaff等人,2019)。当仅对1%的ImageNet标签进行微调时,SimCLR达到了85.8%的前5名精度,相对提高了10% (Hénaff等,2019)。当对其他自然图像分类数据集进行微调时,SimCLR在12个数据集中的10个数据集上的表现与强监督基线相当或更好(Kornblith等人,2019)。

方法

对比学习框架

  • SimCLR受到最近的对比学习算法(参见第7节的综述)的启发,通过在潜在空间中进行对比损失,使同一数据示例的不同增强视图之间的一致性最大化,从而学习表示。如图2所示,该框架包括以下四个主要组件。
    在这里插入图片描述
  • 图2: 视觉表征对比学习的简单框架。从同一扩充族(t∼T和t‘∼T)中抽取两个独立的数据扩充操作符,并应用于每个数据示例以获得两个相关视图。训练基编码器网络f(·)和投影头g(·)以使用对比损失最大化一致性。训练完成后,我们丢弃投影头g(·),使用编码器f(·)和表示h进行下游任务。
    • 一个随机数据增强模块,它随机转换任何给定的数据示例,导致相同示例的两个相关视图,表示为 x ~ i {\tilde x_i} x~i x ~ j {\tilde x_j} x~j,我们将其视为正对。在这项工作中,我们依次应用三种简单的增强:随机裁剪,然后将大小调整回原始大小,随机颜色失真和随机高斯模糊。如第3节所示,随机裁剪和颜色失真的结合是实现良好性能的关键。
    • 从增强数据示例中提取表示向量的神经网络基编码器f(·)。我们的框架允许在没有任何限制的情况下对网络架构进行各种选择。为了简单,我们选择采用常用的ResNet(He et al., 2016)来获得 h i = f ( x ~ i ) = R e s N e t ( x ~ i ) h_i = f({\tilde x_i}) =ResNet({\tilde x_i}) hi=f(x~i)=ResNet(x~i),其中 h i ∈ R d h_i∈R^d hiRd是平均池化层后的输出。
    • 一个小型神经网络投影头g(·),将表示映射到应用对比损失的空间。我们使用一个隐层MLP,得到 z i = g ( h i ) = W ( 2 ) σ ( W ( 1 ) h i ) z_i = g(h_i) = W^{(2)}σ(W^{(1)}h_i) zi=g(hi)=W(2)σ(W(1)hi),其中 σ σ σ是一个ReLU非线性。如第4节所示,我们发现在 z i z_i zi上而不是 h i h_i hi上定义对比损失是有益的
    • 为比较预测任务定义的比较损失函数。给定一组 { x ~ k } \{ \tilde x_k \} {x~k},包括一对正面的示例 x ~ i {\tilde x_i} x~i x ~ j {\tilde x_j} x~j,对比预测任务旨在为给定的 x ~ i {\tilde x_i} x~i识别 { x ~ k } k ≠ i \{ \tilde x_k \}_{k \ne i} {x~k}k=i中的 x ~ j {\tilde x_j} x~j
  • 我们随机抽取一个包含 N N N个样本的小批量,并在从小批量中导出的增强样本对上定义对比预测任务,得到 2 N 2N 2N个数据点。我们没有明确地抽取反面例子。相反,给定一个正对,类似于(Chen et al, 2017),我们将小批内的其他 2 ( N − 1 ) 2(N−1) 2(N1)个增宽示例视为负示例。设 s i m ( u , v ) = u T v ∥ u ∥ ∥ v ∥ sim\left( {u,v} \right) = \frac{{{u^T}v}}{{\left\| u \right\|\left\| v \right\|}} sim(u,v)=uvuTv表示 l 2 l_2 l2归一化 u u u v v v之间的点积(即余弦相似度)。则正对样本 ( i , j ) (i, j) (i,j)的损失函数定义为:
    在这里插入图片描述
  • 其中 1 k ≠ i ∈ { 0 , 1 } {{1_{k \ne i}}}∈\{0,1\} 1k=i{0,1}是在 k ≠ i k \ne i k=i时求值为1的指标函数, τ τ τ表示温度参数。在一个小批中,计算所有正对(i, j)和(j, i)的最终损失。这种损失已经在以前的工作中使用(Sohn, 2016;Wu等,2018;Oord等人,2018);为方便起见,我们称之为NT-Xent(标准化温度缩放交叉熵损失)。

大批量培训

  • 为了保持简单,我们没有使用记忆库来训练模型(Wu等人,2018;He et al, 2019)。相反,我们将训练批大小N从256改变为8192。批次大小为8192,从两个增强视图来看,每对正对给出16382个负示例。当使用标准SGD/Momentum和线性学习率缩放时,大批量的训练可能不稳定(Goyal等人,2017)。为了稳定训练,我们对所有批量大小使用LARS优化器(Y ou et al, 2017)。我们用云tpu训练我们的模型,根据批处理大小使用32到128个核。
  • Global BN。标准ResNets使用批量归一化(Ioffe & Szegedy, 2015)。在具有数据并行性的分布式训练中,BN平均值和方差通常在每个设备上本地聚合。在我们的对比学习中,由于正对是在同一设备中计算的,模型可以利用局部信息泄漏来提高预测精度,而不需要改进表示。我们通过在训练期间聚合所有设备上的BN平均值和方差来解决这个问题。其他方法包括跨设备变换数据示例(He等人,2019),或用层范数替换BN (Hénaff等人,2019)。

评估协议

  • 在这里,我们为我们的实证研究制定了协议,旨在了解我们框架中的不同设计选择。
  • 数据集和度量。我们对无监督预训练(无标签学习编码器网络 f f f)的大部分研究都是使用ImageNet ILSVRC-2012数据集完成的(Russakovsky et al, 2015)。关于CIFAR-10的一些额外的预训练实验(Krizhevsky & Hinton, 2009)可以在附录B.9中找到。我们还在广泛的迁移学习数据集上测试预训练的结果。为了评估学习到的表示,我们遵循广泛使用的线性评估协议(Zhang et al, 2016;Oord等人,2018;巴赫曼等人,2019;Kolesnikov等人,2019),其中线性分类器在冻结的基网络上训练,测试精度被用作表示质量的代理。除了线性评估,我们还比较了半监督和迁移学习的最先进技术。
  • **默认设置。**除非另有说明,对于数据增强,我们使用随机裁剪和调整大小(随机翻转)、颜色失真和高斯模糊(详见附录A)。我们使用ResNet-50作为基本编码器网络,并使用2层MLP投影头将表示投影到128维潜在空间。我们使用NT-Xent作为损失,使用LARS优化,学习率为4.8 (= 0.3 × BatchSize/256),权重衰减为10−6。我们以批量大小4096训练100个epoch。3此外,我们对前10个周期使用线性预热,并在不重启的情况下使用余弦衰减时间表衰减学习速率(Loshchilov & Hutter, 2016)。

对比表征学习的数据增强对比表征学习的数据增强

  • 数据增强定义了预测性任务。虽然数据增强已广泛应用于有监督和无监督表示学习(Krizhevsky et al,2012;Hénaff等,2019;Bachman et al, 2019),它还没有被认为是一种系统的方式来定义对比预测任务。许多现有的方法通过改变架构来定义对比预测任务。例如,Hjelm等人(2018);Bachman等人(2019)通过约束网络架构中的接受场来实现全局到局部的视图预测,而Oord等人(2018);Hénaff等人(2019)通过固定的图像分割过程和上下文聚合网络实现了邻近视图预测。我们证明,可以通过对目标图像执行简单的随机裁剪(调整大小)来避免这种复杂性,这创建了包含上述两个任务的一系列预测任务,如图3所示。这种简单的设计选择方便地将预测任务与其他组件(如神经网络架构)分离开来。更广泛的对比预测任务可以通过扩展增强族并随机组合它们来定义。

数据增强操作的组成对于学习良好的表示是至关重要的

  • 为了系统地研究数据增强的影响,我们在这里考虑几种常见的增强。一种类型的增强涉及数据的空间/几何转换,例如裁剪和调整大小(使用水平翻转)、旋转(Gidaris等人,2018)和裁剪(DeVries & Taylor, 2017)。另一种类型的增强包括外观转换,如颜色失真(包括颜色下降、亮度、对比度、饱和度、色相)(Howard, 2013;Szegedy等人,2015),高斯模糊和Sobel滤波。图4显示了我们在这项工作中研究的增强。
  • 为了理解单个数据增强的效果和增强组合的重要性,我们研究了单独或成对应用增强时框架的性能。由于ImageNet图像的大小不同,我们总是应用裁剪和调整图像的大小(Krizhevsky等人,2012;Szegedy等人,2015),这使得在没有种植的情况下很难研究其他增加。为了消除这种混乱,我们考虑了这种消融的非对称数据转换设置。具体来说,我们总是首先随机裁剪图像并将它们调整到相同的分辨率,然后我们将目标转换仅应用于图2中框架的一个分支,而将另一个分支作为单位(即t(xi) = xi)Ric数据扩充会影响性能。尽管如此,这种设置不应该实质性地改变单个数据扩展或其组成的影响。
  • 图5显示了单个变换和组合变换下的线性评估结果。我们观察到,没有一个单一的转换足以学习良好的表示,即使模型几乎可以完美地识别对比任务中的正对。当组合增强时,对比预测任务变得更加困难,但表示的质量显著提高。附录B.2提供了关于组成更广泛的扩充集的进一步研究。
  • 增强的一个组成突出:随机裁剪和随机颜色失真。我们推测,当只使用随机裁剪作为数据增强时,一个严重的问题是来自图像的大多数补丁共享相似的颜色分布。图6显示颜色直方图足以区分图像。神经网络可以利用这一捷径来解决预测任务。因此,为了学习可泛化的特征,用颜色失真组成裁剪是至关重要的。

对比学习比监督学习需要更强的数据扩充

  • 为了进一步说明色彩增强的重要性,我们将色彩增强的强度调整为表1所示。更强的颜色增强极大地提高了学习的无监督模型的线性评价。在这种情况下,自动增强(Cubuk等人,2019),一种使用监督学习发现的复杂的增强策略,并不比简单的裁剪+(更强的)颜色失真更好。当用相同的增强集训练监督模型时,我们观察到更强的颜色增强不会改善甚至会损害它们的性能。因此,我们的实验表明,无监督对比学习受益于比监督学习更强的(颜色)数据增强。尽管之前的工作已经报道了数据增强对于自我监督学习是有用的(Doersch等人,2015;巴赫曼等人,2019;Hénaff等,2019;Asano等人,2019),我们表明,不能为监督学习带来准确性好处的数据增强仍然可以极大地帮助对比学习。

编码器和头部的架构

无监督对比学习从更大的模型中受益(更多)

  • 图7显示,增加深度和宽度都可以提高性能,这也许并不令人意外。虽然类似的发现也适用于监督学习(He et al, 2016),但我们发现监督模型和在无监督模型上训练的线性分类器之间的差距随着模型规模的增加而缩小,这表明无监督学习从更大的模型中受益比有监督的模型更多。

非线性投影头改善了它前面的层的表示质量

  • 然后我们研究了包含投影头的重要性,即g(h)。图8显示了使用三种不同架构的头部线性评估结果:(1)身份映射;(2)线性投影,如之前几种方法所使用的(Wu et al, 2018);(3)默认的非线性投影,带有一个额外的隐藏层(和ReLU激活),类似于Bachman等人(2019)。我们观察到,非线性投影比线性投影好(+3%),比没有投影好得多(>10%)。当使用投影头时,无论输出尺寸如何,都可以观察到类似的结果。此外,即使使用非线性投影,投影头前的层h仍然比投影头后的层z = g(h)好得多(>10%),这表明投影头前的隐藏层比投影头后的层是更好的表示。

损失函数和批量大小

温度可调的归一化交叉熵损失比其他方法效果更好

  • 我们将NT-Xent损失与其他常用的对比损失函数进行了比较,例如逻辑损失(Mikolov等,2013)和边际损失(Schroff等,2015)。表2给出了目标函数以及损失函数输入的梯度。观察梯度,我们观察到1)’2归一化(即余弦相似度)随着温度有效地加权不同的例子,合适的温度可以帮助模型从硬否定中学习;2)与交叉熵不同,其他目标函数不按其相对硬度来衡量负。因此,必须对这些损失函数应用半硬负挖掘(Schroff et al, 2015):可以使用半硬负项(即在损失边际内且距离最近,但比正示例更远的项)来计算梯度,而不是计算所有损失项的梯度。
  • 为了使比较公平,我们对所有损失函数使用相同的l2归一化,我们调优超参数,并报告它们的最佳结果。表4显示,虽然(半硬)负挖掘有所帮助,但最好的结果仍然比我们默认的NT-Xent损失差得多。
  • 我们接下来测试l2归一化的重要性(即余弦相似度vs点积)和温度τ在我们默认的NT-Xent损失。表5显示,如果没有归一化和适当的温度缩放,性能会明显变差。在没有l2归一化的情况下,对比任务的准确率较高,但在线性评价下,结果的表征较差

对比学习从更大的批量和更长的训练中受益(更多)

  • 图9显示了训练不同epoch数的模型时批量大小的影响。我们发现,当训练周期数较小时(例如100个周期),较大的批处理规模比较小的批处理规模具有显著优势。随着训练步骤/周期的增加,不同批次大小之间的差距减小或消失,前提是批次随机重采样。相比监督学习(Goyal等人,2017),在对比学习中,更大的批大小提供更多的负例,促进收敛(即对于给定的精度需要更少的周期和步骤)。更长的训练时间也提供了更多的反面例子,改善了结果。在附录B.1中,给出了训练步骤更长的结果。

与先进水平的比较

  • 在本小节中,类似于Kolesnikov等人(2019);He等人(2019),我们在3种不同的隐藏层宽度中使用ResNet-50(宽度乘数为1×, 2×和4×)。为了更好的收敛,我们这里的模型训练了1000个epoch。
  • 线性评估。表6将我们的结果与之前的方法进行了比较(Zhuang等,2019;He et al, 2019;Misra & van der Maaten, 2019;Hénaff等,2019;科列斯尼科夫等人,2019;Donahue & Simonyan, 2019;巴赫曼等人,2019;Tian等人,2019)在线性评价设置(见附录B.6)。表1显示了不同方法之间更多的数值比较。与以前需要专门设计架构的方法相比,我们能够使用标准网络获得更好的结果。用我们的ResNet-50 (4×)获得的最佳结果可以与监督预训练的ResNet-50相匹配。
  • Semi-supervised学习。我们遵循Zhai等人(2019)的方法,以类平衡的方式采样1%或10%的标记ILSVRC-12训练数据集(每个类分别为12.8和128张图像)。我们只是简单地在没有正则化的标记数据上微调整个基础网络(见附录B.5)。表7显示了我们的结果与最近方法的比较(Zhai et al, 2019;谢等,2019;Sohn等人,2020;Wu等,2018;Donahue & Simonyan, 2019;Misra & van der Maaten, 2019;Hénaff等,2019)。由于对超参数(包括增强)的密集搜索,(Zhai等人,2019)的监督基线很强。同样,我们的方法在1%和10%的标签上都有了显著的改进。有趣的是,在完整的ImageNet上微调我们预训练的ResNet-50 (2×, 4×)也明显优于从头训练(高达2%,见附录B.2)
  • 迁移学习。我们在线性评估(固定特征提取器)和微调设置中评估了12个自然图像数据集的迁移学习性能。在Kornblith等人(2019)之后,我们对每个模型-数据集组合执行超参数调优,并在验证集上选择最佳超参数。表8显示了ResNet-50 (4×)模型的结果。经过微调后,我们的自监督模型在5个数据集上显著优于监督基线,而监督基线仅在2个数据集上优于监督基线(即宠物和鲜花)。在剩下的5个数据集上,模型在统计上是一致的。完整的实验细节以及标准ResNet-50架构的结果在附录B.8中提供。

结论

  • 在这项工作中,我们提出了一个简单的框架及其实例的对比视觉表征学习。
  • 我们仔细研究了它的组成部分,并展示了不同设计选择的效果。通过结合我们的发现,我们大大改进了以前的自监督、半监督和迁移学习方法。
  • 我们的方法与ImageNet上的标准监督学习的不同之处在于数据增强的选择,网络末端非线性头的使用,以及损失函数。这个简单框架的力量表明,尽管最近人们对自我监督学习的兴趣激增,但它仍然被低估了。

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

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

相关文章

websocket报错集锦-不断更新中

问题1:Failed to construct ‘WebSocket’: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 问题描述 Mixed Content: The page at https://AAAAAA.com was loaded over HTTPS, but attempted to connect to the insecur…

Linux系统下命令行安装MySQL5.7+详细步骤

一起学编程,让生活更随和! 如果你觉得是个同道中人,欢迎关注博主 gzh :【随和的皮蛋桑】。 专注于Java基础、进阶、面试以及计算机基础知识分享🐳。偶尔认知思考、日常水文🐌。 目录1、下载安装包2、检查…

STM32 使用microros与ROS2通信

本文主要介绍如何在STM32中使用microros与ROS2进行通信,在ROS1中标准的库是rosserial,在ROS2中则是microros,目前网上的资料也有一部分了,但是都没有提供完整可验证的demo,本文将根据提供的demo一步步给大家进行演示。1、首先如果你用的不是S…

JUC 之 线程局部变量 ThreadLocal

—— ThreadLocal 基本概念 ThreadLocal 提供线程局部变量。这些变量与正常的变量不同,因为每一个线程在访问 ThreadLocal 实例的时候(通过其get 或者 set 方法)都有自己的、独立初始化的变副本。ThreadLocal实例通常是类中的私有静态字段&…

104-JVM优化

JVM优化为什么要学习JVM优化: 1:深入地理解 Java 这门语言 我们常用的布尔型 Boolean,我们都知道它有两个值,true 和 false,但你们知道其实在运行时,Java 虚拟机是 没有布尔型 Boolean 这种类型的&#x…

@Autowired和@Resource的区别

文章目录1. Autowired和Resource的区别2. 一个接口多个实现类的处理2.1 注入时候报错情况2.2 使用Primary注解处理2.3 使用Qualifer注解处理2.4 根据业务情况动态的决定注入哪个serviceImpl1. Autowired和Resource的区别 Aurowired是根据type来匹配;Resource可以根…

数据结构栈的经典OJ题【leetcode最小栈问题大剖析】【leetcode有效的括号问题大剖析】

目录 0.前言 1.最小栈 1.1 原题展示 1.2 思路分析 1.2.1 场景引入 1.2.2 思路 1.3 代码实现 1.3.1 最小栈的删除 1.3.2 最小栈的插入 1.3.3 获取栈顶元素 1.3.4 获取当前栈的最小值 2. 有效的括号 0.前言 本篇博客已经把两个关于栈的OJ题分块,可以根据目…

【蓝牙mesh】Upper协议层介绍

【蓝牙mesh】Upper协议层介绍 Upper层简介 Upper协议层用于处理网络层以上的功能,包括设备的应用层数据、安全、群组等信息,是实现蓝牙mesh应用功能的关键协议之一。Upper层接收来自Access层的数据或者是Upper层自己生成的Control数据,并且将…

typing库

typing 库 引入 在日常代码编写中,由于python语言特性,不用像go等编译性语言一样,在定义函数时就规范参数和放回值的类型。 def demo(a, b):return "ab" 此时 a 和 b 可以传入任意类型参数毫无疑问,这一特性&#…

漏洞分析: WSO2 API Manager 任意文件上传、远程代码执行漏洞

漏洞描述 某些WSO2产品允许不受限制地上传文件,从而执行远程代码。以WSO2 API Manager 为例,它是一个完全开源的 API 管理平台。它支持API设计,API发布,生命周期管理,应用程序开发,API安全性,速…

【RockerMQ】001-RockerMQ 概述

【RockerMQ】001-RockerMQ 概述 文章目录【RockerMQ】001-RockerMQ 概述一、MQ 概述1、MQ 简介2、MQ 用途限流削峰异步解耦数据收集3、常见 MQ 产品概述对比4、MQ 常见协议二、RocketMQ 概述1、简介2、发展历史一、MQ 概述 1、MQ 简介 MQ,Message Queue&#xff0…

C++设计模式(22)——状态模式

亦称: State 意图 状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 问题 状态模式与有限状态机 的概念紧密相关。 有限状态机。 其主要思想是程序在任意时刻仅可处…

【数据库】数据库的完整性

第五章 数据库完整性 数据库完整性 数据库的完整性是指数据的正确性和相容性 数据的正确性是指数据是符合现实世界语义,反映当前实际状况的数据的相容性是指数据库的同一对象在不同的关系中的数据是符合逻辑的 关系模型中有三类完整性约束:实体完整性…

中创公益|中创算力荣获“2022年度突出贡献爱心企业”

公益是什么?不啻微芒造炬成阳萤火虽微愿为其芒公益是持之以恒的努力,中创于2021年1月成立,同年4月中创就开始了公益活动,并对尖山村贫困儿童进行定期捐助。截至2023年,中创先后7次来到被捐助的贫困儿童家中&#xff0c…

【Git】IDEA整合Git详细步骤 — IDEA如何配置Git忽略文件

目录 一、IDEA整合Git 定位 Git 程序 —》IDEA配置Git程序 初始化本地库—》在idea中初始化项目,将项目纳入git管理 添加到暂存区 提交到本地库 方法一: 右键点击项目---> Git ----> Commit Directory 方法二: 点击绿色图标 √ 切换版本 创建分支 切换分…

chatgpt的原理 第一部分

前言 这两天,ChatGPT模型真可谓称得上是狂拽酷炫D炸天的存在了。一度登上了CSDN热搜,这对科技类话题是非常难的存在。不光是做人工智能、机器学习的人关注,而是大量的各行各业从业人员都来关注这个模型,真可谓空前盛世。 我赶紧把…

无人驾驶路径规划论文简要

A Review of Motion Planning Techniques for Automated Vehicles综述和分类0Motion Planning for Autonomous Driving with a Conformal Spatiotemporal Lattice从unstructured环境向structured环境的拓展,同时还从state lattice拓展到了spatiotemporal lattice从而…

【数据结构】双向链表的接口实现(附图解和源码)

双向链表的接口实现(附图解和源码) 文章目录双向链表的接口实现(附图解和源码)前言一、定义结构体二、接口实现(附图解源码)1.初始化双向链表2.开辟新空间3.尾插数据4.尾删数据5.打印双向链表中数据6.头插数…

含分布式电源的配电网日前两阶段优化调度模型(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…

吃瓜教程笔记—Task04

神经网络 知识点 M-P神经元 模型如图所示:  神经元的工作机理:神经元接收来到n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过…