CN115759192A - 一种神经网络加速方法、装置、设备、芯片及存储介质 - Google Patents
一种神经网络加速方法、装置、设备、芯片及存储介质 Download PDFInfo
- Publication number
- CN115759192A CN115759192A CN202111010115.5A CN202111010115A CN115759192A CN 115759192 A CN115759192 A CN 115759192A CN 202111010115 A CN202111010115 A CN 202111010115A CN 115759192 A CN115759192 A CN 115759192A
- Authority
- CN
- China
- Prior art keywords
- ksp
- neural network
- convolution kernel
- network structure
- convolution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 265
- 238000000034 method Methods 0.000 title claims abstract description 105
- 230000001133 acceleration Effects 0.000 title claims abstract description 36
- 238000003860 storage Methods 0.000 title claims abstract description 21
- 239000011159 matrix material Substances 0.000 claims abstract description 117
- 238000007906 compression Methods 0.000 claims abstract description 104
- 238000013138 pruning Methods 0.000 claims abstract description 100
- 230000006835 compression Effects 0.000 claims abstract description 98
- 230000015654 memory Effects 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 15
- 238000009826 distribution Methods 0.000 claims description 6
- 238000001914 filtration Methods 0.000 claims description 6
- 239000000126 substance Substances 0.000 claims description 6
- 238000013527 convolutional neural network Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 24
- 239000013598 vector Substances 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 238000012805 post-processing Methods 0.000 description 12
- 238000012549 training Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 8
- 235000019580 granularity Nutrition 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000011524 similarity measure Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000005520 cutting process Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013140 knowledge distillation Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000011002 quantification Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003042 antagnostic effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 210000001525 retina Anatomy 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Image Analysis (AREA)
Abstract
本申请实施例公开了一种神经网络加速方法、装置、设备、芯片及存储介质,该方法包括:对原始神经网络结构中的至少一种卷积核尺寸分别进行核稀疏模式KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵;基于至少一组KSP集合,确定原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵;利用KSP掩码矩阵对原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。这样,通过引入基于KSP的模式剪枝来限制整个神经网络中可以出现的KSP个数,不仅降低了运算量,增强了稀疏神经网络的表达能力,而且还提升了稀疏神经网络的压缩比和精度。
Description
技术领域
本申请涉及神经网络技术领域,尤其涉及一种神经网络加速方法、装置、设备、芯片及存储介质。
背景技术
近年来,深度学习(Deep Learning,DL)的崛起不断推动着人工智能的发展。而以卷积神经网络为代表的DL算法在计算机视觉、自动驾驶等领域中已被广泛应用于分类、识别、降噪、超分(Super-resolution)等任务,然而其复杂的结构导致即使在推理时也需要占用大量的功耗和计算资源,严重限制了此类技术在功耗和资源受限的移动和嵌入式平台上的部署,因而在此之前需要对其进行一定的压缩。
目前,一些主流的神经网络压缩方法包括有量化(Quantization)、剪枝(Pruning)、知识蒸馏(Knowledge Distillation)、神经网络结构搜索(NeuralArchitecture Search,NAS)等等。其中,剪枝是指从原始神经网络中系统性地剪去部分不重要的权重而尽量少地损失精度,以减少神经网络的参数量,来达成降低各项资源占用的益处。虽然目前已经存在一些剪枝方式,但是现有的这些剪枝方式要么运算量大,费时费力;要么灵活性差,造成精度损失。
发明内容
本申请提出一种神经网络加速方法、装置、设备、芯片及存储介质,不仅可以降低运算量,而且还可以提升压缩比和精度。
为达到上述目的,本申请的技术方案是这样实现的:
第一方面,本申请实施例提供了一种神经网络加速方法,该方法包括:
对原始神经网络结构中的至少一种卷积核尺寸分别进行核稀疏模式KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵;
基于所述至少一组KSP集合,确定所述原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵;
利用所述KSP掩码矩阵对所述原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。
第二方面,本申请实施例提供了一种神经网络加速装置,该神经网络加速装置包括统计单元、分配单元和剪枝单元;其中,
所述统计单元,配置为对原始神经网络结构中的至少一种卷积核尺寸分别进行KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵;
所述分配单元,配置为基于所述至少一组KSP集合,确定所述原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵;
所述剪枝单元,配置为利用所述KSP掩码矩阵对所述原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行如第一方面所述的方法。
第四方面,本申请实施例提供了一种芯片,该芯片包括存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,使得安装有所述芯片的电子设备执行如第一方面所述的方法。
第五方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现如第一方面所述的方法。
本申请实施例所提供的一种神经网络加速方法、装置、设备、芯片及存储介质,通过对原始神经网络结构中的至少一种卷积核尺寸分别进行KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵;基于至少一组KSP集合,确定原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵;利用KSP掩码矩阵对原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。这样,通过引入基于KSP的模式剪枝来限制整个神经网络中可以出现的KSP个数,不仅降低了运算量,增强了稀疏神经网络的表达能力,而且还提升了稀疏神经网络的压缩比和精度。
附图说明
图1为相关技术提供的一种神经网络应用权重剪枝的流程示意图;
图2为相关技术提供的一种神经网络中的权重结构示意图;
图3为相关技术提供的一种神经网络应用通道或滤波器剪枝的流程示意图;
图4为相关技术提供的一种神经网络的一层权重中的权重条示意图;
图5为相关技术提供的一种单个滤波器的KSP示意图;
图6为相关技术提供的一种神经网络应用条状剪枝的流程示意图;
图7为本申请实施例提供的一种神经网络加速方法的流程示意图;
图8为本申请实施例提供的一种神经网络中各个卷积层内部所有卷积核的平均范数示意图;
图9为本申请实施例提供的一种神经网络加速方法的详细流程示意图;
图10为本申请实施例提供的一种神经网络加速装置的组成结构示意图;
图11为本申请实施例提供的一种电子设备的具体硬件结构示意图;
图12为本申请实施例提供的一种芯片的组成结构示意图;
图13为本申请实施例提供的一种芯片的具体硬件结构示意图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
近年来,随着计算机技术的发展,利用神经网络的机器学习成为了研究热点,尤其是深度学习(Deep Learning,DL)是机器学习领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(Artificial Intelligence,AI)。其中,卷积神经网络(Convolutional Neural Network,CNN)是神经网络的一种,其是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Network,FNN),是深度学习的代表算法之一。卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Network,SIANN)”。
在本申请实施例中,以CNN等神经网络(Neural Network,NN)为代表的DL算法在机器视觉、自动驾驶等领域中已被广泛应用于分类、识别、降噪、超分(Super-resolution)等任务,然而其复杂的结构导致即使在推理时也需占用大量的功耗和计算资源,如中央处理器(Central Processing Unit,CPU)、内存、存储空间等,严重限制了此类技术在功耗和资源受限的移动和嵌入式平台上的部署,因而在此之前必须对其进行一定的压缩。
当前一些主流的NN压缩方法包括有量化(Quantization)、剪枝(Pruning)、知识蒸馏(Knowledge Distillation)、神经网络结构搜索(Neural Architecture Search,NAS)等。其中,剪枝是指从原始NN中系统性地剪去部分不重要的权重而尽量少地损失精度,以减少NN的参数量,从而达成降低各项资源占用的益处。根据被剪枝的最小单位,剪枝又可粗略划分为非结构化剪枝和结构化剪枝两大类,而近年来亦有学者提出融合两类方法的新方案,下面将结合三种方案针对已有的剪枝方式进行相关技术方案描述。
第一种方案:采用非结构化剪枝方式,以单个权重为最小单位,通过一定机制一次性或迭代式地识别并剪去对NN表达能力影响不大的部分权重,然后对生成的稀疏NN进行一定的后处理步骤以恢复和/或提升精度,从而减少NN中非零权重个数,在经过一定优化(例如支持稀疏矩阵存储和运算加速)的平台上可降低计算量和/或存储空间、内存空间的占用。在AI领域,可通称为权重剪枝(Weight Pruning,WP)。
参见图1,其示出了本申请实施例提供的一种神经网络应用权重剪枝的流程示意图。如图1所示,该流程可以包括:
S101:获取原始神经网络。
S102:识别并剪去不重要的权重,生成稀疏神经网络。
S103:对稀疏神经网络进行后处理。
S104:判断精度是否达标。
S105:判断压缩比是否达标。
需要说明的是,对于S104来说,如果判断结果为否,即精度不达标,那么返回执行S103;如果判断结果为是,即精度达标,那么执行S105,进一步判断压缩比是否达标。对于S105来说,如果判断结果为否,即压缩比不达标,那么返回执行S102;如果判断结果为是,即压缩比达标,那么结束流程。
如此,对于第一种方案而言,剪去权重的位置完全是由在训练数据集上的收敛结果决定,难以直接进行事先控制,因此在其生成的稀疏NN中,被剪权重的位置较为随机,不能充分利用近年得到广泛应用的CNN所具备的结构化优势,从而难以系统性地压缩参数存储所占空间。另一方面,在应用其生成的稀疏NN实施推理时,若硬件或软件平台不支持稀疏卷积运算加速,则只能回退到折衷方式,将剪去的权重置零,视同密集NN进行运算,造成无法减少运算量。而若要开发该种运算加速器,则往往需要针对各个运行平台单独定制,费时费力。
第二种方案:采用结构化剪枝方式,以CNN为原始神经网络,并以CNN中的通道(Channel)、滤波器(Filter)等结构体为最小单位,通过一定机制一次性或迭代式地识别并剪去对CNN表达能力影响不大的部分结构体,然后对生成的稀疏NN进行一定的后处理步骤以恢复和/或提升精度,从而简化NN结构,降低计算量、运行内存和存储空间消耗。在AI领域,可通称为通道剪枝(Channel Pruning,CP)或滤波器剪枝(Filter Pruning,FP)。需要注意的是,CP与FP是等价的,因剪去某层的滤波器等价于剪去下一层(如有)的相应通道。
一般来说,对于结构体而言,在AI领域,CNN中某层的通道数对应于该层的输入(同时对应上一层的输出滤波器数),滤波器数对应于该层的输出。如图2所示,以第i层为例,当第i层权重的维度记为(hi,wi,ci,ni)时,ci为第i层的输入通道数,ni为第i层的输出滤波器数,而hi和wi分别为第i层卷积核的高和宽。
参见图3,其示出了本申请实施例提供的一种神经网络应用通道剪枝或滤波器剪枝的流程示意图。如图3所示,该流程可以包括:
S301:获取原始神经网络。
S302:识别并剪去不重要的结构体,生成稀疏神经网络。
S303:对稀疏神经网络进行后处理。
S304:判断精度是否达标。
S305:判断压缩比是否达标。
需要说明的是,对于S304来说,如果判断结果为否,即精度不达标,那么返回执行S303;如果判断结果为是,即精度达标,那么执行S305,进一步判断压缩比是否达标。对于S305来说,如果判断结果为否,即压缩比不达标,那么返回执行S302;如果判断结果为是,即压缩比达标,那么结束流程。
如此,对于第二种方案而言,在继承第一种方案的思想上,利用了CNN的结构化优势,因其冗余滤波器(以及输入下一层的通道中与该滤波器相连的通道,如有)被剪枝后可通过简单修改NN运算图定义的参数(例如将某层原始定义的32通道修改为24)而直接删去,无需软硬件平台特殊优化即可实现参数量的压缩和计算量的降低。然而,以滤波器或通道为最小单位进行的剪枝较为粗放,模型表达能力损失较大,导致在相同的剪枝比例下其精度通常低于第一种方案,从而限制了其在对精度有较高要求场景(例如像素级别的去噪、超分等)的应用。
第三种方案:采用半结构化剪枝方式,仍以CNN为原始神经网络,并以颗粒度介于单个权重与完整结构体之间的权重条为最小单位进行剪枝并调优。具体地,如图4所示,若将CNN中第i层的权重记为(hi,wi,ci,ni),分别表示该层卷积核的高、卷积核的宽、输入通道数和输出滤波器数,则每一个滤波器(如图4中的每个大长方体)具有维度为(hi,wi,ci)的权重。假定在一个滤波器中,沿着c轴方向每个维度为(1,1,ci)的一系列权重均构成一个权重条,那么每层权重共含有hi×wi×ni个权重条。这样,对于每个滤波器,原本为正方形的密集卷积核可能变为不规则形状的稀疏卷积核,该滤波器内部每个通道均会采用相同的(卷积)核稀疏模式(Kernel Sparsity Pattern,KSP),但是不同滤波器的KSP可能不同。在本申请实施例中,可称其为条状剪枝(Stripe Pruning,SP)。需要说明的是,如果某个滤波器中所有权重条都很重要,没有被剪枝,那么卷积核仍为密集卷积核。本申请实施例将其视为一种特殊的稀疏模式,对密集情况可沿用所有对稀疏卷积核的处理方式,无需区别对待。
对于KSP而言,参见图5,这里示出了在图4中对应为单个滤波器横向的每个hi×wi小正方形中分别有哪些权重被保留或剪去。其中,(a)为单个滤波器,(b)为该滤波器所采用的KSP,深灰色填充部分为保留的权重。需注意的是,在图5中,为了方便理解,滤波器旋转90°,c轴垂直于纸面。
参见图6,其示出了本申请实施例提供的一种神经网络应用条状剪枝的流程示意图。如图6所示,该流程可以包括:
S601:获取原始神经网络。
S602:识别并剪去不重要的权重条,生成稀疏神经网络。
S603:对稀疏神经网络进行后处理。
S604:判断精度是否达标。
S605:判断压缩比是否达标。
需要说明的是,对于S604来说,如果判断结果为否,即精度不达标,那么返回执行S603;如果判断结果为是,即精度达标,那么执行S605,进一步判断压缩比是否达标。对于S605来说,如果判断结果为否,即压缩比不达标,那么返回执行S602;如果判断结果为是,即压缩比达标,那么结束流程。
如此,对于第三种方案而言,创造性地在第一种方案和第二种方案之间取得了剪枝颗粒度和精度上的一种平衡,生成的稀疏NN仍具有一定程度的结构性,相比第一种方案具备一定的压缩潜力,而精度又高于第二种方案。然而,即使是在同一层权重中,已经可以存在至多种不同的KSP,至于实际出现多少种,则又将取决于原始NN的权重在训练数据集上的收敛结果,如此多的排列组合仍然和第一种方案一样难以直接进行事先控制。若要利用其半结构化优势实现优于第一种方案的加速,则必须开发支持任意KSP的稀疏卷积算子,而不能简单地如第二种方案般在NN运算图定义时就剔除冗余权重结构,其开发精力仍将显著高于第二种方案;如果不进行稀疏算子的开发,那么与第一种方案一样无法减少任何资源占用。另一方面,第三种方案还要求在同一滤波器中使用相同的KSP以形成条状的剪枝单位,其灵活性显著低于第一种方案,可能造成精度损失。
基于此,本申请实施例提供了一种神经网络加速方法,考虑到硬件上的加速性能、实现难度以及一般情况下CNN权重的统计规律,可以引入模式剪枝(Pattern Pruning,PP)来限制整个NN中可以出现的KSP数量,并去除SP中同一个滤波器必须使用同一KSP的限制,如此不仅有利于运算加速器/支持库的开发,降低了运算量,增强了稀疏神经网络的表达能力,而且还提升了稀疏神经网络的压缩比和精度。
下面将结合附图对本申请各实施例进行详细说明。
本申请的一实施例中,参见图7,其示出了本申请实施例提供的一种神经网络加速方法的流程示意图。如图7所示,该方法可以包括:
S701:对原始神经网络结构中的至少一种卷积核尺寸分别进行核稀疏模式KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵。
需要说明的是,本申请实施例的执行主体是神经网络加速装置,或者集成有该装置的电子设备。其中,电子设备可以是诸如智能手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable MediaPlayer,PMP)、导航装置、可穿戴设备等等,这里不作任何限定。
还需要说明的是,在S701之前,该方法还可以包括:确定原始神经网络结构。
在本申请实施例中,这里所述的原始神经网络结构可以是指卷积神经网络结构。或者,该原始神经网络结构也可以是经过预训练的网络结构,其可以包括多个卷积层,每个卷积层都具有卷积核及其对应的卷积核权重。
具体来说,该原始神经网络结构可以是浮点模型(即参数为浮点数的模型),也可以是任意位宽(例如,比特数(bit)可以是诸如16比特、12比特、11比特、10比特、8比特、7比特、4比特、2比特等)的定点模型、整数模型乃至二值化模型,甚至亦不限制卷积部分的卷积核尺寸、卷积核形状以及具体实现方式等等。这里,具体实现方式包括但不限于用加法替代原始卷积运算中乘法的加法神经网络结构(AdderNet)、残差神经网络(ResNet)、适用移动端的轻量化神经网络(MobileNet)等,以便叠加本申请实施例的神经网络加速方法,可以进一步地达到更好的压缩比和精度。
另外,对于卷积核而言,卷积核的设计实际上是为了在像素层面模拟生物的视网膜对局部特征的感知。其中,卷积核形状可以为正方或非正方形,卷积核尺寸可以表示为m×n,m和n均为大于零的整数。示例性地,m×n通常可以为1×1、3×3、5×5、7×7等较小的数值。需注意的是,本申请实施例中一般使用最常见的3×3尺寸的卷积核,但是并不代表其不适用于其他尺寸或者非正方形的卷积核,这里不作任何限定。
还需要说明的是,对于S701来说,在本申请实施例中,虽然不同层、不同滤波器、不同通道的卷积核在经过训练后都会拥有不同的权重,但是它们之间也存在一些共性,例如,中间位置像素的权重重要性有较大概率会大于边角像素的权重重要性(类比人眼也是关注画面中心的内容远远多过视野边缘)。另外,据统计,如果只考虑各相同尺寸卷积核各个像素位置权重的显著性(例如,绝对值是否大于某个极小数值ε=1e-8,如果大于ε,那么记为1;否则(不足ε),记为0)所得出的KSP,在同一神经网络结构中各个位置的卷积核,绝大多数(例如80-90%)会被数量有限的几种KSP(例如6-8种)包括到,而剩余的极少数卷积核(如有)可以使用上述几种KSP中最接近的来近似,对精度影响不大。示例性地,类比人眼在执行同一任务时,通常对视野各处都会尝试关注近似的特征,例如识别人脸时,在整个视野中都会关注人脸的特征,而不会在某些地方找人脸、别的地方找动物。这样,对每层权重中的每个卷积核均可采用某种KSP作为掩码(soft mask)乘到卷积核上,乘0的权重就等价于被剪枝了。
以图8为例,其示出了本申请实施例提供的一种神经网络中各个卷积层内部所有卷积核的平均范数示意图。如图8所示,该神经网络以超分辨率测试序列(Visual GeometryGroup,VGG)网络为例,也可称为VGG-16网络,其中,16是指这个神经网络中包含16个卷积层和全连接层。这里的范数具体是指L1范数,L1范数表示向量中各个元素绝对值之和。在图8中,颜色越深,权重的数值越大,可见KSP分布具有一定的规律(即中间位置像素的权重重要性有较大概率会大于边角像素的权重重要性)。
也就是说,如果原始神经网络结构中存在多种卷积核尺寸对应的卷积核,那么针对这多种卷积核尺寸可以分别创建相应的KSP集合。具体地,在一些实施例中,所述对原始神经网络结构中的至少一种卷积核尺寸分别进行核稀疏模式KSP统计,确定至少一组KSP集合,可以包括:
基于第一卷积核尺寸,对原始神经网络结构中第一卷积核尺寸对应的所有卷积核进行KSP统计,确定至少一种KSP各自的统计次数;
根据至少一种KSP各自的统计次数,从至少一种KSP中选取预设数量种KSP;
对预设数量种KSP分别进行二值化处理,得到预设数量种KSP掩码矩阵,并将预设数量种KSP掩码矩阵组成第一卷积核尺寸对应的一组KSP集合;
在确定出至少一种卷积核尺寸各自对应的一组KSP集合之后,得到至少一组KSP集合。
在本申请实施例中,第一卷积核尺寸为这至少一种卷积核尺寸的任意一种尺寸。另外,预设数量为正整数,可以用p表示。
进一步地,在一些实施例中,对于预设数量而言,预设数量为预配置参数;或者,预设数量是根据原始神经网络结构的资源占用信息进行分析确定的。也就是说,p可以作为可配置的超参数之一;或者,也可以是根据原始神经网络结构的资源占用信息(例如计算量、参数量和/或内存占用等)进行分析确定的。
这样,针对第一种卷积核尺寸,可以创建其对应的KSP集合,用P={P0,P1,…,Pp-1}表示;其中,Pq(0≤q≤p-1)均为一种二值化(binary)KSP掩码矩阵。如果原始神经网络结构中存在多种尺寸的卷积核,那么每一种尺寸h×w分别建立对应的KSP集合需要注意的是,不同卷积核尺寸对应的KSP集合的元素数量(phw)可以相同,也可以不同,本申请实施例不作具体限定。
可以理解地,在进行KSP统计之前,首先还需要确定每一个卷积核所代表的KSP。在一些实施例中,在对原始神经网络结构中第一卷积核尺寸对应的所有卷积核进行KSP统计之前,该方法还可以包括:
利用预设权重阈值对第一卷积核尺寸对应的所有卷积核中每一卷积核进行权重过滤处理,确定每一卷积核的KSP;
或者,
计算预设KSP模板集合中的各个KSP模板分别与第一卷积核尺寸对应的所有卷积核中每一卷积核之间的相似性度量值,根据所述相似性度量值确定每一卷积核的KSP。
需要说明的是,对于确定每一卷积核所代表的KSP,可以有多种可能的实现方法。例如,在一种可能的实现方式中,可以通过预设权重阈值过滤后得到。具体来说,将该卷积核中每一个权重的绝对值与预设权重阈值进行比较;如果大于预设权重阈值,那么该卷积核的对应权重位置标记为1;如果小于预设权重阈值,那么该卷积核的对应权重位置标记为0;换句话说,这种通过预设权重阈值进行过滤的方式,也可以看作是在一种二值化处理的方式。这里,预设权重阈值为预先设定的一个极小值。示例性地,该极小值可以为1e-8,但是不作任何限定。
在另一种可能的实现方式中,预设KSP模板集合可以为第三方KSP模板集合,在该集合中包括有多个KSP模板。具体来说,可以将每一卷积核与第三方KSP模板集合中的各个KSP模板逐个比较相似性度量值,以确定出每一卷积核的KSP。示例性地,相似性度量值可以是利用欧氏距离、余弦距离、皮尔逊相关系数等计算方法得到。
这里,假定两个向量分别为X=[X1,…,Xn],Y=[Y1,…,Yn],长度均为n;针对X与Y之间的相似性度量值,可以以下述三种计算方法为例进行描述。
欧氏距离(Euclidean Distance)是常见的相似性度量方法,可求两个向量间的距离,取值范围为0至正无穷。显然,如果两个向量间的距离较小,那么向量也肯定更为相似。其相似性度量值的计算如下,
皮尔逊相关系数(Pearson’s correlation coefficient)也是衡量向量相似性的一种方法。其输出范围为-1到+1,0代表无相关性,负值为负相关,正值为正相关。值越接近于+1,说明两个向量越相似。其相似性度量值的计算如下,
其中,μX表示向量X的均值,μY表示向量Y的均值;σX表示向量X的样本方差,σY表示向量Y的样本方差。
余弦距离(Cosine相似度)也是一种相似性度量,其输出范围和皮尔逊相关系数一致,含义也相似。如果值越接近于+1,说明两个向量的夹角角度越接近于0,也就是两个向量越相似。其相似性度量值的计算如下,
进一步地,在确定出每一个卷积核所代表的KSP之后,可以得到至少一种KSP各自的统计次数。在一些实施例中,所述根据至少一种KSP各自的统计次数,从至少一种KSP中选取预设数量种KSP,可以包括:按照至少一种KSP各自的统计次数对所述至少一种KSP进行降序排列,将排序结果中排列在前的预设数量的KSP确定为所述预设数量种KSP。
也就是说,在确定出每一卷积核所代表的KSP之后,可以对原始神经网络结构中第一卷积核尺寸对应的所有卷积核进行KSP统计,进而确定出至少一种KSP各自的统计次数,然后从中选取出现次数最多的p种KSP,以组成该卷积核对应的KSP集合。
S702:基于至少一组KSP集合,确定原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵。
在本申请实施例中,具体来说,所述基于至少一组KSP集合,确定原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵,可以包括:
基于至少一组KSP集合,确定所述原始神经网络结构的第i卷积层中每一卷积核对应的KSP索引值;
根据所述KSP索引值,从第i卷积层中每一卷积核对应的一组KSP集合中查询得到所述第i卷积层中每一卷积核对应的KSP掩码矩阵。
在这里,i为大于或等于零且小于N的整数,N表示原始神经网络结构中的卷积层数量。
需要说明的是,在获取到至少一组KSP集合之后,根据这些KSP集合,可以为每一卷积核分配一个与其实际权重模式相符或者最接近的KSP掩码矩阵,而且所分配的KSP掩码矩阵在对应KSP集合中的索引序号即为KSP索引值。在一种可能的实现方式中,所述基于至少一组KSP集合,确定原始神经网络结构的第i卷积层中每一卷积核对应的KSP索引值,可以包括对原始神经网络结构的第i卷积层中的每一卷积核执行以下步骤:
对所述卷积核进行权重二值化处理,得到所述卷积核的二值化矩阵;
将所述卷积核的二值化矩阵与所述一组KSP集合中的每一KSP掩码矩阵进行比较;
当所述一组KSP集合中存在与所述卷积核的二值化矩阵相符的KSP掩码矩阵时,将所述KSP掩码矩阵的索引序号确定为所述卷积核对应的KSP索引值。
还需要说明的是,在将所述卷积核的二值化矩阵与一组KSP集合中的每一KSP掩码矩阵进行比较之后,还可能出现这一组KSP集合中不存在与该二值化矩阵相符的KSP掩码矩阵的情况。因此,在另一种可能的实现方式中,该方法还可以包括:
当所述一组KSP集合中不存在与所述卷积核的二值化矩阵相符的KSP掩码矩阵时,计算所述卷积核的二值化矩阵与所述一组KSP集合中的每一KSP掩码矩阵之间的相似性度量值;
基于计算出的相似性度量值,确定与所述卷积核的二值化矩阵最相似的KSP掩码矩阵,并将所述最相似的KSP掩码矩阵的索引序号确定为所述卷积核对应的KSP索引值。
也就是说,以第i卷积层为例,首先可以将每一卷积核的权重二值化(例如超过某一权重阈值,标记为1;否则标记为0),这时候卷积核与各个KSP掩码矩阵均为0/1的二值化矩阵;如果某卷积核对应的KSP集合中存在与该卷积核的二值化矩阵相符的KSP掩码矩阵,那么可以将该KSP掩码矩阵的索引序号确定为对应的KSP索引值。如果某卷积核对应的KSP集合中不存在与该卷积核的二值化矩阵相符的KSP掩码矩阵,那么可以计算该卷积核的二值化矩阵与每一种KSP掩码矩阵之间的相似性度量值,例如采用上述的式(1)、式(2)或式(3)所表示的欧氏距离、余弦距离或皮尔逊相关系数的方法求解得到;然后从所得到的一个或多个相似性度量值中选取最优值,即将最相似的KSP掩码矩阵的索引序号确定为对应的KSP索引值。
在这里,最优值具体是指根据与该卷积核的二值化矩阵最相似的KSP掩码矩阵所计算得到相似性度量值。示例性地,对于欧氏距离来说,这时候两个向量间的距离越小意味着两个向量越相似,那么可以从所得到的一个或多个相似性度量值中选取最小值作为最优值;或者,对于余弦距离或皮尔逊相关系数来说,这时候值越接近于+1意味着两个向量越相似,那么可以从所得到的一个或多个相似性度量值中选取最大值作为最优值。
进一步地,以第i卷积层为例,在得到每一个卷积核对应的KSP索引值之后,还可以在内存中存储第i卷积层对应的掩码索引矩阵。在一些实施例中,该方法还可以包括:根据原始神经网络结构的第i卷积层中每一卷积核对应的KSP索引值,组成原始神经网络结构的第i卷积层对应的掩码索引矩阵,并存储掩码索引矩阵。
需要说明的是,本申请实施例可以为每一个卷积核分配一个与其实际权重模式相符或最接近的KSP掩码矩阵,然后将其对应的KSP索引值qcn(0≤qcn≤phw-1,0≤c≤ci-1,0≤n≤ni-1)存储在对于第i卷积层维度为(ci,ni)的、在内存中另行存储的掩码索引矩阵中,形如[[3,2,…,7],[1,0,…,2],…,[5,6,…,4]]。如此,将来在进行运算时,每一个卷积核可以根据其KSP索引值qcn在中查找出对应的二值化的KSP掩码矩阵(用表示)。
S703:利用KSP掩码矩阵对原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。
需要说明的是,确定出每一个卷积核对应的KSP掩码矩阵后,在一些实施例中,所述利用KSP掩码矩阵对原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,可以包括:利用KSP掩码矩阵与原始神经网络结构的各卷积层中每一卷积核进行乘法运算;其中,被剪枝的权重在所述乘法运算中被置零处理。
也就是说,对于本申请实施例提出的模式剪枝,以第i卷积层为例,可以将第i卷积层中每一个卷积核与其KSP索引值qcn在中查找出的KSP掩码矩阵(用表示)进行乘法运算,在该过程中,被剪去的权重被置零,从而实现了基于KSP的模式剪枝(PP)。
进一步地,在对原始神经网络结构进行模式剪枝后,此时可以得到模式剪枝后的稀疏神经网络结构,还需要判断稀疏神经网络结构的压缩比和精度是否达标。在一些实施例中,该方法还可以包括:
确定稀疏神经网络结构对应的压缩比;
判断压缩比与目标压缩比之间的差值是否满足第一预设范围;
当压缩比与目标压缩比之间的差值满足第一预设范围时,确定稀疏神经网络结构的压缩比达标,判断稀疏神经网络结构对应的压缩前精度与压缩后精度之间的差值是否满足第二预设范围;
当压缩前精度与压缩后精度之间的差值满足第二预设范围时,确定稀疏神经网络结构的精度达标,将稀疏神经网络结构确定为目标神经网络结构。
在这里,目标压缩比可以为预设经验值;或者,目标压缩比可以是根据所述原始神经网络结构的资源占用信息进行分析确定的。其中,资源占用信息至少可以包括:计算量、参数量和/或内存占用等。
还需要说明的是,第一预设范围可以是预先设定的用于判断稀疏神经网络结构的压缩比是否达标的判定标准,第二预设范围可以是预先设定的用于判断稀疏神经网络结构的精度是否达标的判定标准。在本申请实施例中,判断稀疏神经网络结构的压缩比是否达标,可以将当前稀疏神经网络结构对应的压缩比与目标压缩比进行比较,如果压缩比与目标压缩比之间的差值满足第一预设范围,那么该稀疏神经网络结构的压缩比达标;否则该稀疏神经网络结构的压缩比不达标,这时候还需要对该稀疏神经网络结构进一步实施权重剪枝。
也就是说,当压缩比与目标压缩比之间的差值不满足第一预设范围时,该方法还可以包括:识别稀疏神经网络结构中不重要的权重并进行剪枝处理,更新该稀疏神经网络结构,然后继续执行判断稀疏神经网络结构对应的压缩前精度与压缩后精度之间的差值是否满足第二预设范围的步骤。
需要说明的是,针对各个权重的重要性计算,可以是根据经验用某些指标(范数、梯度等)近似,也可以是根据剪去每个权重所造成的模型表达能力损失来实际测量。例如,基于“权重数值越小越不重要”的经验,可以将整个稀疏神经网络中权重矩阵的L0、L1和/或L2范数较小(例如低于某一阈值,或处于从大到小排序靠后位置)的权重视为不重要。
在这过程中,对于权重的重要性识别,可以逐层或全局进行。另外,对各权重的重要性识别,可以是二元的(重要为1,不重要为0),也可以是一个表征其重要程度的连续值。特别地,后者的一种可能实现方式是在原始权重矩阵之外的一个维度等于权重的矩阵中一一对应地存储代表各权重重要性的、介于0和1之间的连续值,且越大越重要,该矩阵甚至可直接参与神经网络训练;这样在训练结束时,因KSP掩码矩阵与权重为相乘关系,可将KSP掩码矩阵中掩码值较小的对应位置的权重视同被剪去。
还需要说明的是,对于不重要权重的剪去,在各个卷积层中权重的剪枝比例可以设置相同或者不相同。另外,还可以一次性剪去所有符合不重要条件的权重,即选取目标(总体)剪枝比例与当前压缩比之差作为WP阶段的剪枝比例;也可先只剪一部分,在下一次迭代的权重剪枝中继续剪去一部分等。需要注意的是,分成多次剪枝而最终完成的稀疏神经网络结构中被剪去的权重可能与选择一次性剪去的情况并不相同,即使两种情况下采用相同的全局剪枝比例。
另外,在权重剪枝中决定剪去权重的数量,可以基于数量占比设定,也可以基于所剪权重总重要性数值的占比设定,这里不作任何限定。
进一步地,在一些实施例中,当压缩前精度与压缩后精度之间的差值不满足第二预设范围时,该方法还可以包括:对稀疏神经网络结构进行参数调优处理,更新稀疏神经网络结构,并返回执行确定所述稀疏神经网络结构对应的压缩比的步骤。
也就是说,通过将压缩前精度与压缩后精度之间的差值与第二预设范围进行比较;如果压缩前精度与压缩后精度之间的差值满足第二预设范围,那么说明当前稀疏神经网络结构的精度达标,此时可以结束剪枝。如果压缩前精度与压缩后精度之间的差值不满足第二预设范围,那么说明当前稀疏神经网络结构的精度不达标,那么还需要进行一定的后处理操作(比如参数调优处理),然后返回确定所述稀疏神经网络结构对应的压缩比的步骤,再次判断更新后的稀疏神经网络结构的压缩比和精度是否达标。
简言之,本申请实施例在继承传统剪枝粒度的基础上,考虑硬件上的加速性能、实现难度以及一般情况下CNN权重的统计规律,引入了模式剪枝(PP)限制整个神经网络中可以出现的KSP数量,并去除条状剪枝(SP)中同一滤波器必须使用同一KSP的限制。在此基础上再加以权重剪枝(WP),采用“PP+WP”这种剪枝方式既能一定程度上继承细粒度剪枝WP的精度和压缩比,又能生成相比纯WP更加结构化的稀疏神经网络,有利于运算加速器的开发。具体而言,在剪枝中引入PP,而且结合CP/FP/SP的结构化特性,以及WP的灵活性和同等精度要求下的高压缩比,可以在典型的结构化与非结构化剪枝模式之间达成了较好的平衡。另外,PP还实现了将传统的正方形密集卷积核转化为稀疏的不规则卷积核,且施加了整个神经网络结构中KSP的数量限制,如要实现推理加速可以仅需修改卷积这一个算子,使其支持稀疏卷积核,而不影响神经网络结构中其他算子,在现有环境中部署较为方便。将本申请实施例提供的PP置于传统的WP之前,提升了稀疏神经网络的结构度,有利于在较小部署开发强度下实现推理加速;而且将PP与WP结合,还有利于更加准确地识别并剪去不重要的权重,进一步提升NN精度,拓宽了应用场景。
除此之外,在剪枝过程中,结合CP/FP、PP和WP三种方式,利用更加精准的选择机制,例如生成对抗学习(Generative Adversarial Learning,GAL)、强化学习(Reinforcement Learning,RL)等机制,同一时间在多种剪枝粒度上进行异质剪枝(Heterogeneous Pruning):同时判断神经网络结构中滤波器/通道、卷积核和独立权重等不同粒度权重单位的重要性,对识别到的任意粒度不重要的权重单位进行剪枝。如此,不仅可以避免对NN中具备不同敏感度的不同位置采用同种剪枝方式造成的精度损失,而且还可免去因多次进行不同粒度剪枝而造成的繁琐和精度损失的累加。
本实施例提供了一种神经网络加速方法,通过对原始神经网络结构中的至少一种卷积核尺寸分别进行核稀疏模式KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵;基于所述至少一组KSP集合,确定所述原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵;利用所述KSP掩码矩阵对所述原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。这样,通过引入基于KSP的模式剪枝来限制整个神经网络中可以出现的KSP个数,不仅降低了运算量,增强了稀疏神经网络的表达能力,而且还提升了稀疏神经网络的压缩比和精度,有利于稀疏神经网络在精度要求较高场合(例如像素级别的去噪、超分等任务,而非诸如分类等粗粒度场景)的应用。
本申请的另一实施例中,参见图9,其示出了本申请实施例提供的一种神经网络加速方法的详细流程示意图。如图9所示,该详细流程可以包括:
S901:基于原始神经网络结构,确定目标压缩比。
在本申请实施例中,原始神经网络结构以原始CNN为例,可以通过分析已经预训练的原始CNN的资源占用(比如计算量、参数量和/或内存占用等),或者也可以根据经验法则,确定出(总体)目标压缩比。
S902:统计各尺寸卷积核对应的KSP集合。
需要说明的是,对原始CNN中各层、各滤波器中所有相同尺寸的卷积核,统计其中出现次数最多的p种KSP(p为正整数,作为可配置的超参之一,或根据S901中的分析算出),为逻辑清晰起见,将这些KSP的集合记为P={P0,P1,…,Pp-1},其中各Pq(0≤q≤p-1)均为一种二值化(binary)KSP掩码矩阵,例如图5所示的KSP掩码矩阵可记为[[1,0,0],[0,1,1],[0,1,0]]。如果CNN中存在多种尺寸的卷积核,那么可以对每一种尺寸h×w分别创建相应的KSP集合而各集合的元素数量phw可以相同或者不同。
S903:计算各层的掩码索引矩阵并进行模式剪枝,确定稀疏神经网络结构。
还需要说明的是,本申请实施例可以为每一个卷积核分配一个与其实际权重模式相符或最接近的KSP掩码矩阵,将其对应的KSP索引值qcn(0≤qcn≤phw-1,0≤c≤ci-1,0≤n≤ni-1)存储在对于第i卷积层维度为(ci,ni)的、在内存中另行存储的掩码索引矩阵中,形如[[3,2,…,7],[1,0,…,2],…,[5,6,…,4]]。将来在前向运算时,每一个卷积核只需乘上根据其KSP索引值qcn在中查找出对应的二值化的KSP掩码矩阵其中,被剪去的权重将被置零,从而实现了基于KSP的模式剪枝PP。
S904:判断压缩比是否达标。
S905:识别并剪去剩余权重中不重要的权重,更新该稀疏神经网络。
S906:判断精度是否达标。
S907:对稀疏神经网络进行后处理。
需要说明的是,对于S904来说,针对此时的稀疏NN,判断其相比原始CNN的压缩比是否达标;如果压缩比达标,那么直接执行S906;如果压缩比不达标,那么还需要对该稀疏NN进一步实行WP的步骤(即S905),然后再执行S906。
还需要说明的是,对于S906来说,判断此时的稀疏NN的精度是否达标,如果精度达标,那么说明剪枝结束,可以直接结束流程;如果精度不达标,那么还需要进行一定的后处理步骤(即执行S907),然后再返回执行S904。
结合图9,下面将本申请实施例的一些应用情况进行详细说明。
在一些实施例中,本申请实施例的方法支持用于图像分类、识别、降噪、超分、风格迁移、生成等任务,甚至非图像领域任务的CNN剪枝。
在一些实施例中,本申请实施例的方法所需的原始CNN,可以是浮点模型(参数为浮点数的模型),也可以是任意位宽(例如16-bit、12-bit、11-bit、10-bit、8-bit、7-bit、4-bit、2-bit等)的定点模型、整数模型乃至二值化模型,亦不限制卷积部分的卷积核尺寸、卷积核形状(正方形或非正方形皆可)及具体实现方式(包括但不限于用加法替代原始卷积运算中乘法的AdderNet)等。
在一些实施例中,S902中涉及获取各卷积核所代表的KSP,可以有多种可能的实现方法。例如,可以通过预设权重阈值过滤后得出;或者与第三方KSP模板集合中的KSP模板逐个比较余弦相似度、皮尔逊相关系数等。
在一些实施例中,S903中判断KSP集合中哪个KSP掩码矩阵与当前卷积核相符或最为接近,可以有多种可能的实现方法。例如,可以直接经预设权重阈值过滤后判断二值化矩阵是否相符,如无一完全相符,那么可以取余弦相似度最大者等等。
在一些实施例中,S905中如需进行WP,那么对各权重的重要性计算,可以根据经验用某些指标(范数、梯度等)近似,也可根据剪去每个权重所造成的模型表达能力损失来实际测量。例如,基于“权重数值越小越不重要”的经验假设,将整个NN权重矩阵的L0、L1和/或L2范数较小(例如低于某一阈值,或处于从大到小排序靠后位置)的权重视为不重要。
在一些实施例中,S905中如需进行WP,那么对各权重重要性的比较识别,可以逐层或全局进行。
在一些实施例中,S905中如需进行WP,那么对各权重的重要性识别,可以是二元的(重要为1,不重要为0),也可以是一个表征其重要程度的连续值。特别地,后者的一种可能实现方式是在原始权重矩阵之外的一个维度等于权重的矩阵中一一对应地存储代表各权重重要性的、介于0和1之间的连续值,越大越重要(注意:相比S903中的掩码索引矩阵,这里需要存储的是掩码本身),该矩阵甚至可直接参与CNN训练;这样在训练结束时,因掩码与权重为相乘关系,可将掩码值较小的对应位置的权重视同被剪去。
在一些实施例中,S905中如需进行WP,那么对不重要权重的剪去,可以一次性剪去所有符合不重要条件的权重,即选取目标(总体)剪枝比例与当前压缩比之差作为WP阶段的剪枝比例;也可先只剪一部分,待后处理步骤完成后返回到S904继续进行下一迭代的WP(此时最终完成的稀疏NN被剪去的权重可能与选择一次性剪去的情况并不相同,即使两种情况下采用相同的全局剪枝比例)。
在一些实施例中,S905中对每个卷积层中权重的剪枝比例可以相同或不同。
在一些实施例中,S905中决定剪去权重的数量,可以基于数量占比,也可以基于所剪权重总重要性数值的占比。
在一些实施例中,S907对S905所生成稀疏NN的后处理步骤,可以是在剩余权重的基础上继续训练一段时间或至收敛,称为“调优(fine-tune)”,也可以采用其他方式,包括但不限于将权重回溯(rewind)至当前代(epoch)之前某一代(如有)的权重,或者将全部剩余权重初始化后重新训练(retrain from scratch)。在某些情况下(包括但不限于因为此前步骤中某些机制的选取导致S905所生成稀疏NN可以直接达到精度要求),S907整步还可能被跳过。
在一些实施例中,S907的后处理步骤若涉及NN训练,则可以沿用原始NN训练时的损失函数,也可根据经验重新选取,或在训练过程中习得。
在一些实施例中,S907的后处理步骤若涉及NN训练,为降低精度损失,则其损失函数可以采用“示教”方式,即稀疏NN与原始NN表达能力之误差,而该误差可由输出层和/或中间层算出。
在一些实施例中,针对各个存在有权重被PP剪去的滤波器,其原本密集的正方形卷积核变为稀疏。可选地,对稀疏卷积核在最终部署推理时,可以采用修改卷积算子、跳过被剪去的像素的方式充分优化加速,也可将稀疏部分的权重简单置零,以直接复用原有的密集卷积算子。
通过上述实施例,对前述实施例的具体实现进行了详细阐述,从中可以看出,通过前述实施例的技术方案,一方面,通过引入基于KSP的PP,相比SP限制了整个NN中可以出现的KSP个数,有利于运算加速器/支持库的开发,增强了剪枝的可解释性,同时起到对NN正则化的效果,避免过拟合;另一方面,通过引入基于KSP的PP,相比纯WP完全随机的稀疏位置,提高了规律性,符合CNN结构化的设计理念,加强了稀疏NN的表达能力;又一方面,通过在PP基础上加以WP,相比纯PP提升了稀疏NN的压缩比;再一方面,通过结合结构化与非结构化剪枝,相比纯PP或纯WP能更准确地识别并剪去不重要的权重,提升精度,有利于稀疏NN在精度要求较高场合(如像素级别的去噪、超分等任务,而非诸如分类等粗粒度场景)的应用。
本申请的又一实施例中,基于前述实施例相同的发明构思,参见图10,其示出了本申请实施例提供的一种神经网络加速装置100的组成结构示意图。如图10所示,神经网络加速装置100可以包括:统计单元1001、分配单元1002和剪枝单元1003;其中,
统计单元1001,配置为对原始神经网络结构中的至少一种卷积核尺寸分别进行KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵;
分配单元1002,配置为基于至少一组KSP集合,确定原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵;
剪枝单元1003,配置为利用KSP掩码矩阵对原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。
在一些实施例中,参见图10,神经网络加速装置100还可以包括二值化单元1004;其中,
统计单元1001,具体配置为基于第一卷积核尺寸,对原始神经网络结构中第一卷积核尺寸对应的所有卷积核进行KSP统计,确定至少一种KSP各自的统计次数;以及根据至少一种KSP各自的统计次数,从至少一种KSP中选取预设数量种KSP;
二值化单元1004,配置为对预设数量种KSP分别进行二值化处理,得到预设数量种KSP掩码矩阵,并将预设数量种KSP掩码矩阵组成第一卷积核尺寸对应的一组KSP集合;其中,预设数量为正整数,第一卷积核尺寸为至少一种卷积核尺寸的任意一种尺寸;以及在确定出至少一种卷积核尺寸各自对应的一组KSP集合之后,得到至少一组KSP集合。
在一些实施例中,参见图10,神经网络加速装置100还可以包括确定单元1005,配置为利用预设权重阈值对第一卷积核尺寸对应的所有卷积核中每一卷积核进行权重过滤处理,确定每一卷积核的KSP;或者,计算预设KSP模板集合中的各个KSP模板分别与第一卷积核尺寸对应的所有卷积核中每一卷积核之间的相似性度量值,根据相似性度量值确定每一卷积核的KSP。
在一些实施例中,统计单元1001,还配置为按照至少一种KSP各自的统计次数对至少一种KSP进行降序排列,将排序结果中排列在前的预设数量的KSP确定为预设数量种KSP。
在一些实施例中,预设数量为预配置参数;或者,预设数量是根据原始神经网络结构的资源占用信息进行分析确定的。
在一些实施例中,分配单元1002,具体配置为基于至少一组KSP集合,确定原始神经网络结构的第i卷积层中每一卷积核对应的KSP索引值;以及根据KSP索引值,从第i卷积层中每一卷积核对应的一组KSP集合中查询得到第i卷积层中每一卷积核对应的KSP掩码矩阵;其中,i为大于或等于零且小于N的整数,N表示原始神经网络结构中的卷积层数量。
在一些实施例中,确定单元1005,还配置为根据原始神经网络结构的第i卷积层中每一卷积核对应的KSP索引值,组成原始神经网络结构的第i卷积层对应的掩码索引矩阵,并存储所述掩码索引矩阵。
在一些实施例中,针对原始神经网络结构的第i卷积层中的每一卷积核,二值化单元1004,还配置为对所述卷积核进行权重二值化处理,得到所述卷积核的二值化矩阵;
分配单元1002,还配置为将所述卷积核的二值化矩阵与所述一组KSP集合中的每一KSP掩码矩阵进行比较;以及当所述一组KSP集合中存在与所述卷积核的二值化矩阵相符的KSP掩码矩阵时,将所述KSP掩码矩阵的索引序号确定为所述卷积核对应的KSP索引值。
在一些实施例中,分配单元1002,还配置为当所述一组KSP集合中不存在与所述卷积核的二值化矩阵相符的KSP掩码矩阵时,计算所述卷积核的二值化矩阵与所述一组KSP集合中的每一KSP掩码矩阵之间的相似性度量值;以及基于计算出的相似性度量值,确定与所述卷积核的二值化矩阵最相似的KSP掩码矩阵,并将所述最相似的KSP掩码矩阵的索引序号确定为所述卷积核对应的KSP索引值。
在一些实施例中,剪枝单元1003,具体配置为利用KSP掩码矩阵与原始神经网络结构的各卷积层中每一卷积核进行乘法运算;其中,被剪枝的权重在乘法运算中被置零处理。
在一些实施例中,确定单元1005,还配置为确定稀疏神经网络结构对应的压缩比;以及判断压缩比与目标压缩比之间的差值是否满足第一预设范围;当压缩比与目标压缩比之间的差值满足第一预设范围时,确定稀疏神经网络结构的压缩比达标,判断稀疏神经网络结构对应的压缩前精度与压缩后精度之间的差值是否满足第二预设范围;以及当压缩前精度与压缩后精度之间的差值满足第二预设范围时,确定稀疏神经网络结构的精度达标,将稀疏神经网络结构确定为目标神经网络结构。
在一些实施例中,剪枝单元1003,还配置为当压缩比与目标压缩比之间的差值不满足第一预设范围时,识别稀疏神经网络结构中不重要的权重并进行剪枝处理,更新稀疏神经网络结构,继续执行判断稀疏神经网络结构对应的压缩前精度与压缩后精度之间的差值是否满足第二预设范围的步骤。
在一些实施例中,剪枝单元1003,还配置为当压缩前精度与压缩后精度之间的差值不满足第二预设范围时,对稀疏神经网络结构进行参数调优处理,更新稀疏神经网络结构,并返回执行确定稀疏神经网络结构对应的压缩比的步骤。
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码或指令的介质。
因此,本实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序至少一个处理器被执行时实现前述实施例中任一项所述的神经网络加速方法的步骤。
本申请的再一实施例中,基于前述神经网络加速装置100的组成以及计算机存储介质,参见图11,其示出了本申请实施例提供的一种电子设备的具体硬件结构示意图。如图11所示,电子设备110可以包括处理器1101,处理器1101可以从存储器中调用并运行计算机程序,以实现前述实施例中任一项所述的神经网络加速方法。
可选地,如图11所示,电子设备110还可以包括存储器1102。其中,处理器1101可以从存储器1102中调用并运行计算机程序,以实现前述实施例中任一项所述的神经网络加速方法。
其中,存储器1102可以是独立于处理器1101的一个单独的器件,也可以集成在处理器1101中。
可选地,如图11所示,电子设备110还可以包括收发器1103,处理器1101可以控制该收发器1103与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。
其中,收发器1103可以包括发射机和接收机。收发器1103还可以进一步包括天线,天线的数量可以为一个或多个。
可选地,电子设备110具体可为前述实施例所述的智能手机、平板电脑、掌上电脑、笔记本电脑、台式计算机等设备,或者集成有前述实施例中任一项所述神经网络加速装置100的设备。这里,并且该电子设备110可以实现本申请实施例的各个方法中所述的相应流程,为了简洁,在此不再赘述。
本申请的再一实施例中,基于前述神经网络加速装置100的组成以及计算机存储介质,在一种可能的示例中,参见图12,其示出了本申请实施例提供的一种芯片的组成结构示意图。如图12所示,芯片120可以包括前述实施例任一项所述的神经网络加速装置100。
在另一种可能的示例中,参见图13,其示出了本申请实施例提供的一种芯片的具体硬件结构示意图。如图13所示,芯片120可以包括处理器1201,处理器1201可以从存储器中调用并运行计算机程序,以实现前述实施例中任一项所述的神经网络加速方法。
可选地,如图13所示,芯片120还可以包括存储器1202。其中,处理器1201可以从存储器1202中调用并运行计算机程序,以实现前述实施例中任一项所述的神经网络加速方法。
其中,存储器1202可以是独立于处理器1201的一个单独的器件,也可以集成在处理器1201中。
可选地,如图13所示,该芯片120还可以包括输入接口1203。其中,处理器1201可以控制该输入接口1203与其他设备或芯片进行通信,具体地,可以获取其他设备或芯片发送的信息或数据。
可选地,如图13所示,该芯片120还可以包括输出接口1204。其中,处理器1201可以控制该输出接口1204与其他设备或芯片进行通信,具体地,可以向其他设备或芯片输出信息或数据。
可选地,该芯片120可应用于前述实施例所述的电子设备,并且该芯片可以实现本申请实施例的各个方法中所述的相应流程,为了简洁,在此不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片,系统芯片,芯片系统或片上系统芯片等,这里不作任何限定。
需要说明的是,本申请实施例的处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
还需要说明的是,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步链动态随机存取存储器(Synchronous link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。应注意,本申请描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
可以理解地,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (17)
1.一种神经网络加速方法,其特征在于,所述方法包括:
对原始神经网络结构中的至少一种卷积核尺寸分别进行核稀疏模式KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵;
基于所述至少一组KSP集合,确定所述原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵;
利用所述KSP掩码矩阵对所述原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。
2.根据权利要求1所述的方法,其特征在于,所述对原始神经网络结构中的至少一种卷积核尺寸分别进行核稀疏模式KSP统计,确定至少一组KSP集合,包括:
基于第一卷积核尺寸,对所述原始神经网络结构中所述第一卷积核尺寸对应的所有卷积核进行KSP统计,确定至少一种KSP各自的统计次数;
根据所述至少一种KSP各自的统计次数,从所述至少一种KSP中选取预设数量种KSP;
对所述预设数量种KSP分别进行二值化处理,得到预设数量种KSP掩码矩阵,并将所述预设数量种KSP掩码矩阵组成所述第一卷积核尺寸对应的一组KSP集合;其中,所述预设数量为正整数,所述第一卷积核尺寸为所述至少一种卷积核尺寸的任意一种尺寸;
在确定出所述至少一种卷积核尺寸各自对应的一组KSP集合之后,得到所述至少一组KSP集合。
3.根据权利要求2所述的方法,其特征在于,在所述对所述原始神经网络结构中所述第一卷积核尺寸对应的所有卷积核进行KSP统计之前,所述方法还包括:
利用预设权重阈值对所述第一卷积核尺寸对应的所有卷积核中每一卷积核进行权重过滤处理,确定每一卷积核的KSP;
或者,
计算预设KSP模板集合中的各个KSP模板分别与所述第一卷积核尺寸对应的所有卷积核中每一卷积核之间的相似性度量值,根据所述相似性度量值确定每一卷积核的KSP。
4.根据权利要求2所述的方法,其特征在于,所述根据所述至少一种KSP各自的统计次数,从所述至少一种KSP中选取预设数量种KSP,包括:
按照所述至少一种KSP各自的统计次数对所述至少一种KSP进行降序排列,将排序结果中排列在前的预设数量的KSP确定为所述预设数量种KSP。
5.根据权利要求2或4所述的方法,其特征在于,所述预设数量为预配置参数;或者,所述预设数量是根据所述原始神经网络结构的资源占用信息进行分析确定的。
6.根据权利要求1所述的方法,其特征在于,所述基于所述至少一组KSP集合,确定所述原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵,包括:
基于所述至少一组KSP集合,确定所述原始神经网络结构的第i卷积层中每一卷积核对应的KSP索引值;
根据所述KSP索引值,从所述第i卷积层中每一卷积核对应的一组KSP集合中查询得到所述第i卷积层中每一卷积核对应的KSP掩码矩阵;其中,i为大于或等于零且小于N的整数,N表示所述原始神经网络结构中的卷积层数量。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
根据所述原始神经网络结构的第i卷积层中每一卷积核对应的KSP索引值,组成所述原始神经网络结构的第i卷积层对应的掩码索引矩阵,并存储所述掩码索引矩阵。
8.根据权利要求6所述的方法,其特征在于,所述基于所述至少一组KSP集合,确定所述原始神经网络结构的第i卷积层中每一卷积核对应的KSP索引值,包括对所述原始神经网络结构的第i卷积层中的每一卷积核执行以下步骤:
对所述卷积核进行权重二值化处理,得到所述卷积核的二值化矩阵;
将所述卷积核的二值化矩阵与所述一组KSP集合中的每一KSP掩码矩阵进行比较;
当所述一组KSP集合中存在与所述卷积核的二值化矩阵相符的KSP掩码矩阵时,将所述KSP掩码矩阵的索引序号确定为所述卷积核对应的KSP索引值。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述一组KSP集合中不存在与所述卷积核的二值化矩阵相符的KSP掩码矩阵时,计算所述卷积核的二值化矩阵与所述一组KSP集合中的每一KSP掩码矩阵之间的相似性度量值;
基于计算出的相似性度量值,确定与所述卷积核的二值化矩阵最相似的KSP掩码矩阵,并将所述最相似的KSP掩码矩阵的索引序号确定为所述卷积核对应的KSP索引值。
10.根据权利要求1所述的方法,其特征在于,所述利用所述KSP掩码矩阵对所述原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,包括:
利用所述KSP掩码矩阵与所述原始神经网络结构的各卷积层中每一卷积核进行乘法运算;其中,被剪枝的权重在所述乘法运算中被置零处理。
11.根据权利要求1至10任一项所述的方法,其特征在于,在所述得到稀疏神经网络结构之后,所述方法还包括:
确定所述稀疏神经网络结构对应的压缩比;
判断所述压缩比与目标压缩比之间的差值是否满足第一预设范围;
当所述压缩比与目标压缩比之间的差值满足第一预设范围时,确定所述稀疏神经网络结构的压缩比达标,判断所述稀疏神经网络结构对应的压缩前精度与压缩后精度之间的差值是否满足第二预设范围;
当所述压缩前精度与所述压缩后精度之间的差值满足第二预设范围时,确定所述稀疏神经网络结构的精度达标,将所述稀疏神经网络结构确定为目标神经网络结构。
12.根据权利要求11所述的方法,其特征在于,当所述压缩比与目标压缩比之间的差值不满足第一预设范围时,所述方法还包括:
识别所述稀疏神经网络结构中不重要的权重并进行剪枝处理,更新所述稀疏神经网络结构,继续执行所述判断所述稀疏神经网络结构对应的压缩前精度与压缩后精度之间的差值是否满足第二预设范围的步骤。
13.根据权利要求11所述的方法,其特征在于,当所述压缩前精度与所述压缩后精度之间的差值不满足第二预设范围时,所述方法还包括:
对所述稀疏神经网络结构进行参数调优处理,更新所述稀疏神经网络结构,并返回执行所述确定所述稀疏神经网络结构对应的压缩比的步骤。
14.一种神经网络加速装置,其特征在于,所述神经网络加速装置包括统计单元、分配单元和剪枝单元;其中,
所述统计单元,配置为对原始神经网络结构中的至少一种卷积核尺寸分别进行KSP统计,确定至少一组KSP集合;其中,每一种卷积核尺寸对应一组KSP集合,且每一组KSP集合包括预设数量种KSP掩码矩阵;
所述分配单元,配置为基于所述至少一组KSP集合,确定所述原始神经网络结构的各卷积层中每一卷积核对应的KSP掩码矩阵;
所述剪枝单元,配置为利用所述KSP掩码矩阵对所述原始神经网络结构的各卷积层中每一卷积核进行剪枝处理,得到稀疏神经网络结构。
15.一种电子设备,其特征在于,所述电子设备包括存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行如权利要求1至13任一项所述的方法。
16.一种芯片,其特征在于,所述芯片包括存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,使得安装有所述芯片的电子设备执行如权利要求1至13任一项所述的方法。
17.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现如权利要求1至13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111010115.5A CN115759192A (zh) | 2021-08-31 | 2021-08-31 | 一种神经网络加速方法、装置、设备、芯片及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111010115.5A CN115759192A (zh) | 2021-08-31 | 2021-08-31 | 一种神经网络加速方法、装置、设备、芯片及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115759192A true CN115759192A (zh) | 2023-03-07 |
Family
ID=85331939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111010115.5A Pending CN115759192A (zh) | 2021-08-31 | 2021-08-31 | 一种神经网络加速方法、装置、设备、芯片及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115759192A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118133905A (zh) * | 2024-05-06 | 2024-06-04 | 山东第一医科大学(山东省医学科学院) | 一种轻量级目标检测神经网络的实现方法 |
-
2021
- 2021-08-31 CN CN202111010115.5A patent/CN115759192A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118133905A (zh) * | 2024-05-06 | 2024-06-04 | 山东第一医科大学(山东省医学科学院) | 一种轻量级目标检测神经网络的实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109754066B (zh) | 用于生成定点型神经网络的方法和装置 | |
CN110880038B (zh) | 基于fpga的加速卷积计算的系统、卷积神经网络 | |
CN113326930B (zh) | 数据处理方法、神经网络的训练方法及相关装置、设备 | |
CN108960340B (zh) | 卷积神经网络压缩方法及人脸检测方法 | |
CN110610237A (zh) | 模型的量化训练方法、装置及存储介质 | |
CN107944545B (zh) | 应用于神经网络的计算方法及计算装置 | |
CN112200295B (zh) | 稀疏化卷积神经网络的排序方法、运算方法、装置及设备 | |
CN113705775A (zh) | 一种神经网络的剪枝方法、装置、设备及存储介质 | |
CN111105017B (zh) | 神经网络量化方法、装置及电子设备 | |
CN110647974A (zh) | 深度神经网络中的网络层运算方法及装置 | |
CN110874625A (zh) | 一种深度神经网络量化方法及装置 | |
CN110874626B (zh) | 一种量化方法及装置 | |
CN113361698A (zh) | 神经网络模型的处理方法和装置、数据处理方法和装置 | |
CN109325530B (zh) | 一种图像分类方法、存储装置和处理装置 | |
CN112508190A (zh) | 结构化稀疏参数的处理方法、装置、设备及存储介质 | |
CN112200296A (zh) | 网络模型量化方法、装置、存储介质及电子设备 | |
CN115601692A (zh) | 数据处理方法、神经网络模型的训练方法及装置 | |
CN112819157A (zh) | 神经网络训练的方法及装置、智能行驶控制的方法及装置 | |
CN117693754A (zh) | 训练用于图像修复的经掩模的自动编码器 | |
CN115759192A (zh) | 一种神经网络加速方法、装置、设备、芯片及存储介质 | |
CN112561050A (zh) | 一种神经网络模型训练方法及装置 | |
CN116957006A (zh) | 预测模型的训练方法、装置、设备、介质及程序产品 | |
CN117348837A (zh) | 浮点精度模型的量化方法、装置、电子设备以及存储介质 | |
US11699077B2 (en) | Multi-layer neural network system and method | |
CN113919479B (zh) | 一种提取数据特征的方法和相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |