TaskRes: Task Residual for Tuning Vision-Language Models

news2024/11/15 13:48:30

文章汇总

当前VLMs微调中存在的问题

提示微调的问题

在提示调优中缺乏对先验知识保存的保证(me:即提示微调有可能会丢失预训练模型中的通用知识)。虽然预先训练的文本分支模块(如文本编码器和投影)的权重在提示调优范式中被冻结,但原始的良好学习的分类边界或多或少受到破坏。这是因为输入提示的调优最终会得到一个新的边界,如果没有显式的正则化,这个边界可能会忘记旧的知识

适配器微调的问题

在适配器式调优中,新知识探索的灵活性有限。下游任务中的数据分布往往偏离预训练分布,一些特定于任务或细粒度的视觉概念/表示可能无法被预训练的VLMs很好地学习,例如,从CLIP[55]到卫星图像数据集EuroSAT[20]。因此,需要适当地探索有关下游任务的新知识。我们观察到,适配器式调优可能无法充分探索任务特定的知识,因为适配器的输入严格限于旧的/预训练的特征,如图2 ©所示。无论预训练的特征是否适合任务,适配器的结果都只依赖于它们,这使得适配器式调优对于学习新知识的灵活性有限。

解决办法

对应每个 K K K分类任务,我们有基本分类器表示为 t ∈ R K × D t\in \mathbb{R}^{K\times D} tRK×D。然而,为了在不受先验知识限制的情况下学习特定于任务的知识,我们提出了任务残差,它是一组可调参数 x ∈ R K × D x\in \mathbb{R}^{K\times D} xRK×D(me:应该就是图中黄色那一块),不依赖于基本分类器。我们的任务残差通过因子 α \alpha α 进行缩放(me:用来控制参数作用的),并将数据地添加到基本分类器中,以形成目标任务的新分类器 t ′ t' t,写为

摘要

大规模视觉语言模型(VLMs)在数十亿级数据上进行了预训练,学习了一般的视觉表示和广义的视觉概念。原则上,VLMs的良好知识结构在转移到数据有限的下游任务时应该得到适当的继承。然而,大多数针对VLMs的高效迁移学习(ETL)方法要么破坏先验知识,要么过度偏向先验知识,例如,提示调优(PT)丢弃预训练的基于文本的分类器并构建新的分类器,而适配器式调优(AT)完全依赖于预训练的特征。为了解决这个问题,我们提出了一种新的高效的VLMs调优方法,称为任务残差调优(TaskRes),它直接在基于文本的分类器上执行,并显式地将预训练模型的先验知识和关于目标任务的新知识解耦。具体而言,TaskRes将VLMs的原始分类器权重保持不变,并通过调整一组先验无关参数作为原始参数的残差来获得目标任务的新分类器,从而实现可靠的先验知识保存和灵活的任务特定知识探索。提出的TaskRes简单而有效,在11个基准数据集上显著优于以前的ETL方法(例如PT和AT),同时需要最小的实现努力。我们的代码可在https://github.com/geekyutao/TaskRes上获得

1. 介绍

在过去的十年中,基于深度学习的视觉识别模型[10,19,31,61,64]取得了巨大的成功。这些最先进的模型通常是在大量的图像和离散标签对上进行训练的。离散标签是通过将详细的文本描述(如“American curl cat”)转换为简单的标量来生成的,这极大地简化了损失函数的计算。然而,这也导致了两个明显的限制:(i)丰富的语义在文本描述中未充分利用,并且(ii)训练的模型仅限于识别近集类。

图1所示。Zero-shot CLIP [55], CoOp [79], CLIP- adapter [16], Tip-Adapter-F[77]和我们在ImageNet上的TaskRes的性能比较。

最近的大规模视觉语言模型(VLM)预训练[1,25,36,55,75]通过文本监督学习视觉表征消除了这些限制。例如,在预训练期间,文本和图像通过对比损失被编码并映射到一个统一的空间中[55]。然后,可以使用预训练的文本编码器合成基于文本的图像识别分类器,给出相应的自然语言描述,如图2 (a)所示。这些预训练的VLMs已经证明了在各种下游任务上以零采样的方式具有强大的可移植性。然而,上述模型的有效性在很大程度上依赖于它们的大规模架构和训练数据集。例如,CLIP[55]拥有多达4.28亿个参数,并在4亿个文本图像对上进行了训练,而Flamingo[1]拥有多达800亿个参数,并在惊人的21亿对上进行了训练。这使得在低数据状态下对下游任务进行完全微调模型变得不切实际。

因此,基于预训练VLMs的高效迁移学习(ETL)[16,77 - 79]越来越受欢迎。ETL代表了向下游任务的迁移学习参数和数据高效的方式。ETL的核心有两个方面:(1)适当地继承VLMs良好的知识结构,这种知识结构已经具有可转移性;(ii)在有限的数据下有效地探索特定任务的知识。然而,大多数现有的ETL方法,即提示调优(PT)[78,79]和适配器式调优(AT)[16,77],要么破坏VLMs的先验知识,要么以不适当/不充分的方式学习任务的新知识。例如,CoOp79没有使用预先训练好的基于文本的分类器,而是学习一个连续的提示来合成一个全新的分类器,这不可避免地会导致之前知识的丢失。因此,CoOp在ImageNet上进行1-/2-shot学习时的表现比Zero-shot CLIP差1.03%/0.37%(见图1)。相比之下,CLIP- adapter[16]保留了预训练的分类器,但在学习新任务时过度偏向于先验知识,即将预训练的分类器权重转换为特定于任务的权重,如图2 ©所示。这导致新知识的探索较差,从而降低了图1所示的准确率。

为了更好地在预训练VLMs上进行ETL,我们提出了一种新的高效调优方法,称为任务残差调优(TaskRes),该方法直接在基于文本的分类器上执行,并显式地将预训练模型的旧知识与目标任务的新知识解耦。其基本原理是,解耦使得从VLMs中更好地继承旧知识和更灵活的特定于任务的知识探索,即,在任务独立于旧知识的情况下学习到的知识。具体来说,TaskRes保持原始分类器权重不变,并引入一组与权重无关的先验参数。这些为适应目标任务而调整的附加参数因此被命名为“任务残差”。

为了深入了解TaskRes是如何工作的,我们在11个基准数据集上进行了广泛的实验[79],并对学习任务残差进行了系统的调查。实验结果表明,引入任务残差可以显著提高迁移性能。我们可视化了学习任务残差大小与预训练模型迁移到下游任务的难度之间的相关性,并观察到残差大小随着迁移难度的增加而增加。这表明残差自动适应任务以充分探索新知识,从而在11个不同的数据集上实现了新的最先进的性能。此外,值得注意的是,我们的方法在实现上只需要最小的努力,也就是说,技术上只添加一行代码。我们的贡献总结如下:

•我们首次强调了通过ETL从预训练的VLMs到下游任务的适当知识继承的必要性,揭示了现有调优范式的陷阱,并进行了深入的分析,以表明解耦旧的预训练知识和新的任务特定知识是关键。

•我们提出了一种新的高效调优方法,即任务残差调优(TaskRes),该方法可以更好地继承VLMs的旧知识,并实现更灵活的任务特定知识探索。

•TaskRes使用方便,它需要一些调优参数就可轻松实现。

2. 相关工作

2.1. 视觉语言模型

我们主要回顾了关于语言驱动视觉表征学习(LDVRL)的视觉语言模型(VLMs)的文献[2,9,12,15,18,27,32,34,55,58,62]。LDVRL的核心是将文本(语言)和图像映射到一个公共空间中,以便文本表示可以用于视觉分类。为此,需要分别对文本和图像使用两个编码器,并使用特定的损失函数作为正则化。

早期的研究探索了无监督预训练模型[62]或用于文本嵌入的skip-gram文本建模[15,50,51],而用于视觉编码的稀疏编码和矢量量化[7,62]或Classeme特征[12,66]。对于训练目标,采用MSE[62]、自监督主题概率匹配[18]或多类逻辑损失。然而,这些方法仅限于小数据集[9,27,34]和弱代表性编码骨干[7,62],这极大地阻碍了它们的可移植性。

相比之下,最近的研究[25,39,55]通过利用来自互联网和超级强大的神经网络(例如变形金刚[10,67,68,74,76])的图像-文本对的十亿级数据进行表示学习,从而改进了先前的研究。通过端到端具有对比损失的预训练,大规模VLMs以零样本评估的方式在各种下游任务上表现出显著的可转移性。基于大规模视觉语言预训练强大的迁移能力,我们进一步探索其在高效迁移学习中的潜力。

2.2. 高效迁移学习

在大规模数据集(如ImageNet[8]和WebImageText[55])上预训练神经网络,然后在下游任务上对其进行微调,这是迁移学习的常见步骤[40 - 42,71 - 73]。在这里,我们主要关注预训练VLMs上的高效迁移学习(ETL)。ETL代表参数高效和数据高效的迁移学习,其中少量参数被调优,少量数据被利用。现有的关于ETL的工作可以分为两类:提示调优[46,78,79]和适配器式调优(AT)[16,77]。具体而言,首先探索提示工程[26,60],为下游任务生成适当的离散提示。随后,学习能够更好地适应新任务的连续提示[45,79],表现出更高级的性能。然而,这些方法面临两个问题:(1)需要预先训练好的文本编码器参与整个训练过程,限制了其可扩展性,增加了计算开销;(2)放弃预先训练好的基于文本的分类器而生成新的分类器,导致VLMs的先验知识丢失。

基于AT的方法[16,77]通过使用一次文本编码器生成基于文本的分类器,然后专注于仅适应文本/图像特征来解决上述问题。这种简单的设计可以获得更好的性能,但它严重依赖于先验知识/预训练的特征,导致新知识的探索效果较差。为了解决这个问题,我们提出了一种新的高效调优方法,任务残差调优(TaskRes),通过先验无关的“任务残差”进行更好、更灵活的任务特定知识学习。

2.3. 少样本学习

少样本学习 (FSL)旨在通过少量标记示例使模型适应新任务/类。传统的FSL方法[5,14,17,47,48,59]经常对基类的大量数据进行元学习以获得自适应能力。然而,对基础数据集的学习需求限制了它们的可扩展性。最近的VLM预训练工作[25,55]提供了一种有效的替代方法,它不需要基本数据集。他们表明,预先训练的模型已经可以在许多下游任务中以零射击的方式取得惊人的表现。ETL[16,79]可以进一步提高性能。在这项工作中,我们提出了一种新的ETL方法,用于使VLMs适应下游任务,并评估了其在少量任务中的有效性。

3. 知识准备

我们简要介绍了所采用的VLM,即对比语言图像预训练(CLIP)[55],并概述了VLM上ETL的两种主流方法,即提示调优和适配器式调优。

3.1. 对比语言-图像预训练

CLIP模型[55]旨在通过自然语言监督获得视觉表示。它是在4亿个图像-文本对上进行训练的,其中来自图像编码器的图像特征和来自文本编码器的文本特征使用对比学习损失在统一的嵌入空间内对齐,使CLIP能够有效地捕获广泛的视觉概念并学习一般的视觉表示。在测试时,CLIP可以将查询图像分类为 K K K 个可能的类别。这是通过计算从带有投影的图像编码器获得的查询图像嵌入z与通过将文本(例如,“a photo of a {class}”)输入到文本分支中获得的文本嵌入 { t i } i = 1 K \{\textbf{t}_i\}^K_{i=1} {ti}i=1K 之间的余弦相似度来实现的。第$ i $类的预测概率表示为

s i m ( ⋅ , ⋅ ) sim(\cdot,\cdot) sim(,)表示余弦相似度, τ \tau τ为CLIP的学习温度。

3.2. 回顾以前的调优范式

受到ETL方法在自然语言处理中的成功的启发,例如,提示调优[33,38]和适配器[23],最近的进展(例如,CoOp[79]和CLIP-Adapter[16])将他们的想法借用到VLMs上的ETL。

CoOp首次向VLMs引入了提示调优。而不是使用固定的文本提示上下文,如“a photo of a”,CoOp提出使用 M M M 个可学习的上下文向量 { v m } m = 1 M \{\textbf{v}_m\}^M_{m=1} {vm}m=1M 作为任务特定模板。给文本编码器的提示符变成了 { v 1 , v 2 , … , v M , c i } \{\textbf{v}_1,\textbf{v}_2,\ldots,\textbf{v}_M,\textbf{c}_i\} {v1,v2,,vM,ci} ;其中 c i \textbf{c}_i ci 为类 i i i 的嵌入。在整个训练过程中,CoOp保持预训练VLM的参数不变,只调整可学习向量 { v m } m = 1 M \{\textbf{v}_m\}^M_{m=1} {vm}m=1M

适配器式调优引入了带有可调参数的附加模块 ϕ ω ( ⋅ ) \phi_{\omega}(\cdot) ϕω() 到预训练的模型,将预训练的特征 f \textbf{f} f 转换为新的特征 f ′ \textbf{f}' f。一般来说,适配器式调优可以表示为

其中 α \alpha α 是比例因子。在CLIP-Adapter中,适配器模块 ϕ ω \phi_{\omega} ϕω 由两个线性变换层和它们之间的ReLU激活组成。CLIP- adapter研究了视觉适配器和文本适配器,即分别将适配器模块应用于CLIP的图像和文本分支,并显示它们具有相当的性能。在下游任务的训练期间,适配器样式的方法只调整它们的适配器模块。

4.方法

在本节中,我们首先确定VLMs上现有ETL范例的缺陷。这些缺陷促使我们为VLMs提出一种新的ETL方法,称为任务残差调优(TaskRes)。提出的TaskRes很简单,但可以有效地避免陷阱。

4.1. VLMs上现有ETL范式的缺陷

我们重新思考了从预训练的VLMs中获得的先验知识的使用,以及关于下游任务的新知识的获取。一方面,使用大量数据训练的大规模VLMs学习了广泛的视觉概念,这些概念对于广泛的下游视觉任务是通用的,从而实现了同质化[3]。在执行转移时,应妥善保存先前的知识。另一方面,尽管在预训练中使用了大量数据,但在下游任务中不可避免地存在领域转移或不确定概念。针对下游任务的新知识应该适当地补充到先前的知识中。然而,现有的ETL范例并没有很好地考虑到上述原则,并且存在以下两个问题。

缺陷1:在提示调优中缺乏对先验知识保存的保证虽然预先训练的文本分支模块(如文本编码器和投影)的权重在提示调优范式中被冻结,但原始的良好学习的分类边界或多或少受到破坏。这是因为输入提示的调优最终会得到一个新的边界,如果没有显式的正则化,这个边界可能会忘记旧的知识。因此,提示调优的性能是有限的。例如,在ImageNet上进行1/2shot学习时,CoOp[79]的性能不如Zero-shot CLIP,如图1所示。

缺陷2:在适配器式调优中,新知识探索的灵活性有限。下游任务中的数据分布往往偏离预训练分布,一些特定于任务或细粒度的视觉概念/表示可能无法被预训练的VLMs很好地学习,例如,从CLIP[55]到卫星图像数据集EuroSAT[20]。因此,需要适当地探索有关下游任务的新知识。我们观察到,适配器式调优可能无法充分探索任务特定的知识,因为适配器的输入严格限于旧的/预训练的特征,如图2 ©所示。无论预训练的特征是否适合任务,适配器的结果都只依赖于它们,这使得适配器式调优对于学习新知识的灵活性有限。

4.2. 任务残留调优

鉴于现有的ETL范例面临上述问题,我们提出任务残差调优(TaskRes)以一种简单的方式解决这些问题。TaskRes显式地将旧知识的维护与预训练的vlm分离开来,并将特定于任务的知识的学习与不过度偏向预训练的特征分离开来。我们在下面详细说明我们的任务。

固定基分类器。如图2 (d)所示,我们的TaskRes直接在基于文本的分类器(即文本嵌入)上执行调优。基分类器是预先训练的视觉语言模型的文本嵌入,例如CLIP。我们将基本分类器表示为 t ∈ R K × D t\in \mathbb{R}^{K\times D} tRK×D,其中 K K K 是类别的数量, D D D 是特征维度。我们保持基本分类器的权重冻结,以显式地防止基本分类器被损坏。

先验无关任务残差。为了在不受先验知识限制的情况下学习特定于任务的知识,我们提出了任务残差,它是一组可调参数 x ∈ R K × D x\in \mathbb{R}^{K\times D} xRK×D,不依赖于基本分类器。我们的任务残差通过因子 α \alpha α 进行缩放,并将元素明智地添加到基本分类器中,以形成目标任务的新分类器 t ′ t' t,写为

调优下游任务。在调优过程中,我们只调优先验无关的任务残差,同时保持基分类器(连同图像分支)的固定,从而实现可靠的旧知识保存和灵活的新知识知识的探索。给定一幅图像,CLIP的固定图像分支提取其嵌入向量 z ∈ R D z\in \mathbb{R}^{ D} zRD,然后计算 i i i 类的预测概率为

基于预测概率,下游任务损失(如交叉熵损失)仅通过标准反向传播更新任务残差。

5. 实验

表2。消融研究了三个主要组成部分的各种组合:基础分类器 t t t、适配器模块 ϕ ω ( ⋅ ) \phi_{\omega}(\cdot) ϕω() 和我们的“任务残差” x x x,用于构建目标分类器 t ′ t' t。实验在ImageNet上进行。

6. 结论、局限性及未来工作

在这项工作中,我们提出了一种调优VLMs的新方法,即TaskRes。提出的TaskRes通过显式地将分类器解耦为两个关键部分,在VLMs上执行有效的迁移学习(ETL):无损基分类器具有丰富的先验知识和独立于基分类器的任务残差,可以更好地探索特定任务的知识。有趣的是,学习任务残差的大小与将预训练的vlm转移到目标下游任务的难度高度相关。这可能会启发社区从一个新的角度来考虑ETL,例如,为ETL建模“任务到任务的转移难度”。大量的实验已经证明了TaskRes的有效性,尽管它很简单。

然而,我们的方法有一些局限性。例如,我们的方法在两个数据集上遇到负迁移,即OxfordPets (1-shot)和Food101 (1-/2-/4-/8shot)。我们推测这种情况发生在两个条件下:(i)下游任务具有较高的相对转移难度,如图4所示;(ii) Zero-shot CLIP已经在它们上达到了相当的精度。此外,本研究的迁移难度评估是启发式的。

随着基础模型的快速发展[3],建立精确可靠的指标来评估预训练基础模型向下游任务的转移难度变得越来越重要。需要对转移难度进行全面的研究,包括分布分析[35]。此外,我们可以将迁移难度扩展到概念层面,并通过探索在特定数据集上训练的CLIP模型来研究性能与视觉概念出现频率之间的相关性,例如在YFCC15M上训练的SLIP[52][56,65]。我们将在今后的工作中对此进行探讨。

参考资料

论文下载(CVPR 2023)

https://arxiv.org/abs/2211.10277

代码地址

https://github.com/geekyutao/TaskRes

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

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

相关文章

图文深入理解SQL语句的执行过程

List item 本文将深入介绍SQL语句的执行过程。 一.在RDBMS(关系型DB)中,看似很简单的一条已写入DB内存的SQL语句执行过程却非常复杂,也就是说,你执行了一条诸如select count(*) where id 001 from table_name的非常简…

【Transformers基础入门篇4】基础组件之Model

文章目录 一、Model简介1.1 Transformer1.2 注意力机制1.3 模型类型 二、Model Head2.1 什么是 Model Head2.2 Transformers中的Model Head 三、Model基本使用方法3.0 模型下载-浏览器下载3.1 模型加载与保存3.2 配置加载参数3.3 加载config文件3.2 模型调用3.2.1 带ModelHead的…

【PAM】Linux登录认证限制

PAM(Pluggable Authentication Modules,可插拔认证模块)是一种灵活的认证框架,用于在 Linux 和其他类 Unix 系统上管理用户的身份验证。PAM 允许系统管理员通过配置不同的认证模块来定制应用程序和服务的认证方式,而不…

软件设计师:01计算机组成与结构

文章目录 一、校验码1.奇偶校验码2.海明码3.循环冗余检验码 二、原码反码补码移码三、浮点数表示法1.浮点数相加时 四、寻址方式五、CPU1.访问速度2.cpu的组成 六、RISC和CISC&#xff08;<font color red>只用记住不同就可以&#xff09;七、冗余技术1.结构冗余2.信息冗…

HyperWorks的实体几何创建与六面体网格剖分

创建和编辑实体几何 在 HyperMesh 有限元前处理环境中&#xff0c;有许多操作是针对“实体几何”的&#xff0c;例如创建六面体网格。在创建实体网格的工作中&#xff0c;我们既可以使用闭合曲面创建实体网格&#xff0c;也可以使用完整的实体几何创建实体网格。与闭合曲面相比…

【rabbitmq-server】安装使用介绍

在 1050a 系统下安装 rabbitmq-server 服务以及基本配置;【注】:改方案用于A版统信服务器操作系统 文章目录 功能概述功能介绍一、安装软件包二、启动服务三、验证四、基本配置功能概述 RabbitMQ 是AMQP的实现,高性能的企业消息的新标准。RabbitMQ服务器是一个强大和可扩展…

截取递增数-第15届蓝桥省赛Scratch中级组真题第6题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第191讲。 如果想持续关注Scratch蓝桥真题解读&#xff0c;可以点击《Scratch蓝桥杯历年真题》并订阅合集&#xff0c;…

【c数据结构】OJ练习篇 帮你更深层次理解链表!(相交链表、相交链表、环形链表、环形链表之寻找环形入口点、判断链表是否是回文结构、 随机链表的复制)

目录 一. 相交链表 二. 环形链表 三. 环形链表之寻找环形入口点 四. 判断链表是否是回文结构 五. 随机链表的复制 一. 相交链表 最简单粗暴的思路&#xff0c;遍历两个链表&#xff0c;分别寻找是否有相同的对应的结点。 我们对两个链表的每个对应的节点进行判断比较&…

力扣 209.长度最小的子数组

一、长度最小的子数组 二、解题思路 采用滑动窗口的思路&#xff0c;详细见代码。 三、代码 class Solution {public int minSubArrayLen(int target, int[] nums) {int n nums.length, left 0, right 0, sum 0;int ans n 1; for (right 0; right < n; right ) { …

数通。。。

通信&#xff1a;需要介质才能通信电话离信号塔&#xff08;基站&#xff09;越远&#xff0c;信号越弱。信号在基站之间传递。你离路由器越远&#xff0c;信号越差。一个意思 比如想传一张图片&#xff0c;这张图片就是数据载荷 网关&#xff0c;分割两个网络。路由器可以是网…

Chat2VIS: Generating Data Visualizations via Natural Language

Chat2VIS:通过使用ChatGPT, Codex和GPT-3大型语言模型的自然语言生成数据可视化 梅西大学数学与计算科学学院&#xff0c;新西兰奥克兰 IEEE Access 1 Abstract 数据可视化领域一直致力于设计直接从自然语言文本生成可视化的解决方案。自然语言接口 (NLI) 的研究为这些技术的…

巴黎嫩事件对数据信息安全的影响及必要措施

2024年9月17日&#xff0c;黎巴嫩首都贝鲁特发生了多起小型无线电通信设备爆炸事件&#xff0c;导致伊朗驻黎巴嫩大使受轻伤。这一事件不仅引发了对安全的广泛关注&#xff0c;也对数据信息安全提出了新的挑战。 王工 18913263502 对数据信息安全的影响&#xff1a; 数据泄露风…

MySQL慢查询优化指南

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 当遇到慢查询问题时&#xff0c;不仅影响服务效率&#xff0c;还可能成为系统瓶颈。作为一位软件工程师&#xff0c;掌握MySQL慢查询优化技巧至关重要。今天&#xff0c;我们就来一场“数据库加速之旅…

Thinkphp(TP)

1.远程命令执行 /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami 2.远程代码执行 /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[1][]…

Java面向对象——内部类(成员内部类、静态内部类、局部内部类、匿名内部类,完整详解附有代码+案例)

文章目录 内部类17.1概述17.2成员内部类17.2.1 获取成员内部类对象17.2.2 成员内部类内存图 17.3静态内部类17.4局部内部类17.5匿名内部类17.5.1概述 内部类 17.1概述 写在一个类里面的类叫内部类,即 在一个类的里面再定义一个类。 如&#xff0c;A类的里面的定义B类&#x…

微信支付商户号注册流程

目录 一、官方指引二、申请规则三、申请流程1.提交资料2.签约协议3.绑定场景 四、微信支付商户登录入口 一、官方指引 https://kf.qq.com/faq/210423UrIRB7210423by6fQn.html 二、申请规则 1、微信支付商家仅面向企业、个体工商户、政府及事业单位、民办非企业、社会团体、基…

java sdk下载,解决下载了java但是编译不了

直接搜Java得到的网站使用不了的 应该只是个功能包或者版本太低用不了 得去oracle公司搜java这个产品去下载

Java语言程序设计基础篇_编程练习题**18.34 (游戏:八皇后问题)

目录 题目&#xff1a;**18.34 (游戏:八皇后问题) 代码示例 代码解析 输出结果 使用文件 题目&#xff1a;**18.34 (游戏:八皇后问题) 八皇后问题是要找到一个解决方案&#xff0c;将一个皇后棋子放到棋盘上的每行中&#xff0c;并且两个皇后棋子之间不能相互攻击。编写个…

Llama 3.1 技术研究报告-2

3.3 基础设施、扩展性和效率 我们描述了⽀持Llama 3 405B⼤规模预训练的硬件和基础设施&#xff0c;并讨论了⼏项优化措施&#xff0c;这些措施提⾼了训练效率。 3.3.1 训练基础设施 Llama 1和2模型在Meta的AI研究超级集群&#xff08;Lee和Sengupta&#xff0c;2022&#x…

模型融合创新性Max!5种模型融合方法刷新SOTA!发顶会必看!

近年来&#xff0c;关于模型融合的研究逐渐火热&#xff0c;出现了很多效果出众的成果。模型融合&#xff08;Model Merging&#xff09;技术&#xff0c;即利用现有模型的参数、架构和特性&#xff0c;巧妙结合成一个新的、功能更强大的模型&#xff0c;这不仅减少了从头训练大…