深度模型压缩研究回顾

深度模型压缩研究回顾

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

目录

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

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

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.mfbz.cn/a/162270.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统中sh脚本编写

文章目录 Linux系统中sh脚本编写1.在编写sh脚本前了解一下基本语法1.1 if语句单分支双分支多分枝 1.2 for语法 2. 自己写的demo &#xff1a;自动部署前端项目 &#xff08;自动拉取代码&#xff0c;打包&#xff0c;部署nginx&#xff09;3.定时执行 shell脚本 Linux系统中sh脚…

性能分析工具的使用

文章目录 1. 数据库服务器调优的步骤2. 查看系统性能参数3. 统计SQL的查询成本&#xff1a;last_query_cost4. 定位执行慢的SQL&#xff1a;慢查询日志4.1 开启slow_query_log4.2 修改long_query_time阈值4.3 查看慢查询数目4.4 慢查询日志分析工具&#xff1a;mysqldumpslow 5…

work环境配置

1.计算机右键找到属性 2.配置环境变量 3.新加环境变量 4.修改环境变量path .bat文件内容 php ApplicationsChatstart_register.php ApplicationsChatstart_gateway.php ApplicationsChatstart_businessworker.php pause

App测试入门

App测试基础知识 App测试&#xff0c;是指对移动应用软件&#xff08;如手机app、平板app等&#xff09;进行全面和系统的测试&#xff0c;以确保其功能、性能、安全性、稳定性、兼容性等方面能满足用户的使用需求和期望。 App常见运行系统 IOS系统&#xff1a; IOS系统是苹果公…

MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考

自从2023年3月左右&#xff0c;chatgpt火热起来之后&#xff0c;我把关注的一些知乎帖子都记录到了这个markdown里面&#xff0c;&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/large-language-model-note &#xff0c;从2023年3月左右到现…

编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。

编写程序&#xff0c;要求输入x的值&#xff0c;输出y的值。分别用&#xff08;1&#xff09;不嵌套的if语句&#xff08;2&#xff09;嵌套的if语句&#xff08;3&#xff09;if-else语句&#xff08;4&#xff09;switch语句。 选择结构是编程语言中常用的一种控制结构&…

OpenGL 的学习之路-4(变换)

三大变换&#xff1a;平移、缩放、旋转&#xff08;通过这三种变换&#xff0c;可以将图像移动到任意位置&#xff09; 其实&#xff0c;这背后对应的数学在 闫令琪 图形学课程 中有过一些了解&#xff0c;所以&#xff0c;理解起来也不觉得很困难。看程序吧。 1.画三角形&am…

量化交易:公司基本面的量化

公司的基本面因素一直具备滞后性&#xff0c;令基本面的量化出现巨大困难。而从上市公司的基本面因素来看&#xff0c;一般只有每个季度的公布期才会有财务指标的更新&#xff0c;而这种财务指标的滞后性对股票表现是否有影响呢&#xff1f;如何去规避基本面滞后产生的风险呢&a…

网站SEO优化

网站SEO优化 浏览722 一、合理的title、description、keywords 搜索对着三项的权重逐个减小&#xff0c;title值强调重点即可&#xff1b;description把页面内容高度概括&#xff0c;不可过分堆砌关键词&#xff1b;keywords列举出重要关键词。 1、title title&#xff0c;…

【教3妹学编程-java基础6】详解父子类变量、代码块、构造函数执行顺序

-----------------第二天------------------------ 本文先论述父子类变量、代码块、构造函数执行顺序的结论&#xff0c; 然后通过举例论证&#xff0c;接着再扩展&#xff0c;彻底搞懂静态代码块、动态代码块、构造函数、父子类、类加载机制等知识体系。 温故而知新&#xff…

ZYNQ_project:LCD

模块框图&#xff1a; 时序图&#xff1a; 代码&#xff1a; /* // 24h000000 4324 9Mhz 480*272 // 24h800000 7084 33Mhz 800*480 // 24h008080 7016 50Mhz 1024*600 // 24h000080 4384 33Mhz 800*480 // 24h800080 1018 70Mhz 1280*800 */ module rd_id(i…

【MySQL】InnoDB和MyISAM区别详解(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…

OpenCV C++ 图像 批处理 (批量调整尺寸、批量重命名)

文章目录 图像 批处理(调整尺寸、重命名)图像 批处理(调整尺寸、重命名) 拿着棋盘格,对着相机变换不同的方角度,采集十张以上(以10~20张为宜);或者棋盘格放到桌上,拿着相机从不同角度一通拍摄。 以棋盘格,第一个内焦点为坐标原点,便于计算世界坐标系下三维坐标; …

【代码随想录】算法训练计划24

回溯模板&#xff1a; 1、77. 组合 题目&#xff1a; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 思路&#xff1a; 很经典的回溯&#xff0c;也是回溯中模板的经典应用&#xff0c;因而是回溯中的简单题…

97.qt qml-自定义Table之实现ctrl与shift多选

我们之前实现了:93.qt qml-自定义Table优化(新增:水平拖拽/缩放自适应/选择使能/自定义委托)-CSDN博客 实现选择使能的时候,我们只能一行行去点击选中,非常麻烦,所以本章我们实现ctrl多选与shift多选、 所以在Table控件新增两个属性: 1.实现介绍 ctrl多选实现原理:当我…

Redis新操作

1.Bitmaps 1.1概述 Bitmaps可以对位进行操作&#xff0c;实际上它就是一个字符串&#xff0c;可以将Bitmaps想象为一个以位为单位的数组&#xff0c;数组中的每个元素只能存储0或者1&#xff0c;数组的下标在Bitmaps被称为偏移量。 setbit key offset value&#xff1a;设置o…

Filter和ThreadLocal结合存储用户id信息

ThreadLocal并不是一个Thread&#xff0c;而是Thread的局部变量。当使用ThreadLocal维护变量时&#xff0c;ThreadLocal为每个使用该变量的线程提供独立的变量副本&#xff0c;所以每一个线程都可以独立地改变自己的副本&#xff0c;而不会影响其它线程所对应的副本。ThreadLoc…

M2 Mac Xcode编译报错 ‘***.framework/‘ for architecture arm64

In /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP(anim_decode.o), building for iOS Simulator, but linking in object file built for iOS, file /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP for architecture arm64 这是我当时编译模拟器时报…

cesium 重点区域大屏展示效果(加载行政区划)

cesium 重点区域大屏展示效果(配色不太好看,主要看思路和方法) 1、实现思路(文张最后有**源码 **) 1、第一步将cesium背景调成透明关掉光照大气等效果相关属性都在“viewer.scene”中 2、第二步添加背景图片此背景图片直接用html加css就可以完成 3、第三步添加蒙版效果也…

汇编基础知识

1.1 机器语言 机器语言就是一些二进制代码&#xff0c;存放在内存中。它是机器指令的集合&#xff0c;所谓机器指令就是机器能够正确执行的命令 1.2 汇编语言的产生 1.汇编语言的主体是汇编指令 2.汇编指令实际上就是机器指令的助记符。它们的唯一区别在于书写方式上 寄存器…
最新文章