人工智能顶会CVPR2022《革新AI预训练:探索KDEP及其在知识蒸馏中的破局之道》论文解读

这里写目录标题

  • 1.引言
    • KDEP的核心概念:
    • 与传统知识蒸馏的区别:
  • 2.KDEP方法
    • KDEP的基本设置:
    • KDEP的目标:
    • 非参数方法在特征尺寸对齐中的作用
      • 非参数对齐的工作原理:
        • **SVD的工作原理**:
        • PTS的基本思想:
  • 3.选择合适的教师模型
    • 教师模型的性能水平:
    • 教师模型的数据多样性:
    • 架构和训练方法的差异:
    • 结论:
  • 4.总结
    • 主要贡献:
    • 特点:
    • KDEP的局限性:
    • 对未来研究的启示:

1.引言

大规模预训练在计算机视觉任务中的重要性主要体现在以下几个方面:

  1. 提升模型性能: 随着大型数据集的出现和发展,大规模预训练已成为提升计算机视觉模型性能的关键策略。通过在如ImageNet这样的大型数据集上进行预训练,模型能够学习到丰富的特征表示,这些特征对于各种下游视觉任务都是非常有用的。

  2. 数据稀缺时的适应性: 对于数据稀缺的下游任务,预训练模型尤其重要。当下游任务的数据量有限时,利用预训练模型可以显著提高性能。这是因为预训练模型已经学习了从大规模数据集中提取特征的能力,可以有效利用这些知识来处理新的、数据量较小的任务。

  3. 效率和实用性: 大规模预训练使模型在应用于具体任务之前就已经具备了处理复杂视觉信息的基本能力。这种方法比从头开始训练模型更高效,因为预训练模型已经掌握了许多通用的视觉概念。

  4. 提高模型的泛化能力: 在大规模数据集上进行预训练有助于提高模型的泛化能力。这是因为大型数据集通常包含多样化的样本,这些样本可以帮助模型学习到更普遍适用的特征。

  5. 促进新方法和技术的发展: 大规模预训练的需求促进了新的模型架构和训练技术的发展,推动了计算机视觉领域的创新。

在论文 “Knowledge Distillation as Efficient Pre-training” 中,作者通过提出的KDEP方法,旨在解决大规模预训练过程中的一些挑战,如数据量和预训练时间的要求,同时保持预训练模型的效益。这表明,尽管大规模预训练非常重要,但也存在优化和提高效率的空间。

KDEP的核心概念:

  1. 高效的特征传递: KDEP旨在高效地将已有的预训练模型(教师模型)中学习到的特征表示传递给新的学生模型,以便用于未来的下游任务。

  2. 特征基准蒸馏: 与传统知识蒸馏方法不同,KDEP专注于特征而非输出层(logits)的蒸馏。这是因为输出层通常在转移到下游任务时被丢弃,而特征层的信息对于学生模型学习通用特征更为重要。

  3. 非参数特征维度对齐: KDEP采用非参数方法对教师和学生模型的特征维度进行对齐,例如通过奇异值分解(SVD)压缩特征,这有助于有效地转移知识。

  4. 数据和训练效率: KDEP强调在少量数据和更短的训练时间下实现与传统监督预训练相媲美的性能,提高了数据效率和训练效率。

与传统知识蒸馏的区别:

  1. 蒸馏的焦点不同: 传统知识蒸馏通常集中在蒸馏模型的输出层(logits),而KDEP专注于特征层的蒸馏。

  2. 用途不同: 传统知识蒸馏主要用于模型压缩和加速,即将大模型的知识转移到小模型上。相比之下,KDEP用于高效的模型预训练,目的是提高学生模型在各种下游任务上的泛化能力。

  3. 训练数据需求: KDEP可以在较少的数据上进行有效训练,而传统的知识蒸馏可能需要更多的数据来确保教师模型能够有效地传递知识。

  4. 特征对齐方法: KDEP采用非参数方法对特征维度进行对齐,这与传统方法中常用的参数化对齐方法不同。

总体来说,KDEP是一种旨在提高预训练效率和效果的方法,它通过特征层的知识蒸馏,而非输出层的蒸馏,来提高学生模型的泛化能力和适应性。

2.KDEP方法

KDEP的基本设置:

  1. 教师模型与学生模型:

    • 教师模型(Ft):这是一个已经在大规模数据集(如ImageNet-1K)上预训练的模型,拥有丰富和有效的特征表示能力。
    • 学生模型(Fs):这是一个新模型,目的是通过从教师模型学习,以便更好地在各种下游任务上表现。
  2. 无标签数据集(Du):

    • 学生模型的训练不依赖于标注数据。在KDEP中,使用的无标签数据集的规模可以比教师模型原先训练使用的数据集小得多。
  3. 特征表示学习:

    • KDEP集中于学生模型学习特征表示,而非针对特定任务的输出(如分类标签)。
  4. 训练目标:

    • KDEP的训练目标是最小化教师模型和学生模型输出特征之间的差异。这通常通过L2损失函数来实现。

    具体来说,公式如下:

    1 N u ∑ i = 1 N u L ( F t ( x i u ) , F s ( x i u ) ) \frac {1}{N_u} \sum _{i=1}^{N_u}\mathcal {L}(F^t(x^u_i), F^s(x^u_i)) Nu1i=1NuL(Ft(xiu),Fs(xiu))

    这个公式的意义和组成部分解释如下:

    • N u N_u Nu: 这是无标签数据集中样本的总数。KDEP方法不依赖于标注数据,因此这里使用的是无标签数据集。

    • F t ( x i u ) F^t(x^u_i) Ft(xiu): 这表示教师模型(Ft)对第i个无标签样本( x i u x^u_i xiu)的输出特征。

    • F s ( x i u ) F^s(x^u_i) Fs(xiu): 这表示学生模型(Fs)对相同无标签样本( x i u x^u_i xiu)的输出特征。

    • L ( F t ( x i u ) , F s ( x i u ) ) \mathcal {L}(F^t(x^u_i), F^s(x^u_i)) L(Ft(xiu),Fs(xiu)): 这是损失函数,用于衡量教师模型和学生模型输出特征之间的差异。在KDEP中,通常使用L2损失函数来计算这一差异。

    • 1 N u ∑ i = 1 N u \frac {1}{N_u} \sum _{i=1}^{N_u} Nu1i=1Nu: 这部分表示对所有无标签样本的损失进行平均,得到整个数据集上的平均损失。

    总体而言,这个公式定义了KDEP训练的目标,即最小化教师模型和学生模型在无标签数据集上输出特征之间的差异。通过这种方式,KDEP旨在高效地将教师模型的知识和特征表示传递给学生模型,以便更好地在各种下游任务上表现。

KDEP的目标:

  1. 高效的特征传递:

    • 将教师模型在大规模数据集上学到的知识和特征有效地传递给学生模型,使其能够更好地处理各种下游任务。
  2. 克服特征维度不匹配:

    • 解决教师模型和学生模型之间特征维度不匹配的问题。由于两个模型可能具有不同的架构,它们的特征表示可能具有不同的维度。
  3. 优化数据和训练效率:

    • 实现在使用更少的数据和更短的训练时间情况下,获得与传统监督预训练相媲美的模型性能。这是通过提高知识蒸馏的效率来实现的。
  4. 提高模型的泛化能力:

    • 通过从教师模型学习通用特征表示,增强学生模型在各种下游任务上的泛化能力和适应性。

非参数方法在特征尺寸对齐中的作用

在论文 “Knowledge Distillation as Efficient Pre-training” 中,提到的非参数对齐方法是指在知识蒸馏(Knowledge Distillation,KD)过程中对教师模型和学生模型的特征维度进行对齐的一种方法,这种对齐不依赖于任何额外的可学习参数。这与传统的参数化方法(如使用1×1卷积层)相比,非参数方法直接处理特征本身,而不是通过学习新的参数来调整特征。

非参数对齐的工作原理:

  1. 特征维度的不匹配问题:

    • 在知识蒸馏中,由于教师模型和学生模型可能具有不同的架构,它们生成的特征表示的维度可能不同,这导致直接比较和转移特征变得困难。
  2. 奇异值分解(SVD)的应用:

    • 为了解决特征维度不匹配的问题,论文中提出使用奇异值分解(Singular Value Decomposition, SVD)来对齐特征维度。SVD是一种线性代数技术,能够将矩阵分解为几个独立分量的乘积,这对于提取和压缩矩阵中的关键信息非常有效。
  3. 压缩和扩展特征:

    • 通过SVD,可以将教师模型的特征表示压缩到与学生模型特征维度一致的级别。这样做可以减少信息的丢失,同时确保两个模型的特征在空间上是可比较的。
  4. 保持信息完整性:

    • 使用SVD进行特征压缩时,重点是在最小化信息丢失的同时实现维度对齐。这确保了在蒸馏过程中,尽可能多的有用信息被传递给学生模型。
  5. 解决特征优化问题:

    • 论文中还提到,使用SVD后的特征对学生模型的优化过程可能存在困难。为了解决这一问题,论文引入了一种转换模块,如功率温度缩放(Power Temperature Scaling, PTS),来调整特征值的分布,使其更适合深度卷积神经网络的训练。

总体而言,非参数对齐方法通过直接处理特征本身,而不是通过增加额外的可学习参数,来解决教师模型和学生模型之间的特征维度不匹配问题。这种方法在知识蒸馏中尤为有效,因为它允许更直接和有效率的特征传递,同时减少了模型训练的复杂性。

SVD的工作原理

奇异值分解(Singular Value Decomposition,简称SVD)是一种在线性代数中广泛使用的数学技术,常用于数据降维、信号处理、统计学等领域。SVD的工作原理可以简要概述如下:

基本概念:

  1. 矩阵分解: SVD涉及将任意的矩阵分解为三个特定的矩阵的乘积,这些矩阵分别代表了原始矩阵的不同属性。

  2. 组成部分:

    • U矩阵(左奇异向量): 正方形且正交的矩阵,包含了原始矩阵行空间的基。
    • Σ矩阵(奇异值): 对角矩阵,其对角线上的元素是非负的奇异值,表示数据的强度或重要性。奇异值按大小排列,最大的奇异值代表最重要的特征。
    • V*矩阵(右奇异向量的共轭转置): 包含了原始矩阵列空间的基。

工作原理:

假设有一个矩阵A,SVD将其分解为U, Σ, V*:

A = U Σ V ∗ A = U \Sigma V^* A=UΣV

  1. 提取特征信息:

    • SVD通过分解矩阵A,提取出了其最重要的特征。这些特征包含在U和V*矩阵中,而Σ矩阵中的奇异值量化了这些特征的重要性。
  2. 降维:

    • 在许多应用中,如图像处理或推荐系统,通常不需要所有的奇异值。可以选择前k个最大的奇异值及其对应的向量来近似原始矩阵,这实现了数据的有效压缩。
  3. 数据压缩和噪声减少:

    • 由于重要特征通常与较大的奇异值相关联,保留这些特征并忽略较小的奇异值可以去除噪声和冗余信息,从而实现数据的压缩。
  4. 应用场景:

    • 在图像处理中,可以用SVD来压缩图像,保留图像的主要特征,同时减少存储空间。
    • 在推荐系统中,SVD可以帮助提取用户和物品的潜在特征,从而进行有效的推荐。

在知识蒸馏的上下文中,如KDEP方法中,SVD用于处理教师模型和学生模型之间的特征维度不匹配问题。通过SVD,教师模型的特征被压缩到与学生模型特征维度一致的水平,从而允许两个模型的特征被有效比较和传递。

PTS的基本思想:
  1. 标准差比率(Std Ratio)问题:

    • 经过SVD处理后,特征的标准差(Std)在不同通道间可能会有很大的差异。这个标准差比率问题可能导致在训练过程中特征通道的重要性被不均匀地加权,从而影响学习效果。
  2. 保持相对量级:

    • PTS旨在减小不同特征通道间的标准差比率,同时保持原始特征值的相对量级不变。这有助于保留原始特征中的重要信息,同时使特征更适合于深度学习模型的优化。

PTS的具体实现:

PTS函数定义如下:

PTS ( f ) = sign ( f ) ∣ f T ∣ 1 n \text{PTS}(f) = \text{sign}(f) \left| \frac{f}{T} \right|^{\frac{1}{n}} PTS(f)=sign(f) Tf n1

其中:

  • ( f ):输入的特征值。
  • ( T ):温度参数,用于控制值的缩放程度。
  • ( n ):指数参数,用于调整特征值的缩放。

工作原理解释:

  • 温度参数(T): 控制特征值的缩放范围,类似于在softmax函数中用于调整输出分布的温度参数。
  • 指数变换: 通过应用幂函数(指数为 1 n \frac{1}{n} n1),PTS函数能够有效地压缩大值和扩展小值,同时保持它们的符号和相对大小不变。这有助于在减少标准差比率的同时,保持原始特征的相对重要性。
  • 符号函数(sign): 保证处理后的特征值保持原始的符号,这对于保持特征的方向信息是重要的。

应用效果:

通过应用PTS,可以使SVD处理后的特征在不同通道间的标准差更加接近,同时保留了原始特征的关键信息。这在知识蒸馏的上下文中尤为重要,因为它允许学生模型更有效地从教师模型中学习特征表示。

3.选择合适的教师模型

在论文 “Knowledge Distillation as Efficient Pre-training” 中,不同类型的教师模型对KDEP(Knowledge Distillation as Efficient Pre-training)性能的影响是一个值得关注的点。教师模型的选择会直接影响到学生模型在KDEP框架下的学习效果。以下是不同类型教师模型对KDEP性能影响的主要方面:

教师模型的性能水平:

更高性能的教师模型不一定更好:

  • 研究发现,更高性能(例如在ImageNet上有更高精度)的教师模型并不总是导致更好的KDEP性能。这表明,仅依靠教师模型的基准测试性能来选择可能不是最佳策略。

特征分布的紧凑性:

  • 教师模型的特征分布紧凑性与KDEP的性能之间存在相关性。具有更分散特征分布的教师模型可能在蒸馏过程中表现更好,因为它们提供了更丰富和多样化的信息。

教师模型的数据多样性:

使用多数据集预训练的教师模型:

  • 在不同数据集上预训练的教师模型可能会影响蒸馏过程。例如,使用从ImageNet-22K、COCO等多个数据集预训练的教师模型可能会提供更多样化的知识。

数据类型和上下文:

  • 教师模型处理的数据类型(例如对象级或场景级)也会影响KDEP的效果。不同类型的数据可能会导致教师模型学习到不同的特征表示。

架构和训练方法的差异:

不同架构的教师模型:

  • 教师模型的架构(如卷积神经网络与变换器模型)可能会影响其能够提供的知识类型和深度。

自监督和半监督预训练:

  • 不同的预训练方法(如自监督和半监督学习)可能导致教师模型具有不同的特征表达能力,从而影响其作为KDEP教师的有效性。

结论:

选择合适的教师模型对于KDEP的成功至关重要。理想的教师模型应该能够提供丰富、多样化且适合于目标任务的知识。此外,教师模型的特征表示方式和训练背景同样重要,这需要在实际应用KDEP时仔细考虑和评估。

4.总结

KDEP(Knowledge Distillation as Efficient Pre-training)在论文 “Knowledge Distillation as Efficient Pre-training” 中提出,主要聚焦于通过知识蒸馏实现高效的模型预训练。以下是KDEP的主要贡献和特点总结:

主要贡献:

创新的预训练策略:

  • KDEP提出了一种新的预训练方法,通过知识蒸馏(KD)从已有的预训练模型(教师模型)高效地传递特征知识到新的模型(学生模型)。

高效的数据和时间使用:

  • KDEP能在使用显著少量的数据和更短的训练时间下,达到与传统监督预训练相似的性能水平,显著提高了数据和时间效率。

特征层面的知识蒸馏:

  • 与传统KD方法不同,KDEP专注于特征层的知识蒸馏,而非输出层(logits)的蒸馏,使得学生模型能够学习到更通用的特征表示。

特点:

特征维度对齐:

  • KDEP采用非参数方法(如SVD)来解决教师和学生模型之间特征维度的不匹配问题,从而实现更有效的知识传递。

改善特征学习过程:

  • 通过功率温度缩放(PTS)方法,KDEP改善了SVD处理后的特征的学习效率和优化过程,使学生模型能够更有效地从教师模型中学习。

提高泛化能力:

  • KDEP通过从教师模型学习丰富的特征表示,提高了学生模型在多种下游任务上的泛化能力。

应用的灵活性:

  • KDEP方法适用于多种架构的模型,包括在不同数据集上预训练的模型,展示了较高的灵活性和适用性。

实验验证:

  • 通过一系列实验,论文验证了KDEP在多个下游任务上的有效性,包括图像分类、语义分割和目标检测。

总结来说,KDEP的主要贡献在于它提供了一种新颖的、高效的模型预训练方法,通过特征层面的知识蒸馏,有效提高了数据和时间效率,同时改善了学生模型的泛化能力和特征学习过程。

KDEP(Knowledge Distillation as Efficient Pre-training)作为一种创新的预训练方法,虽然在多个方面表现出显著优势,但也存在一些局限性。同时,它对未来研究提供了重要的启示。以下是KDEP局限性的讨论以及它为未来研究带来的启示:

KDEP的局限性:

对教师模型的依赖:

  • KDEP的性能在很大程度上依赖于教师模型的质量。如果教师模型的特征表示不够丰富或者不适用于特定的下游任务,那么蒸馏过程可能不会带来预期的效果。

特征对齐的挑战:

  • 尽管KDEP采用非参数方法(如SVD)来对齐特征,但在某些情况下,这种对齐可能仍然存在挑战,特别是当教师和学生模型的架构差异很大时。

泛化能力的验证:

  • KDEP在提高学生模型的泛化能力方面显示出潜力,但这需要在更广泛的任务和数据集上进行验证,以确保其效果的普遍性。

计算复杂性:

  • 虽然KDEP在数据使用上更高效,但其计算过程(特别是SVD和PTS的应用)可能仍然具有一定的计算复杂性。

对未来研究的启示:

优化教师模型选择:

  • KDEP的研究提示未来可以进一步探索如何选择或优化教师模型,以提高知识蒸馏的效率和效果。

改进特征对齐技术:

  • 对特征维度对齐方法的改进可以是未来研究的重点,尤其是在处理架构差异性较大的模型时。

泛化能力的深入研究:

  • 未来研究可以深入探讨KDEP对不同类型任务和不同数据集的泛化能力,以更全面地验证其适用性。

计算效率的优化:

  • 虽然KDEP在数据效率上有优势,但提高其计算效率仍然是未来研究可能关注的领域。

特征表示学习的理论研究:

  • KDEP提供了一个有趣的视角来探讨特征表示的学习和转移,这可能激发未来在理论和方法上的进一步研究。

总的来说,KDEP提供了一种高效的预训练策略,但其对教师模型的依赖和特征对齐的挑战表明了改进的空间。同时,KDEP为未来在知识蒸馏和预训练领域的研究提供了有价值的启示。

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

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

相关文章

如何在 TypeScript 中遍历 Enum 的两种方案

背景 TypeScript 中有一个 JavaScript 中没有的声明关键字,即 enum ,在 TypeScript 项目开发过程中,我发现使用枚举enum的概率是极高的。枚举是一种特殊的数据类型,它允许开发者定义一个静态变量集合。枚举类型帮助开发者清晰的预设集合中的…

HarmonyOS4.0系统性深入开发04UIAbility组件详解(下)

UIAbility组件间交互(设备内) UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,该UIAbility可以是应用内的其他UIAbility,也可以是其他应用的UIAbility(例如启…

DBeaver Community(社区版)下载及安装自用版

DBeaver Community(社区版)下载及安装自用版 数据库管理工具好用的都收费,收费的都好用。 DBeaver Community(社区版)免费,功能够用,性能可以,推荐。商业版的强大,收费&a…

网络知识点之-MPLS VPN

随着网络经济的发展,企业对于自身网络的建设提出了越来越高的要求,主要表现在网络的灵活性、经济性、扩展性等方面。在这样的背景下,VPN以其独有的优势赢得了越来越多企业的青睐。利用公共网络来构建的私有专用网络称为虚拟私有网络&#xff…

leetcode 面试题 17.19. 消失的两个数字 (hard)(优质解法)

链接&#xff1a;面试题 17.19. 消失的两个数字 代码&#xff1a; class Solution {public int[] missingTwo(int[] nums) {int lengthnums.length;int tmp0;//将完整数据以及 nums 中的数据都进行异或&#xff0c;得到的就是缺失的两个数字 a^b 的结果for(int i1;i<length…

vue3项目 - 使用 pnpm 包管理器来创建项目

创建项目 npm install -g pnpm pnpm create vue 输入项目名称、包名称、选择要安装的依赖&#xff0c;最后 pnpm install pnpm format #规范格式 pnpm dev #启动项目

jQuery的事件-动画-AJAX和插件

一、jQuery事件处理 1.认识事件&#xff08;Event&#xff09; Web页面经常需要和用户之间进行交互&#xff0c;而交互的过程中我们可能想要捕捉这个交互的过程&#xff1a; 比如用户点击了某个按钮、用户在输入框里面输入了某个文本、用户鼠标经过了某个位置&#xff1b;浏…

使用vite创建vue3项目

1、使用管理员身份打开命令行窗口&#xff0c;输入命令: npm create vuelatest TypeScript语法选择是&#xff0c;其他依次选择否&#xff0c;创建完毕。 2、 创建完毕后打开项目&#xff0c;vscode会提示安装开发相关的插件&#xff0c;选择install 3、打开vscode终端&#x…

【力扣】199.二叉树的右视图

看到这个题目的一瞬间&#xff0c;我想递归&#xff0c;必须用递归。最近被递归折磨的有点狠&#xff0c;但是我感觉我快要打败它了&#xff0c;就是现在稍稍有点处于劣势。不过没关系&#xff0c;来日方长不是。 法一&#xff1a;递归 题解&#xff1a; 之前想的就是先递归&…

2024哪款洗地机最值得入手?热门洗地机推荐

近年来&#xff0c;洗地机的被大家熟悉&#xff0c;越来越多的家庭购置洗地机来清洁家里的卫生&#xff0c;集吸、拖、洗为一体的三重清洁方式&#xff0c;为经常打扫卫生的宝妈脱离了做家务的困境&#xff0c;不用再经历繁琐的清洁步骤(扫地→拖地→拖干)&#xff0c;一拖一拉…

做APP小程序软件开发需要注意哪些细节?

随着移动互联网的快速发展&#xff0c;APP和小程序已成为我们日常生活中不可或缺的一部分。然而&#xff0c;在开发过程中&#xff0c;许多细节常常被忽视&#xff0c;导致用户体验不佳、软件漏洞频发等问题。本文将探讨在APP和小程序开发中需要注意的细节&#xff0c;帮助开发…

华为数通方向HCIP-DataCom H12-831题库(多选题:221-240)

第221题 在割接项目的项目调研阶段需要对现网硬件环境进行观察,主要包括以下哪些内容? A、设备的位置 B、ODF位置 C、接口标识 D、光纤接口对应关系 答案:ABCD 解析: 在项目割接前提的项目调研阶段,需要记录下尽可能详细的信息。 第222题 以下哪些项能被正则表达式10*成…

2024年山东省安全员B证证考试题库及山东省安全员B证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年山东省安全员B证证考试题库及山东省安全员B证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

SQL server 数据库练习题及答案(练习2)

使用你的名字创建一个数据库 创建表&#xff1a; 数据库中有三张表&#xff0c;分别为student,course,SC&#xff08;即学生表&#xff0c;课程表&#xff0c;选课表&#xff09; 问题&#xff1a; --1.分别查询学生表和学生修课表中的全部数据。--2.查询成绩在70到80分之间…

JBoss JMXInvokerServlet 反序列化漏洞 CVE-2015-7501 已亲自复现

JBoss JMXInvokerServlet 反序列化漏洞 CVE-2015-7501 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议总结 漏洞名称 漏洞描述 在Oracle Rapid Planning 12.1/12.2.2中发现了一个被归类为“严重”的漏洞。受到影响的是一些未知的组件处理中间层。升…

【Spark-HDFS小文件合并】使用 Spark 实现 HDFS 小文件合并

【Spark-HDFS小文件合并】使用 Spark 实现 HDFS 小文件合并 1&#xff09;导入依赖2&#xff09;代码实现2.1.HDFSUtils2.2.MergeFilesApplication 需求描述&#xff1a; 1、使用 Spark 做小文件合并压缩处理。 2、实际生产中相关配置、日志、明细可以记录在 Mysql 中。 3、…

JAVA日志

日志 Slf4j slf4j 的全称是 Simple Loging Facade For Java&#xff0c;即它仅仅是一个为 Java 程序提供日志输出的统一接口&#xff0c;并不是一个具体的日志实现方案&#xff0c;就比如 JDBC 一样&#xff0c;只是一种规则而已。所以单独的 slf4j 是不能工作的&#xff0c;…

如何使用 Matplotlib 绘制 3D 圣诞树

系列文章目录 前言 转自&#xff1a;How to draw a 3D Christmas Tree with Matplotlib | by Timur Bakibayev, Ph.D. | Analytics Vidhya | Mediumhttps://medium.com/analytics-vidhya/how-to-draw-a-3d-christmas-tree-with-matplotlib-aabb9bc27864 因为我们把圣诞树安装…

Sql 动态行转列

SELECT ID, Name, [Month],auth FROM dbo.Test3 数据列表&#xff1a; 1.静态行专列 Select auth, MAX( CASE WHEN [Month] 一月 then Name else null end) 一月, MAX( CASE WHEN [Month] 二月 then Name else null end) 二月, MAX( CASE WHEN…

零基础学Java第一天

1.什么是Java Java是一门编程语言 思考问题&#xff1a; 人和人沟通? 中文 英文 人和计算机沟通&#xff1f; 计算机语言&#xff1a; C C C# php python 2. Java诞生 前身叫Oak&#xff08;橡树&#xff09; 目前最流行的版本还是JDK8 3.Java三大平台体系 JavaSE&#xff08…