深度模型压缩研究回顾

深度模型压缩研究回顾

作者:安静到无声 个人主页

目录

  • 深度模型压缩研究回顾
    • 推荐专栏

在本节中,主要介绍了目前主流的深度神经网络压缩与加速方法,主要包括轻量化网络设计、参数量化、知识蒸馏、模型剪枝和硬件加速等,其中模型剪枝与硬件加速与本文研究最为相关。

3.1 轻量化网络设计研究现状

紧凑的神经网络设计方法并未对预先训练网络模型进行压缩,而是直接设计出具有较小计算复杂度和参数量的新型网络。SqueezeNet[1]利用1×1卷积和分组卷积,在AlexNet[2]上实现了约50倍的压缩,并且具有相当的精度。SqueezeNext[3]基于SqueezeNet改进了网络结构,并从硬件角度分析如何提速。MobileNetV1[4]利用深度可分离卷积模块构建的轻量化模型取得了不错的结果,如图1所示。MobileNetV2[5]在MobileNetV1的基础上,借鉴ResNet的残差结构,提出基于反向残差的线性瓶颈结构,实现了惊人识别效果。ShuffleNet[6]利用分组卷积和通道混洗的方法来减少模型的参数量和计算量,进而提升推理速度,ShuffleNetV2[7]指出FLOPs不能直接线性的衡量计算速度,速度与硬件设备也有关联,因此在此基础上改进了ShuffleNetV1网络结构[8]。

img

图1 Mobilenet中的深度可分离卷积计算示意图

除了上述网络结构轻量化的方法之外,还有一些研究围绕着构造轻量化的卷积块展开。Pravendrad等人[9]设计了一种高效的异核卷积滤波器(HetConv),插入任何现有的架构中,可以提高架构的效率(FLOPs减少3至8倍),而且不会牺牲精度,如图2所示。OctConv[10]将特征图分为高频特征图和低频特征图,并通过降低低频特征图的分辨率而节省存储和计算量,同时有助于获得更大的感受野。Liu等人[11]在分组卷积的基础上提出了捆绑块卷积(Tied Block Convolution, TBC)它在相同大小的通道块上共享相同thinner的滤波器,并用一个滤波器产生多个响应,实现了模型的轻量化设计。DualConv[12]结合3×3和1×1卷积核来同时处理相同的输入特征映射通道,并利用组卷积技术来有效地排列滤波器,解决了跨通道通信和保持原始输入特征图信息的问题。

img

图2 异核卷积结构示意图

虽然这些轻量级的网络已经取得了很好的检测性能,但是这种手工设计的成本很高,并且随着网络的复杂而变得困难。此外,利用网络架构搜索的方法进行轻量化网络设计也变得很流行。姚潇等人[13]利用不同分组的ShffleNet单元和Dilated LightNet单元作为搜索空间,利用ENAS网络[14]搜索架构确定网络的分组结构和整体架构。但是这些方法的搜索空间非常大,需要消耗大量的计算资源。

3.2 参数量化技术研究现状

神经网络参数量化(Quantization)通过降低模型比特数以及优化比特运算的方法对初始神经网络模型进行压缩,使模型更易于数字硬件实现[15]。根据量化是否需要重新训练或微调划分为量化感知训练(Quantization-Aware Training,QAT)和后量化(Post-Training Quantization,PTQ)方法。

(1)量化感知训练。

该方法首先对预训练模型进行量化,然后使用训练数据进行微调,最后调整参数以恢复下降的精度。Zhuang等人[16]使用一个两阶段优化策略解决低精度网络容易陷入较差局部最小值的问题,并提出一种联合学习模型以充分学习全精度模型提取的特征信息。Angela Fan等人[17]提出量化噪声技术来训练出高性能的量化网络。除了调整模型参数外,以前的一些工作也发现在量化感知训练方法中,在测试过程中学习量化参数也是有效的。Jungwook[18]利用一种新颖的激活量化方案来学习最优量化尺度。Jung等人[19]将量化区间参数化,通过最小化网络的任务损失来获得最优值。LSQ[19]引入一种新的梯度估计方法来学习非负性激活的比例因子。LSQ+[41]进一步将这一想法扩展到一般的激活函数,如S-wish和H-swish这些会产生负值函数。尽管在这个领域有如此多有意义的工作,可是这种方法存在计算开销大、压缩尺寸有限等问题,难以实现快速有效的部署。

(2)训练后量化。

在训练后量化中,使用校准数据(例如,训练数据的小子集)来校准预训练模型,以计算尺度因子和比例因子,然后,基于校准结果量化该模型,以此提升了深度神经网络实际部署效率。如,Banner等人[22]设计了一种基于阶段阈值选择方案的量化方法,通过分析计算截断范围以及每个通道的比特数分配实现相对较好的测试性能。然而,由于使用多通道来量化激活值,使得难以部署在硬件平台上。Fang等人[23]提出了一种分段线性量化方案,以实现对具有长尾钟形分布的张量值的精确逼近。该方法将每个张量的量化范围划分为不重叠的区域,然后为每个区域分配相同数量的量化级别,并通过最小化量化误差来确定划分整个范围的最佳断点。Choukroun等人[24]将线性量化任务转换为权重和激活值的最小均方差(MMSE)问题,避免了对模型的重新训练。因此,PTQ是一种非常快速的量化神经网络模型的方法。然而,与QAT相比,这往往以较低的准确性为代价。

3.3 知识蒸馏技术研究现状

知识蒸馏是一种训练框架,一般流程如图3所示。其原理是将大的预训练教师模型的特征信息转移到一个小型学生模型中,并保证在资源有限的学生模型中保持教师的准确性[25]。尽管在工程实践中该技术取得了巨大的成功,但是从理论解释上来理解知识蒸馏研究并不多。Phuong和Lampert[26]通过研究深层线性分类器证明了一个泛化界限,该界限建立了蒸馏训练线性分类器的预期风险的快速收敛。也说明了知识蒸馏的成功依赖于数据几何、蒸馏目标的优化偏差和学生分类器的强单调性。Ji等人[27]从风险界限、数据效率和教师模型不完善的角度理论上解释了宽神经网络上的知识蒸馏。Cho和Hariharan[28]实证分析了知识蒸馏的效果,结果表明,由于模型容量差距,大模型可能不是更好的老师。Cheng等人[29]通过量化和分析深度神经网络中间层中与任务相关和与任务无关的视觉概念来以解释知识蒸馏。

img

图3 知识蒸馏的通用师生框架

知识蒸馏方法已扩展到师生学习、相互学习、终身学习和自学。不过大多数知识蒸馏的扩展都集中在压缩深度神经网络上,由此产生的轻量级学生网络可以轻松部署到无人机、移动手机和机器人等设备中。FitNets[30]利用教师的中间表征直接指导学生模型中的学习中间表征,扩展了知识提炼。Shen等人[31]提出了一种知识蒸馏的新范式MEAL,将多个训练的深度神经网络的知识转移到单个深度神经网络。为了从不同的训练(教师)模型中提取不同的知识,采用了对抗学习策略以指导和优化预定义的学生网络来恢复教师模型中的知识,并促使判别器网络同时区分教师和学生模型特征。

近两年也有不少知识蒸馏的研究成果。Mirzadeh等人[32]观察到,当教师和学生之间存在较大的能力差距时(即模型的复杂性差异很大),知识蒸馏可能会导致学生准确性下降。为了缩小能力差距,他们引入了教师助理的概念,提高了学习能力。Xu等人[33]利用具有选择性传递的噪声自监督信号进行蒸馏。尽管这些训练方法可以提高模型的识别效果,但是如何设计一个轻量高效的学生模型仍是一个亟待攻克的难题。

3.4 模型剪枝技术研究现状

剪枝是模型压缩中非常有效的方式,按照剪枝的稀疏度可以分为非结构化剪枝和结构化剪枝,图4展示了卷积神经网络4维权重张量的不同稀疏结构,其中规则稀疏使得硬件加速变得容易。

(1)非结构化剪枝

非结构化剪枝通过去除滤波器中的单个神经元或在全连接层中贡献较小的连接来降低CNN的计算成本。LeCun等人[34]提出了OBD(Optical Brain Damage, OBD)算法是非结构剪枝最为经典的文章,它利用二阶导数来平衡训练损失和模型复杂度。Suraj Srinivas[35]提出了一种无数据的方法对全连接层进行修剪,从而得到一个同等性能的紧凑子网络。Han等人[36]根据神经元连接权值的范数值大小,删除范数小于阈值的连接,并通过重新训练恢复性能。Liu等人[37]利用二维DCT变换对系数进行稀疏化,去除空间冗余。Dong等人[38]提出了一种叫做L-OBS的剪枝算法,该算法利用分层误差函数的二阶导数信息对参数进行剪枝,使模型在性能下降很小的情况下修剪大量参数。Chen[39]等人从约束贝叶斯优化的角度阐述了模型压缩问题,并引入一种冷却(退火)策略进行求解。Lin等人[40]提出了一种动态分配稀疏模式和包含反馈信号的方法来重新激活早期修剪的权值。尽管在权重参数层面做细粒度的剪枝,灵活性大精度高,但需要配合专门做稀疏矩阵运算的软硬件才能达到实用效果。

img

图12 卷积神经网络四维权重张量的不同稀疏结构

(2) 结构化剪枝

相比之下,结构化修剪可以直接移除通道和相应的滤波器,是一种硬件友好的神经网络修剪方法,因此可以容易地部署在嵌入式设备上。根据模型压缩的操作过程,结构化剪枝可以大致分为三类:预训练-属性剪枝、正则化-再训练剪枝和自动子网搜索。

预训练-属性剪枝:这种剪枝通常提出一个滤波器重要性的度量标准进行模型压缩。Li等人[41]使用L1范数对特征信息量少的滤波器进行修剪,并对重要的权重进行继承。NISP[42]应用特征排序技术(Final Response Layer, FRL)来度量每个神经元的重要性,进而将网络剪枝问题描述为一个二进制整数优化问题。He等人[43]分析了基于范数的网络修剪的局限性,并提出一种基于几何中值的滤波器修剪策略。Lin等人[44]利用特征图秩来评价滤波器的重要程度,保留了高秩特征图对应的滤波器权值。Hu等人[45]认为输出稀疏的通道是冗余的,因此去掉了相应的滤波器,并使用基于激活层中零的百分比的平均百分比(Average Percentage of Zeros, APoZ)作为度量。有研究考虑参数剪枝对损失的影响,Lee等人[46]直接利用导数对随机初始化的权重进行非结构化剪枝。这些方法的模型评估函数需要特别设计的,它们具有时间复杂度低的优点,但在性能和剪枝结果压缩率方面存在局限性。

正则化-再训练剪枝。与基于神经网络固有属性的方法不同,该方法在训练过程中引入稀疏约束和掩码方案来降低模型复杂度。例如,Wen等人[47]提出了一种结构化稀疏学习(Structured Sparsity Learning, SSL)方法来正则化DNN的结构(滤波器、通道、滤波器形状和层深度),进而获得硬件友好的结构稀疏性。Liu等人[48]和Zhao等人[49]对批归一层的尺度因子施加稀疏约束,并认为尺度因子较低的通道不重要。Huang等人[50]和Lin等人[51]引入了一个掩码来学习稀疏结构剪枝,去掉了比例因子为零对应的滤波器。Lemaireet等人[52]提出了一种结合预算约束稀疏性损失的知识蒸馏损失函数来训练网络,同时保证神经元预算。将剪枝要求嵌入到网络训练损失中,通过联合再训练优化生成自适应剪枝决策,通常可以获得更好的压缩和加速效果。但通常需要从头开始训练,在机器时间和人力上都是繁重的。此外,由于稀疏约束的引入,给训练损失的普适性和灵活性带来了很大的困难。

自动子网络搜索。最近的一些研究[53][54]侧重于寻找最佳网络结构,即每层通道的数,而不是评估滤波器的重要性。MetaPrunning[55]将每一层的输出通道数随机采样作为输入,训练修剪网络为不同架构的子网络模型生成的高质量权重,最后使用进化算法搜索满足约束的最优子网络。AMC[56]将压缩率和准确度作为反馈,使用强化学习获得智能体,生成每层的修剪率。然而,强化学习通常存在不稳定的收敛性,这需要进行大量的超参数调整。ABCPruner[57]使用人工蜂群算法自动搜索高效的网络架构,并对其进行微调,以选择最高效的子网络,但它需要重新训练子网络模型以进行性能评估,这会导致较高的计算成本。DMCP[58]将通道修剪建模为可微马尔可夫过程,从而消除了搜索许多体系结构的负担。然而,这些方法具有复杂的过程,需要迭代搜索,这将面临较高的计算成本,并可能导致次优搜索结果。

四、参考文献

[1] Iandola F N, Han S, Moskewicz M W, et al. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size[J]. arXiv preprint arXiv:1602.07360, 2016.

[2] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[J]. Advances in neural information processing systems, 2012, 25.

[3] Gholami A, Kwon K, Wu B, et al. Squeezenext: Hardware-aware neural network design[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops. Salt Lake City: IEEE, 2018: 1638-1647.

[4] Howard A G, Zhu M, Chen B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications[J]. arXiv preprint arXiv:1704.04861, 2017.

[5] Sandler M, Howard A, Zhu M, et al. Mobilenetv2: Inverted residuals and linear bottlenecks[C]. Proceedings of the IEEE conference on computer vision and pattern recognition. Salt Lake City: IEEE, 2018: 4510-4520.

[6] Zhang X, Zhou X, Lin M, et al. Shufflenet: An extremely efficient convolutional neural network for mobile devices[C]. Proceedings of the IEEE conference on computer vision and pattern recognition. Salt Lake City: IEEE, 2018: 6848-6856.

[7] Ma N, Zhang X, Zheng H T, et al. Shufflenet v2: Practical guidelines for efficient cnn architecture design[C]. Proceedings of the European conference on computer vision. Munich: Springer, 2018: 116-131.

[8] 毕鹏程, 罗健欣, 陈卫卫. 轻量化卷积神经网络技术研究[J]. 计算机工程与应用, 2019,55(16):25-35. DOI:10.3778/j.issn.1002-8331.1903-0340.

[9] Singh P, Verma V K, Rai P, et al. Hetconv: Heterogeneous kernel-based convolutions for deep cnns[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 4835-4844.

[10] Chen Y, Fan H, Xu B, et al. Drop an octave: Reducing spatial redundancy in convolutional neural networks with octave convolution[C]. Proceedings of the IEEE/CVF International Conference on Computer Vision. Long Beach: IEEE, 2019: 3435-3444.

[11] Wang X, Stella X Y. Tied block convolution: leaner and better cnns with shared thinner filters[J]. arXiv preprint arXiv:2009.12021, 2020, 5.

[12] Zhong J, Chen J, Mian A. DualConv: Dual Convolutional Kernels for Lightweight Deep Neural Networks[J]. IEEE Transactions on Neural Networks and Learning Systems, 2022.

[13] 姚潇, 史叶伟, 霍冠英, 等. 基于神经网络结构搜索的轻量化网络构建[J]. 模式识别与人工智能,2021,34(11):1038-1048. DOI:10.16451/j.cnki.issn1003-6059.202111007.

[14] Pham H, Guan M, Zoph B, et al. Efficient neural architecture search via parameters sharing[C]. International conference on machine learning. Long Beach: PMLR, 2018: 4095-4104.

[15] 郝立扬. 基于量化卷积神经网络的模型压缩方法研究[D].成都: 电子科技大学,2020.DOI:10.27005/d.cnki.gdzku.2020.003279.

[16] Zhuang B, Shen C, Tan M, et al. Towards effective low-bitwidth convolutional neural networks[C]. Proceedings of the IEEE conference on computer vision and pattern recognition. Salt Lake City: IEEE, 2018: 7920-7928.

[17] Fan A, Stock P, Graham B, et al. Training with quantization noise for extreme model compression[J]. arXiv preprint arXiv:2004.07320, 2020.

[18] Choi J, Wang Z, Venkataramani S, et al. Pact: Parameterized clipping activation for quantized neural networks[J]. arXiv preprint arXiv:1805.06085, 2018.

[19] Jung S, Son C, Lee S, et al. Learning to quantize deep networks by optimizing quantization intervals with task loss[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 4350-4359.

[20] Steven K Esser, Jeffrey L McKinstry, Deepika Bablani, Rathinakumar Appuswamy, and Dharmendra S Modha. Learned step size quantization.arXiv preprint arXiv:1902.08153, 2019.

[21] Bhalgat Y, Lee J, Nagel M, et al. Lsq+: Improving low-bit quantization through learnable offsets and better initialization[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops. Long Beach: IEEE, 2020: 696-697.

[22] Banner R, Nahshan Y, Hoffer E, et al. Post-training 4-bit quantization of convolution networks for rapid-deployment. arXiv 2018[J]. arXiv preprint arXiv:1810.05723.

[23] Fang J, Shafiee A, Abdel-Aziz H, et al. Post-training piecewise linear quantization for deep neural networks[C]. European Conference on Computer Vision. Online: Springer, Cham, 2020: 69-86.

[24] Choukroun Y, Kravchik E, Yang F, et al. Low-bit Quantization of Neural Networks for Efficient Inference[C]. ICCV Workshops. Seoul: IEEE, 2019: 3009-3018.

[25] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015, 2(7).

[26] Phuong M, Lampert C. Towards understanding knowledge distillation[C]. International Conference on Machine Learning. Ottawa: PMLR, 2019: 5142-5151.

[27] Ji G, Zhu Z. Knowledge distillation in wide neural networks: Risk bound, data efficiency and imperfect teacher[J]. Advances in Neural Information Processing Systems, 2020, 33: 20823-20833.

[28] Cho J H, Hariharan B. On the efficacy of knowledge distillation[C]. Proceedings of the IEEE/CVF international conference on computer vision. Seoul: IEEE, 2019: 4794-4802.

[29] Cheng X, Rao Z, Chen Y, et al. Explaining knowledge distillation by quantifying the knowledge[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 12925-12935.

[30] Romero A, Ballas N, Kahou S E, et al. Fitnets: Hints for thin deep nets[J]. arXiv preprint arXiv:1412.6550, 2014.

[31] Shen Z, He Z, Xue X. Meal: Multi-model ensemble via adversarial learning[C]. Proceedings of the AAAI Conference on Artificial Intelligence. Hawaii: AAAI, 2019, 33(01): 4886-4893.

[32] Mirzadeh S I, Farajtabar M, Li A, et al. Improved knowledge distillation via teacher assistant[C]. Proceedings of the AAAI Conference on Artificial Intelligence. New York: IAAA, 2020, 34(04): 5191-5198.

[33] Xu G, Liu Z, Li X, et al. Knowledge distillation meets self-supervision[C]. European Conference on Computer Vision. Online: Springer, Cham, 2020: 588-604.

[34] Y . LeCun, J. S. Denker, and S. A. Solla, “Optimal brain damage,” in Proc. Adv. Neural Inf. Process. Syst. (NeurIPS), 1990, pp. 598–605.

[35] Srinivas S, Babu R V. Data-free parameter pruning for deep neural networks[J]. arXiv preprint arXiv:1507.06149, 2015.

[36] Han S, Pool J, Tran J, et al. Learning both weights and connections for efficient neural networks[J]. arXiv preprint arXiv:1506.02626, 2015.

[37] Liu Z, Xu J, Peng X, et al. Frequency-domain dynamic pruning for convolutional neural networks[C]. Proceedings of the 32nd International Conference on Neural Information Processing Systems. Montreal: NIPS,2018: 1051-1061.

[38] Dong X, Chen S, Pan S J. Learning to prune deep neural networks via layer-wise optimal brain surgeon[J]. arXiv preprint arXiv:1705.07565, 2017.

[39] Chen C, Tung F, Vedula N, et al. Constraint-aware deep neural network compression[C]. Proceedings of the European Conference on Computer Vision. Munich: Springer, 2018: 400-415.、

[40] Lin T, Stich S U, Barba L, et al. Dynamic model pruning with feedback[J]. arXiv preprint arXiv:2006.07253, 2020.

[41] Li H, Kadav A, Durdanovic I, et al. Pruning filters for efficient convnets[J]. arXiv preprint arXiv:1608.08710, 2016.

[42] Yu R, Li A, Chen C F, et al. Nisp: Pruning networks using neuron importance score propagation[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018: 9194-9203.

[43] He Y, Liu P, Wang Z, et al. Filter pruning via geometric median for deep convolutional neural networks acceleration[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 4340-4349.

[44] Lin M, Ji R, Wang Y, et al. Hrank: Filter pruning using high-rank feature map[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 1529-1538.

[45] Hu H, Peng R, Tai Y W, et al. Network trimming: A data-driven neuron pruning approach towards efficient deep architectures[J]. arXiv preprint arXiv:1607.03250, 2016.

[46] Lee N, Ajanthan T, Torr P H S. Snip: Single-shot network pruning based on connection sensitivity[J]. arXiv preprint arXiv:1810.02340, 2018.

[47] Wen W, Wu C, Wang Y, et al. Learning structured sparsity in deep neural networks[J]. Advances in neural information processing systems, 2016, 29: 2074-2082.

[48] Liu Z, Li J, Shen Z, et al. Learning efficient convolutional networks through network slimming[C]. Proceedings of the IEEE international conference on computer vision. Venice: IEEE, 2017: 2736-2744.

[49] Zhao C, Ni B, Zhang J, et al. Variational convolutional neural network pruning[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 2780-2789.

[50] Huang Z, Wang N. Data-driven sparse structure selection for deep neural networks[C]. Proceedings of the European conference on computer vision. Munich: Springer, 2018: 304-320.

[51] Lin S, Ji R, Yan C, et al. Towards optimal structured cnn pruning via generative adversarial learning[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 2790-2799.

[52] Lemaire C, Achkar A, Jodoin P M. Structured pruning of neural networks with budget-aware regularization[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 9108-9116.

[53] Wang Y, Zhang X, Xie L, et al. Pruning from scratch[C]. Proceedings of the AAAI Conference on Artificial Intelligence. New York: AAAI, 2020, 34(07): 12273-12280.

[54] Frankle J, Carbin M. The lottery ticket hypothesis: Finding sparse, trainable neural networks[J]. arXiv preprint arXiv:1803.03635, 2018.

[55] Liu Z, Mu H, Zhang X, et al. Metapruning: Meta learning for automatic neural network channel pruning[C]. Proceedings of the IEEE/CVF International Conference on Computer Vision. Seoul: IEEE, 2019: 3296-3305.

[56] He Y, Lin J, Liu Z, et al. Amc: Automl for model compression and acceleration on mobile devices[C]. Proceedings of the European conference on computer vision. Munich: Springer, 2018: 784-800.

[57] Lin M, Ji R, Zhang Y, et al. Channel pruning via automatic structure search[J]. arXiv preprint arXiv:2001.08565, 2020.

[58] Guo S, Wang Y, Li Q, et al. Dmcp: Differentiable markov channel pruning for neural networks[C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 1539-1547.

推荐专栏

🔥 手把手实现Image captioning

💯CNN模型压缩

💖模式识别与人工智能(程序与算法)

🔥FPGA—Verilog与Hls学习与实践

💯基于Pytorch的自然语言处理入门与实践

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

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

相关文章

【算法】最小生成树——普利姆 (Prim) 算法

目录 1.概述2.代码实现2.1.邻接矩阵存储图2.2.邻接表存储图2.3.测试 3.应用 1.概述 &#xff08;1&#xff09;在一给定的无向图 G (V, E) 中&#xff0c;(u, v) 代表连接顶点 u 与顶点 v 的边&#xff0c;而 w(u, v) 代表此边的权重&#xff0c;若存在 T 为 E 的子集且为无循…

湖科大计网:应用层

一、应用层概述 交互&#xff0c;实现特定问题&#xff01; 二、客户与服务器模型 一、C/S 客户/服务器方式 服务与被服务的关系。 二、P2P方式 对等方式 P2P方式是对等的&#xff0c;没有固定的服务器。 三、DNS域名系统 DNS&#xff08;Domain Name System&#xff09; 一、域…

2018年计网408

第33题 下列 TCP/P应用层协议中, 可以使用传输层无连接服务的是()A. FTPB. DNSC. SMTPD. HTTP 本题考察TCP/IP体系结构中&#xff0c;应用层常用协议所使用的运输层服务。 如图所示。这是TCP/IP体系结构中常见应用层协议各自所使用的运输层端口,。在这些应用层协议中&#x…

Vue Router的使用

Vue.js是一个流行的JavaScript框架&#xff0c;用于开发单页面应用程序。Vue提供了一个强大的路由系统&#xff0c;可以帮助我们管理应用程序中的不同页面。在本文中&#xff0c;我们将详细讲解Vue路由的使用方法。 目录 1. 安装Vue Router2. 创建路由实例3. 配置路由4. 在模板…

关闭bitlocker加密

windows11的笔记本电脑买回来发现分驱都处于bitlocker状态&#xff0c;上网上搜索都是说进入控制面板的安全项进行关闭&#xff0c;包括去搜索栏搜索“管理 BitLocker”&#xff0c;对搜索出来的项打开&#xff0c;经过试验&#xff0c;它们进入的是同一个位置&#xff0c;只有…

【docker】虚拟化和docker容器概念

基础了解 IAAS&#xff1a; 基础设施服务&#xff0c;&#xff08;只提供基础设施&#xff0c;没有系统&#xff09; **SAAS&#xff1a; ** 软件即服务&#xff0c;&#xff08;提供基础设施和系统&#xff09; PAAS&#xff1a; 平台即服务&#xff0c;&#xff08;提供基…

SwiftUI 如何动态开始和停止播放永久重复(repeatForever)动画

0. 功能需求 在 SwiftUI 丰富多彩的动画世界中,我们有时希望可以随意开始和停止永久循环(repeatForever)的动画,不过这时往往会产生错误的动画“叠加”效果。 从上图可以看到:虽然我们希望密码输入框背景只在用户输入密码时才发生闪烁,但顶部的密码输入框随着不断输入其…

Linux02 VIM编辑器

Linux02 VIM编辑器 基本上 vi/vim 共分为三种模式&#xff0c; 分别是命令模式&#xff08;Command mode&#xff09;&#xff0c;输入模式&#xff08;Insert mode&#xff09;和底线命令模式&#xff08;Last line mode&#xff09;。 三种状态进行切换 插入模式&#xff1a…

Java入门篇 之 内部类

本篇碎碎念&#xff1a;本篇没有碎碎念&#xff0c;想分享一段话&#xff1a; 你不笨&#xff0c;你只是需要时间&#xff0c;耐心就是智慧&#xff0c;不见得快就好&#xff0c;如果方向都不对&#xff0c;如果心术不正&#xff0c;如果德不配位&#xff0c;快就是对自己天分的…

【数值计算方法】矩阵特征值与特征向量的计算(一):Jacobi 旋转法及其Python实现

文章目录 一、Jacobi 旋转法1. 基本思想2. 计算过程演示3. 注意事项 二、Python实现迭代过程&#xff08;调试&#xff09; 矩阵的特征值&#xff08;eigenvalue&#xff09;和特征向量&#xff08;eigenvector&#xff09;在很多应用中都具有重要的数学和物理意义。Jacobi 旋转…

六、流量监管、流量整形

流量监管、流量整形 流量监管、流量整形1.1.定义1.2.简单流分类应用场景举例1.3.简单流分类的配置1.4.复杂流分类1.5.复杂流分类在产品中的实现 ————————————————— 流量监管、流量整形 当报文的发送速率大于接收速率&#xff0c;或者下游设备的接口速率小于…

GitHub 2023报告-开源和AI的现状

GitHub 2023报告-开源和AI的现状 深入探讨人工智能如何与开源互动&#xff0c;以及未来几年可能出现的趋势。 背景介绍 2023年&#xff0c;开源已成为全球软件开发的标准。无论是大公司还是小团队&#xff0c;都广泛使用开源技术进行项目开发。此外&#xff0c;随着机器学习和…

【Java】java | CacheManager | redisCacheManager

一、说明 1、查询增加缓存&#xff0c;使用Cacheable注解 2、项目中已经用到了ehcache&#xff0c;现在需求是两个都用 二、备份配置 1、redisConfig增加代码 Bean("redisCacheManage")Primarypublic CacheManager redisCacheManager(RedisConnectionFactory fact…

CKD TransBTS:用于脑肿瘤分割的具有模态相关交叉注意的临床知识驱动混合转换器

CKD-TransBTS: Clinical Knowledge-Driven Hybrid Transformer With Modality-Correlated Cross-Attention for Brain Tumor Segmentation CKD TransBTS&#xff1a;用于脑肿瘤分割的具有模态相关交叉注意的临床知识驱动混合转换器背景贡献实验方法how radiologists diagnose b…

【19年扬大真题】已知a数组int a[ ]={1,2,3,4,5,6,7,8,9,10},编写程序,求a数组中偶数的个数和偶数的平均值

【18年扬大真题】 已知a数组int a[ ]{1,2,3,4,5,6,7,8,9,10}&#xff0c;编写程序&#xff0c;求a数组中偶数的个数和偶数的平均值 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int os 0;//偶数个数int sum 0;//偶数和float ave 0;//偶数平均值for (int i 0;i <…

关于2023年11月25日PMI认证考试准考信下载及考场规定等事项通知

各位考生&#xff1a;为保证参加2023年11月25日PMI项目管理资格认证考试的每位考生都能顺利进入考场参加考试&#xff0c;请完整阅读本通知内容。 一、关于准考信下载为确保您顺利进入考场参加11月份考试&#xff0c;请及时登录本网站个人系统下载并打印准考信&#xff0c;准考…

Google codelab WebGPU入门教程源码<6> - 使用计算着色器实现计算元胞自动机之生命游戏模拟过程(源码)

对应的教程文章: https://codelabs.developers.google.com/your-first-webgpu-app?hlzh-cn#7 对应的源码执行效果: 对应的教程源码: 此处源码和教程本身提供的部分代码可能存在一点差异。点击画面&#xff0c;切换效果。 class Color4 {r: number;g: number;b: number;a…

论文阅读:“基于特征检测与深度特征描述的点云粗对齐算法”

文章目录 摘要简介相关工作粗对齐传统的粗对齐算法基于深度学习的粗对齐算法 特征检测及描述符构建 本文算法ISS 特征检测RANSAC 算法3DMatch 算法 实验结果参考文献 摘要 点云对齐是点云数据处理的重要步骤之一&#xff0c;粗对齐则是其中的难点。近年来&#xff0c;基于深度…

【机器学习Python实战】线性回归

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习python实战 欢迎订阅&#xff01;后面的内容会越来越有意思~ ⭐内容说明&#xff1a;本专栏主要针对机器学习专栏的基础内容进行python的实现&#xff0c;部分…

C++ Qt 学习(十):Qt 其他技巧

1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…