知识蒸馏研究综述

2023-11-09

知识蒸馏研究综述

论文来源于:知识蒸馏研究综述

主要有 5 种方法可以获得高效的深度学习模型:直接手工设计轻量级网络模型、剪枝、量化、基于神经架构搜索(Neural Architecture Search,NAS)的网络自动化设计以及知识蒸馏(Knowledge Distillation,KD)。

知识蒸馏是一种教师-学生(Teacher-Student)训练结构,通常是已训练好的教师模型提供知识,学生模型通过蒸馏训练来获取教师的知识。 它可以以轻微的性能损失为代价将复杂教师模型的知识迁移到简单的学生模型中。

根据应用场景划分出基于知识蒸馏的模型压缩和模型增强这两个技术方向,即获得的网络模型是否为了应用于资源受限的设备。

在这里插入图片描述

  • 模型压缩是教师网络在相同的带标签的数据集上指导学生网络的训练来获得简单而高效的网络模型
  • 模型增强则强调利用其它资源(如无标签或跨模态的数据)或知识蒸馏的优化策略(如相互学习和自学习)来提高一个复杂学生模型的性能.

知识蒸馏的提出

知识蒸馏与迁移学习都涉及到知识的迁移,然而它们有以下四点的不同:

  • 数据域不同
  • 网络结构不同
  • 学习方式不同
  • 目的不同

Hinton 等人在 2015 年引入软目标(即带有参数 T 的类概率)并提出知识蒸馏概念。

在这里插入图片描述

知识蒸馏的作用机制

Hinton 等人认为,学生模型在知识蒸馏的过程中通过模仿教师模型输出类间相似性的“暗知识”来提高泛化能力。

从数学或实验角度关于知识蒸馏作用机制的证明和理解:

软目标为学生模型提供正则化约束

  • 通过贝叶斯优化来控制网络超参数的对比试验,其表明了教师模型的软目标为学生模型提供了显著的正则化。
  • 软目标正则化的作用是双向的,即还能将知识从较弱的教师模型迁移到能力更强大的学生模型中。
    • 一方面,软目标通过标签平滑训练提供了正则化,标签平滑是通过避免了过分相信训练样本的真实标签来防止训练的过拟合。
    • 另一方面,软目标通过置信度惩罚提供了正则化,置信度惩罚让学生模型获得更好的泛化能力,其主要依赖于教师模型对正确预测的信心。

软目标为学生模型提供了“特权信息”

“特权信息”指教师模型提供的解释、评论和比较等信息。

教师模型在训练的过程中将软目标的“暗知识”迁移到学生模型中,而学生模型在测试的过程中并不能使用“暗知识”。

**软目标引导了学生模型优化的方向 **

  • Phuong等人从模型训练的角度证明了软目标能引导学生模型的优化方向。
  • Cheng 等人从数学上验证了软目标使学生模型比从原始数据中进行优化学习具有更高的学习速度和更好的性能。

蒸馏的知识形式

原始知识蒸馏(Vanilla Knowledge Distillation) 仅仅是从教师模型输出的软目标中学习出轻量级的 学生模型。 当模型变深时,仅学习输出是远远不够的。可以使用的知识形式有输出特征知识、中间特征知识、关系特征知识和结构特征知识。

从学生解题的角度,这 4 种知识形式可以形象比喻为:输出特征知识提供了解题的答案,中间特征知识提供了解题的过程,关系特征知识提供了解题的方法,结构特征知识则提供了完整的知识体系。

在这里插入图片描述

输出特征知识

输出特征知识通常指的是教师模型的最后一层特征,主要包括逻辑单元和软目标的知识。

输出特征知识蒸馏的主要思想是促使学生能够学习到教师模型的最终预测,以达到和教师模型一样的预测性能。

相关文献的总结如下:

任务名称 知识的类型 描述
目标分类 软目标知识 分类任务重点是学生如何模仿到教师的软目标。与硬目标知识相比,教师的软 目标提供给学生模型更多的类间知识。 目标分类任务的知识蒸馏就是学习教师 模型输出的软目标知识。
目标检测 边界框回归知识和软目标知识 目标检测网络的最后输出层包含区域建议网络(Region Proposal Network,RPN) 的边界框回归和区域分类网络(Region Classification Network,RCN)的软目标知 识. 前者的知识用于定位,后者用于分类。
目标分割 像素级软目标知识和空间上下文结构知识 目标分割需要分割出具有抽象语义的目标,即要对目标的每一个像素都要分类。 同时由于教师和学生模型输出的特征尺寸并不总是能直接进行匹配,因此要求学生模型在特征映射时学习教师模型的空间上下文结构知识。
序列特征 序列级输出概率分布 序列特征任务在数据对齐的情况下都可以使用帧级的知识蒸馏,其主要思想是匹配教师和学生间输出离散化的软目标。 然而在数据没有对齐的情况下,帧级的知识蒸馏实时地使用教师模型输出的每一种可能的序列分布来指导学生模型的训练。 序列级的知识蒸馏则在一个样本中,只将教师模型得分最高的输出序 列分布作为学生模型的监督信号,最优的序列分布代表了序列级的知识特性。

中间特征知识

Gotmare 等人的研究表明:教师的软目标主要是指导学生在深层次的网络层训练,而在学生网络的特征提取层的指导较少。中间特征知识的主要思想是从教师中间的网络层中提取特征来充当学生模型中间层输出的提示(Hint)。 它不仅需要利用教师模型的输出特征知识,还需要使用教师模型隐含层中的特征图知识。

最早使用教师模型中间特征知识的是 FitNets,其主要思想是促使学生的隐含层能预测出与教师隐含层相近的输出。隐藏层损失定义为:
L Hint  ( W Guided  , W r ) = 1 2 ∥ u h ( x ; W Hint  ) − r ( u g ( x ; W Guided  ) ; W r ) ∥ 2 \begin{array}{r} L_{\text {Hint }}\left(W_{\text {Guided }}, W_r\right)=\frac{1}{2} \| u_h\left(x ; W_{\text {Hint }}\right) \\ -r\left(u_g\left(x ; W_{\text {Guided }}\right) ; W_r\right) \|^2 \end{array} LHint (WGuided ,Wr)=21uh(x;WHint )r(ug(x;WGuided );Wr)2
在这里插入图片描述

中间特征的知识蒸馏要求将教师模型的特征提取能力迁移到学生模型中。在网络层的迁移点上,可以隔层,逐层和逐块地将教师的中间特征知识转移到学生模型中,或者仅迁移教师模型较高的隐含层和最后一个卷积层的特征知识。

知识蒸馏中应用最广的度量学习算法是 KL 散度,如用于最小化教师与学生 模型输出的相对概率分布。

关系特征知识

基于网络层的关系蒸馏

  1. 基于FSP矩阵

关系特征指的是教师模型不同层和不同数据样本之间的关系知识。关系特征知识蒸馏认为学习的 本质不是特征输出的结果,而是层与层之间和样本数据之间的关系。它的重点是提供一个恒等的关系映射使得学生模型能够更好的学习教师模型的关系知识。

Yim 等人的“Flow of Solution Procedure”(FSP)矩阵,其中通过模仿教师生成的 FSP 矩阵来实施对学生模型训练的指导。FSP 矩阵的知识蒸馏可视化结构如图:

在这里插入图片描述

Yim 等人的工作分为两阶段训练. 第一阶段最小化师生间的 FSP 矩阵距离,以使学生能学习到教师模型层间的关系知识。 第二阶段是使用正常的分类损失来优化学生模型。

Park 等人提出了基于样本的角度关系和距离关系蒸馏。其中的角度关系蒸馏用来测量三个样本角度关系。

缺点:基于 FSP 矩阵的方法要求网络的中间层具有相同大小和数量的过滤器,当师生网络层的维度不同时,该方法并不能用于表示学习。

  1. 探索不同架构网络层的内部关系特征
  • 捕获网络层映射相似性的雅可比矩阵
  • 使用径向基函数计算层间的相关性

这些方法由于不受师生网络结构的限制,特别适用于学生模型的模型压缩。

基于样本间的关系特征知识蒸馏

基于样本间的关系特征知识蒸馏是额外利用了不同样本之间的关系知识,即把教师模型捕捉到的数据内部关系迁移到学生模型中。

“学习排名”(Learning to Rank)算法是该方法中较早的工作,它将知识蒸馏形式化为师生网络之间样本相似性的排列匹配问题,提出利用不同样本之间的关系,并传递交叉样本的相似性知识来改善学生模型。

结构特征知识

结构特征知识是教师模型的完整知识体系,不仅包括教师的输出特征知识,中间特征知识和关系特征知识,还包括教师模型的区域特征分布等知识。

结构特征知识蒸馏是以互补的形式利用多种知识来促使学生的预测能包含和教师一样丰富的结构知识。

不同工作构成结构化特征知识的成份是不同的,比如:

  • 结合样本特征、样本间关系和特征空间变换作为结构化的知识;
  • 将成对像素的关系和像素间的整体知识作为结构化知识;
  • 由输出特征、中间特征和全局预测特征组成的结构化知识。

知识蒸馏的方法

知识合并

知识合并(Knowledge Amalgamation,KA)是将多个教师或多个任务的知识迁移到单个学生模型,从而使其可以同时处理多个任务。

  • 一种方法是将多个教师模型的特征知识进行融合,然后将所获得的融合特征作为学生模型学习参数的指导。如下图所示:

在这里插入图片描述

  • 另一种方法是学生模型同时向多个教师模型学习多个任务的特征。引入了选择性学习,将多个教师模型中给出置信度最高的预测作为学生模型的学习目标,以降低错误的监督信息对学生模型的误导。
  • 另外,可以通过共享网络层直接学习多教师的特征来实现多任务知识的合并。即将教师中的相应层替换为学生中要学习的层,使学生的网络块与相应的教师一起学习。

多教师学习

在这里插入图片描述

知识合并和多教师学习都是学习多个教师模型的知识,但是它们的目标却是不一样的。

  • 知识合并是要促使学生模型能同时处理多个教师模型原先的任务;
  • 多教师学习是提高学生模型在单个任务上的性能。

You 等人利用投票策略从多个教师网络中筛选出相对不同的中间特征知识来强化学生模型的性能,其多个教师和单个学生模型的预测任务是相同的。

多个教师模型通过提供多个信息流对学生模型的任务提供了多种解释,学生模型可以利用教师模型对目标任务的“看法”(Views)来提高模型的性能。

  • 随机选择一位教师模型的软目标;

  • 通过动态权重选择较高效教师模型的软目标。

一些工作特别强调各个教师模型间知识的互补性,即它们自行选择具有互补性知识的教师模型。

Jiang 等人提出同时向能提供稳定信号的长期教师和高质量训练更新的短期教师学习来改善学生模型。

  • 长期的教师信号提供了稳定的教师信息,保证了师生的差异;
  • 短期的教师信号则保证了高质量的教学。

教师助理

教师和学生模型由于容量差异大导致它们存在着“代沟”。 “代沟”既可以通过传递教师的特征知识去缓解,也可以使用教师助理(Teacher Assistant)网络去协助学生模型学习。

在这里插入图片描述

  • Wang等人使用 GAN 的判别器充当教师助理,其工作原理如上图所示。该工作将学生模型当做生成器,判别器促使学生模型对输入数据生成和教师模型同样的特征分布。
  • Mirzadeh 等人使用一个中等规模的网络(介于教师和学生模型之间)充当教师助理来弥合学生和教师之间的差距,即教师助理先从教师模型中学习到知识后,再传递到学生模型中。
  • 为了利用异构教师模型的中间特征,Passalis等人发现教师助理能够允许教师和学生在网络层之间进行直接而有效的一对一匹配来减少“代沟”问题。
  • Gao等人让学生模型以及教师助理以互补的方式从教师模型那里获得知识,其中教师助理主要学习教师和学生的残差错误.。

跨模态蒸馏

在许多实际应用中,数据通常以多种模态存在,一些不同模态的数据均是描述同一个事物或事件,我们可以利用同步的模态信息实现跨模态蒸馏(Cross Modal Distillation)。

Albanie等人提出的的跨模态情感识别方法人在说话时脸部的情感和语音情感是一致的,利用这种同步对齐的模态信息将无标签的视频作为输入数据进行训练,视频中的图片进入预训练的人脸教师模型中产生软目标来指导学生的语音模型训练。
在这里插入图片描述

论文 描述
Aytar 等人 将大规模无标签视频中的图片预测软标签对视频中的声音识别进行指导学习.
Girdhar 等人 收集和标记大型和干净的静态图像数据集作为教师训练和引导无标签的视频学习丰富的知识表示.
Liu 等人 将现有弱监督检测模型中的局部语义区域和类相关性蒸馏到无标注的多标签图像分类任务中.
Gupta 等人 将从标注过大样本的 RGB 图像模态中学习得到的特征作为监督信号,用于无标注样本深度和光流图像模态的特征学习.
Wang 等人 使用知识蒸馏纠正 2D 地标注释重建 3D 姿势估计所犯的一些错误,从而避免对 3D标签的依赖.
Luo 等人 使用图蒸馏动态学习蒸馏方向和权重来更好利用大规模多模态数据集的“特权信息”
Liu 等人 将 ImageNet 的语义信息迁移到草图检索任务中.
Hoffman 等人 提出了一个幻觉网络来学习深度图片的特权信息来提高 RGB 目标检测的性能,它通过在测试时学习教师模型的中间层特征来弥补丢失的信息流.
Aditya 等人 将基于问题和场景图的附加信息以空间知识的形式用于视觉推理问题中.
Ye 等人 通过构造实例与实例之间的关系将不同领域教师模型的知识迁移到新领域的学生模型中.
Yuan 等人 将图像语义理解的知识迁移到文本到图像合成的任务中.
Li 等人 将磁共振成像的知识以相互学习的方式迁移到计算机断层扫描的分割任务中.
Piao 等人 将深度的“特权信息”迁移到 RGB 流中.
Garcia 等人 通过时空表示的乘法连接,利用软目标和硬目标以及特征图之间的距离来学习视频中深度特征的“特权信息”.
Tavakolian 等人 通过帧自适应加权将视频中每一帧的时空信息蒸馏到图像中.
Gu 等人 通过强制匹配共享特征空间的方式将视频表示网络所学习的时间知识传播到图像表示网络中.
Zhao 等人 将从包含两个模态的配对样本的源数据集中学习提炼的交叉模式知识推广到目标数据集
Hu 等人 通过利用无监督教师模型输出中获得的广泛的相关性信息来监督学生模型的训练.
Li 等人 传递字幕新闻符号的知识以提高单词级手语识别性能.

相互蒸馏

在这里插入图片描述

是让一组未经训练的学生模型同时开始学习,并共同解决任务。 它是一种在线的知识蒸馏,即教师和学生模型是同时训练并更新的。

思想由 Zhang 等人于 2017 年提出,其意义在于没有强大教师的情况下,学生模型可以通过相互学习的集成预测来提高性能。

终身蒸馏

在这里插入图片描述

深度学习网络在学习新任务时,对旧任务的性能就会急剧下降,这个现象被称为灾难性遗忘。这就需要使用终身学习来减轻这种影响,终身学习也称为持续学习或增量学习。

终身

蒸馏就是通过知识蒸馏来保持旧任务和适应新任务的性能,其重点是训练新数据时如何保持旧任务的性能来减轻灾难性遗忘。

Li等人通过引入知识蒸馏来保持旧任务性能的“学习而不遗忘”(Learning without Forgetting)算法。

通过缓存一小部分旧任务数据和产生旧任务相似的输出值或视觉模式都能使网络在学习新任务的同时保持旧任务性能。

自蒸馏

在这里插入图片描述

自蒸馏(Self-Distillation)是单个网络被同时用作教师和学生模型,让单个网络模型在自我学习的过程中通过知识蒸馏去提升性能。

  • Mobahi 等人认为自蒸馏是通过逐渐减少代表解的基函数数量来不断修改正则化。

  • Zhang 等人认为自蒸馏先前的迭代都能为后续的迭代充当教师作用,从而通过多次的迭代之后能学习到多样性的知识。

自蒸馏分为两类:

  • 第一类是使用不同样本信息进行相互蒸馏。其它样本的软标签可以避免网络过度自信的预测,甚至能通过最小化不同样本间的预测分布来减少类内距离。
  • 另一类是单个网络的网络层间进行自蒸馏。 最通常的做法是使用深层网络的特征去指导浅层网络的学习。
知识蒸馏的方法 优点 缺点
知识合并 多用途的学生网络能减少部署的成本和提高模型的利用率. 相较于单网络预测单个目标任务,多用途学生网络的性能可能会下降.
多教师学习 相比于单个老师,多个老师通常能让学生网络学习到更好的、更丰富的知识. 难以高效地融合各个教师网络的知识.
教师助理 减少师生网络存在的“代沟”,有助于学生网络更好地训练. 通常会增加训练的成本
跨模态蒸馏 通过跨模态的数据集来实现少样本学习或半监督学习,减少对带标签数据的依赖. 获取同步的跨模态数据并不是一个很容易的任务.
相互蒸馏 节省训练教师网络的时间,提高了训练的效率. 可能会陷入“瞎子带领瞎子”的局面.
终身蒸馏 能保护旧任务的数据隐私,并提高训练的效率. 难以维持旧任务的性能.
自蒸馏 节省训练教师网络的时间,提高了训练的效率. 缺少丰富的外部知识.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

知识蒸馏研究综述 的相关文章

  • Spacy 中的自定义句子分割

    I want spaCy使用我提供的句子分割边界而不是它自己的处理 例如 get sentences Bob meets Alice SentBoundary They play together gt Bob meets Alice Th
  • 实时跟踪每分钟/小时/天的前 100 个 Twitter 单词

    我最近遇到这样一个面试问题 Given a continuous twitter feed design an algorithm to return the 100 most frequent words used at this min
  • 将复数名词转换为单数名词

    如何使用 R 将复数名词转换为单数名词 我使用 tagPOS 函数来标记每个文本 然后提取所有标记为 NNS 的复数名词 但是如果我想将这些复数名词转换为单数该怎么办 library openNLP library tm acq o lt
  • 快速 shell 命令删除文本文件中的停用词

    我有一个 2GB 的文本文件 我正在尝试从此文件中删除经常出现的英语停用词 我有 stopwords txt 包含这样的 a an the for and I 使用 shell 命令 例如 tr sed 或 awk 执行此操作的快速方法是什
  • AttributeError:类型对象“Word2Vec”没有属性“load_word2vec_format”

    我正在尝试实现 word2vec 模型并收到属性错误 AttributeError 类型对象 Word2Vec 没有属性 load word2vec format 下面是代码 wv Word2Vec load word2vec format
  • 保存具有自定义前向功能的 Bert 模型并将其置于 Huggingface 上

    我创建了自己的 BertClassifier 模型 从预训练开始 然后添加由不同层组成的我自己的分类头 微调后 我想使用 model save pretrained 保存模型 但是当我打印它并从预训练上传时 我看不到我的分类器头 代码如下
  • 管道:多个流消费者

    我编写了一个程序来计算语料库中 NGram 的频率 我已经有一个函数 它消耗一串令牌并生成一个订单的 NGram ngram Monad m gt Int gt Conduit t m t trigrams ngram 3 countFre
  • 验证 Transformer 中多头注意力的实现

    我已经实施了MultiAttention head in Transformers 周围有太多的实现 所以很混乱 有人可以验证我的实施是否正确 DotProductAttention 引用自 https www tensorflow org
  • 获取 NLTK 索引的所有结果

    我正在使用 NLTK 来查找单词的一致性 但我不知道如何获取所有结果并将它们放入list or set 例如 text concordance word 仅打印前 25 个结果 TL DR text concordance lines 10
  • 如何使用FeatureUnion转换PipeLine中的多个特征?

    我有一个 pandas 数据框 其中包含有关用户发送的消息的信息 对于我的模型 我感兴趣的是预测消息的缺失收件人 即给定消息的收件人 A B C 我想预测还有谁应该成为收件人的一部分 我正在使用 OneVsRestClassifier 和
  • 使用 OpenNLP 获取句子的解析树。陷入困境。

    OpenNLP 是一个关于自然语言处理的 Apache 项目 NLP 程序的目标之一是解析一个句子 并给出其语法结构的树 例如 天空是蓝色的 这句话 可能会被解析为 S NP VP The sky is blue where S是句子 NP
  • 计算机AI算法写句子?

    我正在寻找有关处理文本句子或在创建在正常人类语言 例如英语 中有效的句子时遵循结构的算法的信息 我想知道这个领域是否有我可以学习或开始使用的项目 例如 如果我给一个程序一个名词 为其提供同义词库 相关单词 和词性 以便它理解每个单词在句子中
  • Rasa core 和 Rasa nlu 之间的区别

    我试图理解之间的区别拉莎核心 https core rasa ai and Rasa NLU https nlu rasa ai installation html从官方文档看的 但我不太明白 我的理解是Rasa core用于引导对话流程
  • 如何使用Bert进行长文本分类?

    我们知道 BERT 有 token 的最大长度限制 512 因此如果一篇文章的长度远大于 512 例如文本中有 10000 个 token 如何使用 BERT 您基本上有三个选择 您可以剪掉较长的文本并仅使用前 512 个令牌 最初的 BE
  • 使用 NLP 进行句子压缩 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 使用机器翻译 我可以获得一个句子的非常压缩的版本 例如 我真的很想喝一杯美味可口的咖啡将被翻译为我想喝咖
  • 使用 NLTK 生成字典以将推文分类为预定义类别

    我有一个 Twitter 用户 screen names 列表 我需要根据他们的兴趣领域将他们分为 7 个预定义类别 教育 艺术 体育 商业 政治 汽车 技术 我用 Python 提取了用户的最后 100 条推文 并在清理推文后为每个用户创
  • 使用印度名字训练 Spacy NER

    我正在尝试自定义 Spacy 的 NER 来识别印度名字 遵循本指南https spacy io usage training https spacy io usage training这是我正在使用的数据集https gist githu
  • BERT 获取句子嵌入

    我正在复制代码这一页 https colab research google com drive 1yFphU6PW9Uo6lmDly ud9a6c4RCYlwdX 我已将 BERT 模型下载到本地系统并获取句子嵌入 我有大约 500 00
  • 有人可以简单解释一下自然语言处理的要素吗?

    我是自然语言处理的新手 对所使用的术语感到困惑 什么是代币化 POS 标签 实体识别 标记化只是将文本分割成可以有意义的部分或为这些部分赋予含义 以及含义 当我确定某物是名词 动词或形容词时 它的名字是什么 如果我想分为日期 姓名 货币呢
  • 如何使用 NLP 确定句子中的中心词?

    例如 如果我得到一个句子 一名英国士兵在阿富汗战斗中丧生 这句话的中心词是 杀 给定 Python 中的 nltk 包 我怎样才能找到它 我不是在谈论词干 我指的是中心词 您正在寻找中心词句子解析 它可以在 Python 的 nltk 包中

随机推荐

  • 区块链倪老师:《区块链思维》第一章

    上回我在 区块链思维 序章中提到 从 零维思维 晋升到 一维思维 的过程就像是区块链接成链的过程 区块链由一串使用密码学算法产生的区块连接而成 每一个区块上写满了交易记录 区块按顺序相连形成链状结构 也就是区块链大账本 以比特币为例 矿工在
  • CCF CSP 201803-1 跳一跳 C++ (100分)

    include
  • 机器学习之过拟合欠拟合的理解

    过拟合与欠拟合的理解 一 什么是过拟合 欠拟合 1 过拟合 学习器把训练样本学得 太好了 很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质 这样就会导致泛化能力下降 这就是过拟合 换一种说法就是模型过度拟合 在训练集
  • 什么是JSX?

    JSX JavaScriptXML jsx是一种基于Ecmascript的一种新特性 是一种定义带属性树结构的语法 树结构就是我们的dom结构 属性就是dom节点中的属性 jsx不是xml或者Html 不是一种限制 在react中 我们可以
  • [docker]学习笔记-安装

    1 首先修改yum源为国内源 以阿里云为例 下载速度快 尤其时下载docker镜像的时候默认用国外源会非常慢 删除原有自带的yum源 下载阿里云yum源并移动到 etc yum repo目录下 root localhost etc wget
  • TP5-数据库查询左连接

    左连接 展示主表的所有数据 包括不匹配的哈 右连接 只展示左表匹配得上的数据 Db name test1 gt alias a gt join test2 b a id b id LEFT gt select 以上代码会展示出 test1
  • 5个困难的Python谜题

    5个困难的Python谜题 没有多少人能够解决 我挑战你 证明我是错的 这里有一个挑战 尝试解决以下5个Python编程谜题 而不需要在谷歌上寻找答案 魔术方块 魔术方格是一个包含数字1到9的3x3网格 每3个连续的数字 行 列或对角线 必
  • 【STM32】标准库 菜鸟入门教程(1)初识最小系统

    前言 本教程突出两个字 细 和 简 也就是详细跟简洁 所用知识涉及到的原理会详细讲明 再而 在排版以及描述上会采取简约风格 进行实例讲解的时候 包含图片过程以及文字过程两部分 因此适合小菜鸟入门 本次使用的是stm32f103c8t6也就是
  • VIM 快捷键(转)

    VIM快捷键 ctags 文件名 做索引 光标移动 四个方向 k h 0 l j ctrl f ctrl b 向下翻页 向上翻页 ctrl d ctrl u 向下半翻页 向上半翻页 移动行尾 0 移动行首 w 移动下一个词 b 移动到上一个
  • 树莓派Raspbian系统安装tesseract-ocr实现OCR

    第一步安装依赖 启动终端依次敲入命令 sudo apt get install g or clang presumably sudo apt get install autoconf automake libtool sudo apt ge
  • 基于matlab的dbn算法实现

    下载deeplearningtoolbox或者本人提交的zip文件包即可直接运行 command window运行以下程序 function test example DBN load mnist uint8 train x double
  • java毕业设计开题报告javaweb敬老院管理系统的设计和实现

    文末获取联系 一 项目介绍 javaweb基于Java的敬老院管理系统的设计和实现 该项目采用技术jsp servlet jdbc tomcat服务器 mysql数据库 项目含有源码 论文 配套开发软件 软件安装教程 项目发布教程 一 选题
  • Vue插槽

    Vue插槽 Vue的组件如何接受模板内容呢 在某些场景中 我们可能想要为子组件传递一些模板片段 让子组件在它们的组件中渲染这些片段 这时我们可以使用vue提供的插槽来实现 例子 父元素提供了一个模板
  • USB基本知识

    USB协议版本有USB1 0 USB1 1 USB2 0 USB3 0等 目前用的比较多的是USB2 0和USB3 0 1 USB2 0总线 USB2 0总线采用4芯的屏蔽线 一对差分线 D D 传输信号 另一对 VBUS 电源线 传输 5
  • Spring全家桶知识概括

    Spring全家桶知识概括 Springmvc与JS 拦截器与过滤器的区别 spring容器 spring MVC容器 web容器的区别 Filter与Servlet路径映射问题 Spring与JUnit SpringBoot测试与Mock
  • QCefView + QWebChannel + Vue 项目开发

    看到标题 你大概能猜到这篇我想讲述的是什么了 对的 将要同大家分享的是一种目前PC软件常见的开发方案 前言 1 桌面应用为什么要使用Vue等框架开发 而不再是Qt UI开发 界面开发我们使用java语言 通过Vue框架快速开发 好处不言而喻
  • 使用html2canvas实现HTML页面的echarts图表转成长图片

    import html2canvas from html2canvas downLoad url var oA document createElement a oA download 设置下载的文件名 默认是 下载 oA href url
  • 字符和字符串(4)——C# 截取字符串:简单易懂,小白教程

    几个经常用到的字符串的截取 string str 123abc456 int i 3 取字符串的前i个字符 str str Substring 0 i or str str Remove i str Length i 去掉字符串的前i个字符
  • web3.js

    安装 别按照官网上面 npm install web3 下载 我已经吃过一次亏了 npm init npm install ethereum web3 js save 指令 web3 isConnected 检查结点的连接是否存在 web3
  • 知识蒸馏研究综述

    知识蒸馏研究综述 论文来源于 知识蒸馏研究综述 文章目录 知识蒸馏研究综述 知识蒸馏的提出 知识蒸馏的作用机制 蒸馏的知识形式 输出特征知识 中间特征知识 知识蒸馏的方法 知识合并 多教师学习 教师助理 跨模态蒸馏 相互蒸馏 终身蒸馏 自蒸