CN110852422A - 基于脉冲阵列的卷积神经网络优化方法及装置 - Google Patents
基于脉冲阵列的卷积神经网络优化方法及装置 Download PDFInfo
- Publication number
- CN110852422A CN110852422A CN201911100653.6A CN201911100653A CN110852422A CN 110852422 A CN110852422 A CN 110852422A CN 201911100653 A CN201911100653 A CN 201911100653A CN 110852422 A CN110852422 A CN 110852422A
- Authority
- CN
- China
- Prior art keywords
- array
- target
- replacement
- weight
- initial
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Abstract
本发明提供基于脉冲阵列的卷积神经网络优化方法及装置,以提高参与计算的所有PE中最低的最高运行频率。上述卷积神经网络包括至少一层卷积层;卷积层包括至少一组过滤器;任一卷积层执行的卷积操作包括:使用过滤器在输入激活矩阵上进行扫描;脉冲阵列用于执行每一卷积层所涉及的卷积计算,脉冲阵列包括N行M列处理单元PE;其中,参与卷积计算的任一PE的寄存器,用于存储相应过滤器的权重值;方法包括:确定处理本层卷积层的卷积操作的初始PE运算阵列;初始PE运算阵列包括行数n和列数m;其中,n小于等于N,m小于等于M;将初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列。
Description
技术领域
本发明涉及计算机领域,特别涉及基于脉冲阵列的卷积神经网络优化方法及装置。
背景技术
CNN(卷积神经网络,ConvolutionNeuralNetwork)是现阶段最受欢迎的图像处理方式之一。CNN计算过程中占比最大、耗时最长的操作即为卷积(Convolution)。
脉冲阵列可以高效地计算大量矩阵点乘,而矩阵点乘是卷积操作的主要计算模式。脉冲阵列由大量处理单元(ProcessingElement,PE)组成,所有PE必须工作在相同频率下。
然而受工艺技术的限制,众多PE的物理参数无法保证严格一致,而是呈正态分布,这使得脉冲阵列内各PE的最高工作频率无法严格一致。因此,为保证计算结果的正确性,脉冲阵列的整体运行频率将受限于所有PE中最低的最高运行频率,以避免部分PE无法在时钟周期内完成工作进而输出错误结果。
发明内容
有鉴于此,本发明提供基于脉冲阵列的卷积神经网络优化方法及装置,以提高参与计算的所有PE中最低的最高运行频率。
为了实现上述发明目的,本发明提供以下技术方案:
一种基于脉冲阵列的卷积神经网络优化方法,所述卷积神经网络包括至少一层卷积层;所述卷积层包括至少一组过滤器;任一卷积层执行的卷积操作包括:使用过滤器在输入激活矩阵上进行扫描,其中,所述过滤器每扫描到所述输入激活矩阵的一个位置就使用所述过滤器的权重进行一次矩阵点乘计算,得到输出激活矩阵中的一个元素;
所述脉冲阵列用于执行每一卷积层所涉及的矩阵点乘计算,所述脉冲阵列包括N行M列处理单元PE;其中,参与矩阵点乘计算的任一PE的寄存器,用于存储相应过滤器的权重值;
所述方法包括:
确定处理本层卷积层的卷积操作的初始PE运算阵列;所述初始PE运算阵列包括行数n和列数m;其中,n小于等于N,m小于等于M;
将所述初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列。
可选的,所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换包括:确定所述脉冲阵列中的冗余PE行和冗余PE列;对所述初始PE执行冗余替换,得到冗余优化后的PE运算阵列;其中,所述执行冗余替换包括:执行至少一次的冗余行替换操作,以及,执行至少一次的冗余列替换操作中的至少一种。
可选的,所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换包括:确定用于替换目标替换PE的至少一个PE;所述目标替换PE为所述初始PE运算阵列或者所述冗余优化后的PE运算阵列中最高运行频率最低的PE;对所述目标替换PE对应的权重进行权重转移;禁用所述目标替换PE,以令所述目标替换PE不执行乘加运算。
可选的,所述目标替换PE对应的权重值表示为W,其在过滤器权重矩阵中对应的位置为目标替换位置;所述对所述目标替换PE对应的权重进行权重转移包括:在以所述目标替换位置为中心的四个预设方向上选取k个未被禁用的位置;所述四个预设方向包括:所述目标替换位置的正上方,所述目标替换位置的正下方,所述目标替换位置的正左方和所述目标替换位置的正右方;k大于等于1;所述k个未被禁用的位置中的任一位置当前对应的权重值表示为Wi;i大于等于1小于等于k;或者,i大于等于0小于等于k-1;或者,在围绕所述目标替换位置的位置中选取k个未被禁用的位置;所述对所述目标替换位置对应的权重进行权重转移包括:将所述任一位置对应的权重值更新为W/k+Wi。
可选的,所述冗余行替换操作包括:从所述脉冲阵列所有未被禁用的PE中,选出最高运行频率最低的PE;选出的PE为目标PE;禁用所述目标PE所在的PE行;若所述目标PE不在冗余PE行中,选择未被禁用的冗余PE行替换所述目标PE所在的PE行;所述冗余列替换操作包括:从所述脉冲阵列所有未被禁用的PE中,选出最高运行频率最低的PE;选出的PE为目标PE;禁用所述目标PE所在的PE列;若所述目标PE不在冗余PE列中,选择未被禁用的冗余PE列替换所述目标PE所在的PE列。
可选的,在所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换之前,还包括:获取所述脉冲阵列中各PE的最高运行频率。
可选的,所述获取所述脉冲阵列中各PE的最高运行频率包括:将所述脉冲阵列中各PE对应的权重值设置为最大值;对所述脉冲阵列中除第j行PE行之外的所有PE行进行禁用;j大于等于1小于等于N;或者,j大于等于0小于等于N-1;以令第j行PE行中各PE均可正常运行的运行频率为起点运行频率,执行多次最高运行频率获取操作,直至第j行PE行中所有PE的最高运行频率均被确定;其中,第一次最高运行频率获取操作中使用的运行频率为所述起点运行频率,第n次最高运行频率获取操作中的运行频率fn高于第n-1次最高运行频率获取操作中的运行频率fn-1;n大于1;第n次最高运行频率获取操作包括:向所述第j行PE行传入二进制下全为1的激活值;所述第j行PE行中的所有PE均使用所述激活值进行乘法运算;将所述第j行PE行中各PE的运算结果与相应的预期结果进行比较;将运算结果首次与预期结果不相同的PE的最高运行频率确定为fn-1。
一种基于脉冲阵列的卷积神经网络优化装置,所述卷积神经网络包括至少一层卷积层;所述卷积层包括至少一组过滤器;任一卷积层执行的卷积操作包括:使用过滤器在输入激活矩阵上进行扫描,其中,所述过滤器每扫描到所述输入激活矩阵的一个位置就使用所述过滤器的权重进行一次矩阵点乘计算,得到输出激活矩阵中的一个元素;
所述脉冲阵列用于执行每一卷积层所涉及的卷积计算,所述脉冲阵列包括N行M列处理单元PE;其中,参与卷积计算的任一PE的寄存器,用于存储相应过滤器的权重值;
所述装置包括:
状态表,至少用于:保存所述脉冲阵列中各PE的最高运行频率;控制模块,用于:确定处理本层卷积层的卷积操作的初始PE运算阵列;所述初始PE运算阵列包括行数n和列数m;其中,n小于等于N,m小于等于M;将所述初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列。
可选的,在所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换的方面,所述控制模块具体用于:确定所述脉冲阵列中的冗余PE行和冗余PE列;对所述初始PE执行冗余替换,得到冗余优化后的PE运算阵列;其中,所述执行冗余替换包括:执行至少一次的冗余行替换操作,以及,执行至少一次的冗余列替换操作中的至少一种。
可选的,还包括权重转移模块;在所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换的方面,所述控制模块具体用于:确定用于替换目标替换PE的至少一个PE;所述目标替换PE包括目标PE运算阵列中最高运行频率最低的PE;所述目标替换PE存储的权重值表示为W;所述目标PE运算阵列为所述初始PE运算阵列或者所述冗余优化后的PE运算阵列;指示所述权重转移模块对所述目标替换PE对应的权重进行权重转移;禁用所述目标替换PE,以令所述目标替换PE不执行乘加运算;所述状态表还用于:保存被进行权重转移的PE数量。
可见,在本发明实施例中,先确定处理本层卷积层卷积操作的初始PE运算阵列,然后将初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列,提高参与计算的所有PE中最低的最高运行频率,进而提高脉冲阵列的运行频率,提高计算速度,以减弱制程变异效应的影响。
附图说明
图1为本发明实施例提供的脉冲阵列的示意图;
图2为本发明实施例提供的卷积操作计算的示意图;
图3为本发明实施例提供的PE的示例性结构图;
图4a为本发明实施例提供的获取脉冲阵列中各PE的最高运行频率的示例性流程;
图4b为本发明实施例提供的只有一行PE参与计算的示意图;
图5a-图5c为本发明实施例提供的卷积神经网络优化方法的示例性流程;
图6a为本发明实施例提供的冗余行替换的示例性流程;
图6b为本发明实施例提供的冗余行替换的示意图;
图6c为本发明实施例提供的冗余列替换的示例性流程;
图7a、图7b为本发明实施例提供的权重矩阵预处理的示例性流程;
图8a为本发明实施例提供的使用十字策略转移替换权重的示意图;
图8b为本发明实施例提供的使用环绕策略转移替换权重的示意图;
图8c为本发明实施例提供的使用十字均值策略转移替换权重的示意图;
图8d为本发明实施例提供的使用环绕均值策略转移替换权重的示意图;
图8e为本发明实施例提供的过滤器矩阵权重存储至PE的示意图;
图9为本发明实施例提供的卷积神经网络优化装置的示例性结构图。
具体实施方式
为方便理解本发明实施例提供的方案,先介绍CNN和脉冲阵列。
CNN通常由多个卷积层(Convolutional Layer,Conv Layer)组成,卷积的两个操作元素包括输入激活(InputActivation)矩阵或称输入特征图(InputFeatureMap),以及,过滤器(Filter)。
输入激活矩阵就将图片数据预处理后形成一个符合CNN模型大小的矩阵;过滤器则是通过CNN模型训练得到的另一组矩阵(可称为过滤器矩阵),保存在过滤器矩阵中的元素被称为权重(Weight)。
每一卷积层执行的卷积操作包括:使用过滤器在输入激活矩阵上进行扫描。其中,过滤器每扫描到输入激活矩阵的一个位置就使用其权重进行一次矩阵点乘计算,得到输出激活矩阵中的一个元素。当过滤器扫描完成输入激活矩阵的所有位置时,便可得到本层完整的输出激活矩阵(OutputActivation)。随后本层的输出激活矩阵将直接或经一定处理后(例如池化操作)成为下一卷积层的输入激活矩阵,重复此过程直到完成CNN所有卷积层的卷积操作。
然而对于传统结构的通用处理器而言,CNN巨大的计算量使得其处理速度和效率难以满足使用者的需求。因此众多针对CNN计算模式优化的专用加速器得以出现。其中基于脉冲阵列技术(Systolic Array)的加速器(脉冲阵列)受到了学术界和工业界的青睐。
脉冲阵列可以高效地计算大量矩阵点乘,而矩阵点乘是卷积操作的主要计算模式。
请参见图1,脉冲阵列包括N行M列处理单元(ProcessingElement,PE),每个PE只能够和其上下左右四个PE发生数据传递。过滤器矩阵元素按照某种排列模式预先保存在PE内的寄存器中,每个PE内保存过滤器矩阵的一个元素。
在进行卷积操作计算时,请参见图2,输入激活矩阵经过重组(此为现有技术)后从左侧依次传入脉冲阵列内。
在每个时钟周期内,每个PE内部发生两次数据传递:一是从其左侧获得输入激活值,二是获得其上方PE的计算结果(即部分和)。
得到激活值后,未被禁用的PE将自身寄存器内保存的权重与得到的激活值相乘,并与从上方PE得到的计算结果相加,得到本周期的计算结果。
下一周期时,PE将其得到的激活值不加处理地直接传递给其右侧的下一PE,并把其计算结果传递给其下方PE。
输入激活值每个周期向右整体前进1个PE,阵列整体遵循这种类似流水线的操作模式,完成点乘操作。
图2中的W0,0至WN-1,M-1为PE中存储的过滤器权重。
请参见图3,每个PE内部包含:
权重寄存器(WeightRegister,在图3中以Weight Reg.表示),用于保存分配给该PE的过滤器权重;
部分和寄存器(PartialSumRegister,在图3中以PartialSumReg.表示),用于保存从上方接受到的部分和;
激活值寄存器(ActivationRegister,在图3中以ActivationReg.表示),用于保存接收到的输入激活值;
乘法器,用于对权重和输入激活值进行乘法操作;
加法器,用于将乘法器所得乘积与上一PE传递的部分和进行加法操作。
为了实现优化,仍请参见图2,本发明在PE内部添加了多路分配器(Demultiplexer,DEMUX)。
DEMUX的输入端与部分和寄存器的输出端相连接,DEMUX的一个输出端(可称为第一输出端)与乘法器的一个输入端相连接,另一个输出端(可称为第二输出端)直接连接乘法器的输出端,在控制信号的控制下,若第一输出端选通,则输出的是加法器的计算结果(也即乘法器所得乘积与上一PE传递的部分和进行加法操作得到的结果),而若第二输出端选通,则直接输出上一PE传递的部分和。
通过加入上述DEMUX,在选通第二输出端时,可实现对PE的禁用,在此状态下,PE将上一PE传递的部分和直接传递给下方PE,而不进行任何计算操作。
或者说,多路分配器(Demultiplexer,DEMUX),用于在禁用该PE时选择正确的数据通路,将上一PE传递的部分和直接传递给下方PE,而不进行任何计算操作。
由于上一卷积层的输出激活矩阵将直接或经一定处理后作为下一积层的输入激活矩阵,在时间上存在先后执行顺序,因此,可使用同一脉冲阵列中的PE先实现一卷积层所涉及的卷积操作,再实现下一卷积层所涉及的卷积操作。
前述提及了,受工艺技术的限制,众多PE的物理参数无法保证严格一致,而是呈正态分布,这使得脉冲阵列内各PE的最高工作频率无法严格一致。
因此,为保证计算结果的正确性,脉冲阵列的整体运行频率将受限于所有PE中最低的最高运行频率,以避免部分PE无法在时钟周期内完成工作进而输出错误结果。
为提高参与计算的所有PE中最低的最高运行频率,本发明所提供的技术方案的核心思想是:
确定处理本层卷积层的卷积操作的初始PE运算阵列;该初始PE运算阵列包括行数n和列数m;其中,n小于等于N,m小于等于M;
将上述初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列。
可采取多种技术手段实现对初始PE运算阵列中最高运行频率最低的PE进行替换,例如,一种技术手段是预处理权重矩阵以绕过低频率PE,另一种技术手段是使用冗余PE替换初始PE运算阵列中最高运行频率最低的PE(简称为冗余替换),这两种技术手段也可一起使用。下面分别进行详细介绍。
当然,在使用上述技术手段之前,需要首先获取脉冲阵列中各PE的最高运行频率。
图4a示出了由上述卷积神经网络优化装置执行的获取脉冲阵列中各PE的最高运行频率的一种示例性流程,其可包括:
S401:初始化:将所有PE保存的权重设置为其所能处理的最大值。
请参见图4b,以一个2x2大小的脉冲阵列为例,其操作数最大位数为4位。可在所有PE中保存二进制全为1的权重。
之后,以行为单位依次获取各PE行中各PE的最高运行频率。
S402:对脉冲阵列中除第j行PE行之外的所有PE行进行禁用;
其中,j大于等于1小于等于N;或者,j大于等于0小于等于N-1。
仍以图4b为例,在j=1时,禁用除第一行以外的全部PE,使得只有第一行PE参与计算。
S403:以令第j行PE行中各PE均可正常运行的运行频率为起点运行频率,执行多次最高运行频率获取操作,直至第j行PE行中所有PE的最高运行频率均被确定。
其中,第一次最高运行频率获取操作中使用的运行频率为上述起点运行频率,以保证所有PE均可以正常运行,第n次最高运行频率获取操作中的运行频率fn高于第n-1次最高运行频率获取操作中的运行频率fn-1;n大于1。
一般可设计以一定的步长提高运行频率,步长取值受制程、具体硬件状况、使用者所需的划分粒度等多因素的影响。本领域技术人员可灵活设计步长的取值,在此不作赘述。
每一次最高运行频率获取操作需要占用X个工作周期,X等于阵列宽度+阵列高度-j+1(因为部分和向下传出阵列也需要若干周期)。
在每一次最高运行频率获取操作中,会向第j行PE行传入二进制下全为1(即最大操作数)的激活值,在X个周期内,第j行PE行中的所有PE均使用同一激活值与自身存储的权重进行乘加运算,得到计算结果;在X个周期后,将第j行PE行中各PE的运算结果与相应的预期结果进行比较,然后将首次运算结果与预期结果不相同的PE的最高运行频率确定为fn-1。
以图4b所示的脉冲矩阵为例,在j=1时,只令第一行PE参与计算。
在第n次最高运行频率获取操作中,当前运行频率为fn,根据前述介绍的流水线的操作模式,在X个工作周期的第一个工作周期,激活值1111进入PE0,0,PE0,0中的权重值“1111”(可表示为A)与激活值1111(可表示为a)进行乘法运算,得到计算结果(可称其为Aa);
在第二个工作周期,激活值进入PE0,1中,PE0,1中的权重值“1111”(可表示为B)与激活值进行乘法运算,得到计算结果(可称其为Ba)。
由于其他行被禁用,其他行的PE可负责将上一PE传递的部分和(此处是乘法运算结果)直接传递给下方PE,而不进行任何操作。
这样,在X个周期后,每一列的输出结果只包含一个PE的计算结果,通过检查结果的正确性判断当前频率下PE能否正常工作。
举例来讲,假定Aa首次与预期结果不相同,则说明PE0,0在运行频率fn下无法正常工作。可将前一运行频率fn-1作为PE0,0最高运行频率确定。
若Ba与预期结果相同,则说明PE0,1在运行频率fn下仍能正常工作。进入下一次最高运行频率获取操作,将运行频率提高至fn+1,若PE0,1在运行频率fn+1下仍能正常工作,则将运行频率提高至fn+2,以此类推,直至PE0,1首次无法计算出正确的结果,得到PE0,1的最高运行频率。
随后同样对第二行PE进行类似的检测,以获取该行所有PE的最高运行频率。
在得到各PE的最高运行频率后,可进行优化。
图5a-图5c示出了由上述卷积神经网络优化装置执行的卷积神经网络优化方法的示例性流程,至少可包括如下步骤:
S1:确定处理本层卷积层的卷积操作的初始PE运算阵列。
初始PE运算阵列包括行数n和列数m;其中,n小于等于N,m小于等于M。
一般会从脉冲阵列的左上角开始的n行m列作为初始PE运算阵列。
在一个示例中,可通过如下方式确定初始PE运算阵列:
步骤A:获取CNN模型的本层参数。
本层卷积层参数包括:过滤器长、高、通道(channel)数以及组数。
假如本层卷积层的过滤器矩阵为一个R*S*C的三维矩阵,那么长为R,高为S,通道数为C。
上述参数可通过读取过滤器权重矩阵大小获得,也可将相关参数预先保存在CNN模型中,在需要时进行读取。
步骤B:根据本层参数计算处理本层卷积层的卷积操作所需的阵列大小。
其中,阵列的长度m等于过滤器组数,高度n等于过滤器的长·高·通道数。
也即,对于一个R*S*C的三维过滤器矩阵,m=过滤器组数,n=R·S·C。
此外,也可能存在下述情况:过滤器尺寸大于脉冲阵列的大小,例如,若R*S*C大于脉冲矩阵的最大高度(也即行数N),则初始PE运算阵列的高度n无法取到R*S*C,只能为脉冲矩阵的最大高度N。
S2:确定脉冲阵列中的冗余PE行和冗余PE列分布。
需要说明的是,由于CNN模型各层规模是逐渐增大的,故对脉冲阵列中PE数量的需求也是逐渐增大的。这使得脉冲阵列在计算CNN最初几层时,甚至处理小规模CNN模型全程均常存在PE冗余。如没有PE冗余,则所有PE均投入使用。
若整个脉冲阵列中存在未投入使用的PE行,未投入使用的PE行为冗余PE行(或行冗余);
同理,若整个脉冲阵列中存在未投入使用的PE列,未投入使用的PE列为冗余PE列(或列冗余)。
在确定脉冲阵列中存在冗余PE行后,可执行下述步骤S3(请参见图5a),而在确定脉冲阵列存在冗余PE列后,可执行下述步骤S4(请参见图5b)。
在同时存在冗余PE行和冗余PE列的情况下,可先执行步骤S4再执行步骤S3(请参见图5c),或者,先执行步骤S3再执行步骤S4。
步骤S3和S4可统称为冗余替换,其目的是根据冗余PE及各PE最高运行频率情况重新分配参与计算的PE。
S3:执行至少一次的冗余行替换操作,直至不存在未被禁用的冗余PE行。
在一个示例中,请参见图6a,步骤S3可进一步包括如下步骤:
S31:从脉冲阵列所有未被禁用的PE(包括投入使用的和冗余的)中,选出最高运行频率最低的PE;
为方便称呼,可将选出的PE称为目标PE。
S32:禁用目标PE所在的PE行;
举例来讲,请参见图6b,假定在脉冲阵列中,目标PE在第1行,则禁用第1行PE行。
S33:若目标PE不在冗余PE行中,选择未被禁用的冗余PE行替换目标PE所在的PE行。
需要说明的是,目标PE所在行可能位于初始PE运算阵列中。
举例来讲,请参见图6b,假定在脉冲阵列中,目标PE在第1行且位于初始PE运算阵列中,而第10行为冗余PE行未被禁用。可使用第10行PE行替换第1行PE行。当然,如果目标PE位于冗余行,则不做替换,禁用即可。
此外,目标PE所在行也可能本身就是替换后的行。
举例来讲,在使用第10行PE行替换第1行PE行,并禁用第1行PE行后,经步骤S31确定出的目标PE位于第10行PE行中,此时,目标PE所在行是替换后的PE行,其不在初始PE运算阵列中,但属于参与运行的PE行(即不在冗余PE行中)。
S34:判断是否存在未被禁用的冗余PE行,若是,返回S31,否则结束。若仍存在未被禁用的冗余PE行,则还有可能具有优化的余地,返回S31继续执行。
S4:执行至少一次的冗余列替换操作,直至不存在未被禁用的冗余PE列。
在一个示例中,请参见图6c,步骤S4可进一步包括如下步骤:
S41:从脉冲阵列所有未被禁用的PE中,选出最高运列频率最低的PE;选出的PE为目标PE;
S42:禁用目标PE所在的PE列;
举例来讲,假定在脉冲阵列中,目标PE在第10列,则禁用第10列PE列。
S43:若目标PE不在冗余列中,选择未被禁用的冗余PE列替换目标PE所在的PE列。
举例来讲,假定在脉冲阵列中,目标PE在第10列且不在冗余列中,而第11列为冗余PE列未被禁用,可使用第11列PE列替换第10列PE列。
当然,如果目标PE位于冗余列,则不做替换,禁用即可。
S44:判断是否存在未被禁用的冗余PE列,若是,返回S41,否则,结束。
若仍存在未被禁用的冗余PE列,则还有可能具有优化的余地,返回S41继续执行。
在进行冗余替换后,得到冗余优化后的PE运算阵列,冗余优化后的PE运算阵列不包含已被禁用的PE行和PE列。如果还想进一步优化,或者,在确定出初始PE运算阵列后,并未有冗余行和冗余列,则可根据预先决定的替换策略预处理权重矩阵,以绕过低频率PE。下面予以介绍。
请参见图7a或图7b,在进行冗余替换后或在确定出初始PE运算阵列后,对权重矩阵进行的预处理可包括如下操作:
S701:确定用于替换目标替换PE的至少一个PE。
对于图7a所示实施例,目标替换PE为初始PE运算阵列中最高运行频率最低的PE;
对于图7b所示实施例,目标替换PE为冗余优化后的PE运算阵列中最高运行频率最低的PE。
S702:对目标替换PE对应的权重进行权重转移。
目标替换PE在权重矩阵中对应的权重值表示为W,其在过滤器权重矩阵中对应的位置可称为目标替换位置。
在一个示例中,可采用下述方式对所述目标替换PE对应的权重进行权重转移:
步骤a:在以目标替换位置为中心的四个预设方向上选取k个未被禁用的位置;
其中,k大于等于1;
选取出的k个未被禁用的位置中的任一位置在权重矩阵中对应的权重值可表示为Wi;i大于等于1小于等于k;或者,i大于等于0小于等于k-1;
步骤b:将上述任一位置对应的权重值更新为W/k+Wi。
当k=1时,步骤a、b构成十字策略(CROSS),而当k>1时,步骤a、b构成十字均值策略(ROUND)。
在一个示例中,可采用下述方式对所述目标替换PE对应的权重进行权重转移:
步骤a’:在目标替换位置的周围选取k个未被禁用的位置;
选取出的k个未被禁用的位置中的任一位置在权重矩阵中对应的权重值可表示为Wi;
步骤b’:将k个位置中任一位置对应的权重值更新为W/k+Wi。
当k=1时,步骤a’、b’构成环绕策略(ROUND),而当k>1时,步骤a’、b’构成环绕均值策略(ROUND-MEAN)。
S703:禁用目标替换PE,以令目标替换PE不执行乘加运算。
用此种方法替换的PE的最大数量(可称为通过权重转移禁用的PE的最大数量)可根据需要灵活设定。
S704:判断替换的PE的数量是否达到预设的最大数量,若是,进入S705否则,返回S701。
若达到预设的最大数量,预处理结束,得到的权重矩阵为预处理后的权重矩阵。
S705:将预处理后的权重矩阵中的元素分别写入相应的PE。
之后,可进行常规脉冲阵列的卷积操作。
对于每一层卷积层均可进行如上的优化,直至整个CNN计算完成。
为了能够进一步降低权重转移对识别准确率的影响,在这里提出一种针对性的将过滤器矩阵权重映射到PE阵列中的方式:
设某CNN模型过滤器尺寸长为R,高为S,通道数为C。用小写字母r、s代表过滤器内某一具体位置的权重。
请参见图8e,当C<R*S时,首先将通道1至通道C中过滤器内同一位置的权重(例如r=1,s=1)依次按顺序写入PE列中连续的PE,随后继续将通道1至通道C中过滤器内下一位置的权重(例如r=1,s=2)依次按顺序写入PE列中连续的PE,以此类推,直到过滤器所有位置(即r=R,s=S)的权重都被分配完成。
当C>R*S时,首先将通道1至通道C-R*S中过滤器内同一位置的权重(例如r=1,s=1)按顺序依次写入PE列中连续的PE,随后继续将通道1至通道C-R*S中过滤器内下一位置的权重(例如r=1,s=2)依次按顺序写入PE列中连续的PE,以此类推,直到通道1至通道C-R*S内的所有位置的权重(即r=R,s=S)都被分配完成。
随后再以相同的方式继续分配剩余的R*S个通道内的权重,即通道C-R*S+1至通道C内的权重。至此全部权重都被分配完成。
下面详细介绍上述提及的十字策略(CROSS)、环绕策略、十字均值策略和环绕均值策略这四种转移替换策略。
一,十字策略(CROSS):
本策略以目标替换位置为中心,在其上、下、左、右四个预设方向选取一个可用位置,将目标替换位置对应的权重值W直接加到选取的可用位置的权重值上。
具体的,可从与目标替换位置距离为1的上、下、左、右四个位置中,按“上、右、下、左”的顺时针顺序(也可为其他顺序)选取第一个可用的位置,并将目标替换位置对应的权重值W直接加到选取的可用位置的权重值上。如果距离为1的上下左右四个位置均不可用,则从与目标替换位置距离为2的上、下、左、右四个位置中再次按同样顺序选取。
举例来讲,请参见图8a,假定目标替换位置对应的权重为W,与其距离为1的可用位置为上(W1)、下(W7)和左(W3),按顺时针顺序,选取W1,将W直接加到W1上。
假定输入激活矩阵的一个子矩阵(I)与图8a所示的过滤器权重矩阵进行点乘运算,假定各位输入的激活值分别为I0至I8。则未进行权重转移前的输出结果应为:
I0*W0+I1*W1+…+I4*W+I6*W6+…+I8*W8
进行权重转移后的输出结果为:
I1*(W+W1)+…+I6*W6+…+I8*W8
根据乘法分配律,化简为:
I1*W+I1*W1+…+I6*W6+…+I8*W8
可见通过这一方式实现了使用I1替换I4,由此即实现了绕过保存了W的PE,将本该某一位置上PE进行的工作转移给了其他PE,提升了投入使用的PE的最低的最高运行频率,进而提升了脉冲阵列整体运行频率。
需要说明的是,I1和I4由同一图片的像素值变换而来,根据图像特性,大部分像素与其周围像素具有相近的RGB值。因此,I1具有和I4相似的值。因此使用I1替换I4后依然可以得到一个近似的输出结果。又由于CNN本身具有一定的容错性,在进行上述少量替换后依然可以进行正确的识别。
二,环绕策略(ROUND):
本策略以目标替换位置为中心,在其周围选取一个可用位置,将目标替换位置对应的权重值W直接加到选取的可用位置的权重值上。
具体的,可从环绕目标替换位置、且与目标替换位置距离相同的多个位置中,按顺时针顺序(或其他顺序)选取第一个可用的位置,并将目标替换位置对应的权重值W直接加到选取的可用位置的权重值上。
例如,可在环绕目标替换位置的上、左、下、右、左上、右上、左下、右下八个位置中按顺时针顺序选取第一个可用的位置(也可按照其他顺序),如果上述八个位置均不可用,则按顺时针顺序从位于其周围更远的16个位置中选取第一个可用的位置(优先选择距离最近的位置,距离相同的元素中按顺时针顺序或其他顺序选取)。
举例来讲,请参见图8b,假定目标替换位置对应的权重为W,其周围可用元素为W0、W2、W6-W8,选取W7为目标替换位置,将W直接加到W7上。
三,十字均值策略(CROSS-MEAN):
本策略首先选取一组候选位置,将目标替换位置对应的权重W除以元素个数后的结果加到每一个候选位置上去。
候选位置的选取方法与十字策略类似,第一组候选位置包括与目标替换位置距离为1的上、下、左、右四个位置。如果第一组候选位置全部不可用,则选取与目标替换位置距离为2的上、下、左、右四个位置作为第二组候选位置。
例如请参见图8c,假定目标替换位置对应的权重为W,与其距离为1的可用位置包括上(W1)、下(W7)共两个,则将W均分给这两个位置,也即,W1和W7分别加上W/2。
四,环绕均值策略(ROUND-MEAN):
本策略首先选取一组候选位置,将目标替换位置对应的权重W除以元素个数后的结果加到每一个候选位置上去。
候选位置的选取方法与环绕策略类似,第一组候选位置包括与目标替换位置的上、下、左、右、左上、右上、左下、右下八个位置。如果第一组候选位置全部不可用,则选取位于其周围更远的16个位置作为第二组候选位置。
例如请参见图8d,假定目标替换位置对应的权重为W,第一组候选位置包括W1、W2和W4共三个,因此将W平均分给这三个位置,即W1、W2和W4分别加上W/3。
除上述四种策略外,也可以采用加权分配、只选取上/下/左/右侧权重进行转移、只从左侧和右侧/上方和下方中选取权重进行转移等其他能够实现通过过滤器权重矩阵变换的方式计算出近似卷积结果的替代策略。
本技术方案通过对权重矩阵进行预处理的方式,在不影响数据流的情况下实现使用周围像素替代原始像素。由于每个PE内保存一个权重值,通过权重转移,即可实现绕过该PE,提高投入使用的PE的最低的最高运行频率,进而提升处理器整体运行频率。
可见,在本发明实施例中,先确定处理本层卷积层卷积操作的初始PE运算阵列,然后将初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列,提高参与计算的所有PE中最低的最高运行频率,进而提高脉冲阵列的运行频率,提高计算速度,以减弱制程变异效应的影响。
下面介绍卷积神经网络优化装置,卷积神经网络优化装置具体可为处理器。
请参见图9,上述装置示例性得可包括:状态表和控制模块。
其中,状态表至少用于:保存脉冲阵列中各PE的最高运行频率;
此外,状态表还可保存通过权重转移禁用的PE数量,CNN模型的相关参数、转移替换策略等信息。
控制模块可用于:
从状态表中获取各PE的最高运行频率;
确定处理本层卷积层的卷积操作的初始PE运算阵列;初始PE运算阵列包括行数n和列数m;其中,n小于等于N,m小于等于M;
将初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列(可包括PE的重新分配以及权重的转移替换)。
具体细节请参见本文前述记载,在此不作赘述。
此外,上述装置还可包括:
激活值重构模块(Activation Setup):负责将输入激活矩阵组织成适合脉冲阵列处理的格式。
在本发明其他实施例中,仍请参见图9,上述装置还可包括:
权重转移模块(WeightTransmission):负责对权重进行替换操作。
在一个示例中,在将初始PE运算阵列中最高运行频率最低的PE进行替换的方面,控制模块具体用于:
确定用于替换目标替换PE的至少一个PE;目标替换PE包括目标PE运算阵列中最高运行频率最低的PE;目标替换PE存储的权重值表示为W;目标PE运算阵列为初始PE运算阵列或者冗余优化后的PE运算阵列;
禁用目标替换PE,以令目标替换PE不执行乘加运算。
指示权重转移模块对目标替换PE对应的权重进行权重转移;
此外,控制模块还可判断替换的PE的数量是否达到预设的最大数量,若是,预处理结束,权重转移模块当前存储的权重矩阵为预处理后的权重矩阵,控制模块会指示权重转移模块将预处理后的权重矩阵中的元素分别写入相应的PE。
而若替换的PE的数量未达到预设的最大数量,控制模块可返回执行上述“确定用于替换目标替换PE的至少一个PE”的操作以及后续操作。
具体细节请参见本文前述记载,在此不作赘述。
权重转移模块内部包含多个转移器(Transmitter),转移器的个数与脉冲阵列的列数相对应,每个转移器负责其所对应一列PE的权重转移工作。
举例来讲,对于内部包含256*256个PE的脉冲阵列,权重转移模块其内部包含256个转移器。
每个转移器内部包含存储单元(Storage)以及运算器(Arithmetic Unit),用以对脉冲阵列对应PE列所保存的权重进行转移替换,并向脉冲阵列传递转移替换后的权重。
权重转移模块将过滤器矩阵权重映射到PE阵列中的方式可参见本文前述记载,在此不赘述。
在一个示例中,在将初始PE运算阵列中最高运行频率最低的PE进行替换的方面,上述控制模块可具体用于:
确定脉冲阵列中的冗余PE行和冗余PE列;
对初始PE执行冗余替换,得到冗余优化后的PE运算阵列;
其中,执行冗余替换包括:
执行至少一次的冗余行替换操作,直至不存在未被禁用的冗余PE行;
执行至少一次的冗余列替换操作,直至不存在未被禁用的冗余PE列。
具体细节请参见本文前述记载,在此不作赘述。
下面以VGG-16模型(一种用于图像识别分类的CNN模型)为例,对上述各模块所执行的操作进行介绍:
首先按照S401-S403的方式获得各PE的最高运行频率。可由控制模块、状态表和激活值重构模块以及脉冲阵列共同协作执行上述S401-S403。
当脉冲阵列执行当前层卷积计算时,控制模块首先从状态表中读取脉冲阵列中各PE的最高运行频率、模型下一层模型大小、CNN模型的相关参数。
随后控制模块根据取得的信息分别计算出下一层所需初始PE运算阵列、冗余PE位置,对初始PE运算阵列进行冗余替换,此外还需从状态表获取“通过权重转移禁用的PE数量”以及转移替换策略等信息,并根据这些信息控制权重转移模块预处理权重矩阵,并组织成将要传递给脉冲阵列的格式。
由于本部分操作是与其当前层的卷积计算同时进行的,且用时较少,故无多余的时间开销(由于VGG-16第一层规模很小,虽然其没有上一层,但其转移替换操作所用时间与CNN整体计算所用时间相比几乎可以忽略不计)。此外激活值重构模块同时根据控制器计算出的分配方案组织激活值的格式,以便于后续使用脉冲阵列进行计算。
当脉冲阵列完成VGG-16当前层计算后,控制器按照上一步骤中计算出的PE重分配方案(包括被禁用的PE)控制脉冲阵列:主要通过向PE中的多路分配器传递控制信号(ControlSignal)控制使用该PE进行计算或是跳过(禁用)该PE。
随后使脉冲阵列运行在保证计算正确的频率上工作,即不超过优化后的PE运算阵列中最低的最高运行频率。随后权重转移模块将转移替换后的权重矩阵(也即预处理后的权重矩阵)传送进脉冲阵列中,依次保存在对应位置PE的权重寄存器中。
完成后激活值重构模块开始向右依次将激活值传入脉冲阵列中,每个周期向右前进1个PE,与PE中保存的权重相乘再与部分和相加,将结果传递给下方PE,直到本层CNN计算完成。
随后以同样方式处理VGG-16其余卷积层,共16层,直到CNN计算完成。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于脉冲阵列的卷积神经网络优化方法,其特征在于,
所述卷积神经网络包括至少一层卷积层;所述卷积层包括至少一组过滤器;任一卷积层执行的卷积操作包括:使用过滤器在输入激活矩阵上进行扫描,其中,所述过滤器每扫描到所述输入激活矩阵的一个位置就使用所述过滤器的权重进行一次矩阵点乘计算,得到输出激活矩阵中的一个元素;
所述脉冲阵列用于执行每一卷积层所涉及的矩阵点乘计算,所述脉冲阵列包括N行M列处理单元PE;其中,参与矩阵点乘计算的任一PE的寄存器,用于存储相应过滤器的权重值;
所述方法包括:
确定处理本层卷积层的卷积操作的初始PE运算阵列;所述初始PE运算阵列包括行数n和列数m;其中,n小于等于N,m小于等于M;
将所述初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列。
2.如权利要求1所述的方法,其特征在于,所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换包括:
确定所述脉冲阵列中的冗余PE行和冗余PE列;
对所述初始PE运算阵列执行冗余替换,得到冗余优化后的PE运算阵列;
其中,所述执行冗余替换包括:
执行至少一次的冗余行替换操作,以及,执行至少一次的冗余列替换操作中的至少一种。
3.如权利要求2所述的方法,其特征在于,
所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换包括:
确定用于替换目标替换PE的至少一个PE;所述目标替换PE为所述初始PE运算阵列或者所述冗余优化后的PE运算阵列中最高运行频率最低的PE;
对所述目标替换PE对应的权重进行权重转移;
禁用所述目标替换PE,以令所述目标替换PE不执行乘加运算。
4.如权利要求3所述的方法,其特征在于,
所述目标替换PE对应的权重值表示为W,其在过滤器权重矩阵中对应的位置为目标替换位置;
所述对所述目标替换PE对应的权重进行权重转移包括:
在以所述目标替换位置为中心的四个预设方向上选取k个未被禁用的位置;所述四个预设方向包括:所述目标替换位置的正上方,所述目标替换位置的正下方,所述目标替换位置的正左方和所述目标替换位置的正右方;k大于等于1;所述k个未被禁用的位置中的任一位置当前对应的权重值表示为Wi;i大于等于1小于等于k;或者,i大于等于0小于等于k-1;
或者,
在围绕所述目标替换位置的位置中选取k个未被禁用的位置;
所述对所述目标替换位置对应的权重进行权重转移包括:
将所述任一位置对应的权重值更新为W/k+Wi。
5.如权利要求3所述的方法,其特征在于,
所述冗余行替换操作包括:
从所述脉冲阵列所有未被禁用的PE中,选出最高运行频率最低的PE;选出的PE为目标PE;
禁用所述目标PE所在的PE行;
若所述目标PE不在冗余PE行中,选择未被禁用的冗余PE行替换所述目标PE所在的PE行;
所述冗余列替换操作包括:
从所述脉冲阵列所有未被禁用的PE中,选出最高运行频率最低的PE;选出的PE为目标PE;
禁用所述目标PE所在的PE列;
若所述目标PE不在冗余PE列中,选择未被禁用的冗余PE列替换所述目标PE所在的PE列。
6.如权利要求4所述的方法,其特征在于,在所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换之前,还包括:
获取所述脉冲阵列中各PE的最高运行频率。
7.如权利要求6所述的方法,其特征在于,所述获取所述脉冲阵列中各PE的最高运行频率包括:
将所述脉冲阵列中各PE对应的权重值设置为最大值;
对所述脉冲阵列中除第j行PE行之外的所有PE行进行禁用;j大于等于1小于等于N;或者,j大于等于0小于等于N-1;
以令第j行PE行中各PE均可正常运行的运行频率为起点运行频率,执行多次最高运行频率获取操作,直至第j行PE行中所有PE的最高运行频率均被确定;
其中,第一次最高运行频率获取操作中使用的运行频率为所述起点运行频率,第n次最高运行频率获取操作中的运行频率fn高于第n-1次最高运行频率获取操作中的运行频率fn-1;n大于1;
第n次最高运行频率获取操作包括:
向所述第j行PE行传入二进制下全为1的激活值;所述第j行PE行中的所有PE均使用所述激活值进行乘法运算;
将所述第j行PE行中各PE的运算结果与相应的预期结果进行比较;
将运算结果首次与预期结果不相同的PE的最高运行频率确定为fn-1。
8.一种基于脉冲阵列的卷积神经网络优化装置,其特征在于,
所述卷积神经网络包括至少一层卷积层;所述卷积层包括至少一组过滤器;任一卷积层执行的卷积操作包括:使用过滤器在输入激活矩阵上进行扫描,其中,所述过滤器每扫描到所述输入激活矩阵的一个位置就使用所述过滤器的权重进行一次矩阵点乘计算,得到输出激活矩阵中的一个元素;
所述脉冲阵列用于执行每一卷积层所涉及的卷积计算,所述脉冲阵列包括N行M列处理单元PE;其中,参与卷积计算的任一PE的寄存器,用于存储相应过滤器的权重值;
所述装置包括:
状态表,至少用于:保存所述脉冲阵列中各PE的最高运行频率;
控制模块,用于:
确定处理本层卷积层的卷积操作的初始PE运算阵列;所述初始PE运算阵列包括行数n和列数m;其中,n小于等于N,m小于等于M;
将所述初始PE运算阵列中最高运行频率最低的PE进行替换,以得到优化后的PE运算阵列。
9.如权利要求8所述的装置,其特征在于,
在所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换的方面,所述控制模块具体用于:
确定所述脉冲阵列中的冗余PE行和冗余PE列;
对所述初始PE执行冗余替换,得到冗余优化后的PE运算阵列;
其中,所述执行冗余替换包括:
执行至少一次的冗余行替换操作,以及,执行至少一次的冗余列替换操作中的至少一种。
10.如权利要求9所述的装置,其特征在于,还包括权重转移模块;
在所述将所述初始PE运算阵列中最高运行频率最低的PE进行替换的方面,所述控制模块具体用于:
确定用于替换目标替换PE的至少一个PE;所述目标替换PE包括目标PE运算阵列中最高运行频率最低的PE;所述目标替换PE存储的权重值表示为W;所述目标PE运算阵列为所述初始PE运算阵列或者所述冗余优化后的PE运算阵列;
指示所述权重转移模块对所述目标替换PE对应的权重进行权重转移;
禁用所述目标替换PE,以令所述目标替换PE不执行乘加运算;
所述状态表还用于:保存被进行权重转移的PE数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911100653.6A CN110852422B (zh) | 2019-11-12 | 2019-11-12 | 基于脉冲阵列的卷积神经网络优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911100653.6A CN110852422B (zh) | 2019-11-12 | 2019-11-12 | 基于脉冲阵列的卷积神经网络优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110852422A true CN110852422A (zh) | 2020-02-28 |
CN110852422B CN110852422B (zh) | 2022-08-16 |
Family
ID=69601782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911100653.6A Active CN110852422B (zh) | 2019-11-12 | 2019-11-12 | 基于脉冲阵列的卷积神经网络优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110852422B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108902A (zh) * | 2023-02-22 | 2023-05-12 | 成都登临科技有限公司 | 采样操作实现系统、方法、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630593A (zh) * | 2014-11-24 | 2016-06-01 | 三星电子株式会社 | 用于处理中断的方法 |
CN107977355A (zh) * | 2017-11-17 | 2018-05-01 | 四川长虹电器股份有限公司 | 基于词向量训练的电视节目推荐方法 |
US20180322607A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
US20190079801A1 (en) * | 2017-09-14 | 2019-03-14 | Electronics And Telecommunications Research Institute | Neural network accelerator including bidirectional processing element array |
CN109709485A (zh) * | 2019-02-01 | 2019-05-03 | 北京长城华冠汽车科技股份有限公司 | 动力电池的故障检测方法、装置、介质和电子设备 |
CN109819251A (zh) * | 2019-01-10 | 2019-05-28 | 北京大学 | 一种脉冲阵列信号的编解码方法 |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110232434A (zh) * | 2019-04-28 | 2019-09-13 | 吉林大学 | 一种基于属性图优化的神经网络架构评估方法 |
CN110378468A (zh) * | 2019-07-08 | 2019-10-25 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
-
2019
- 2019-11-12 CN CN201911100653.6A patent/CN110852422B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630593A (zh) * | 2014-11-24 | 2016-06-01 | 三星电子株式会社 | 用于处理中断的方法 |
US20180322607A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
US20190079801A1 (en) * | 2017-09-14 | 2019-03-14 | Electronics And Telecommunications Research Institute | Neural network accelerator including bidirectional processing element array |
CN107977355A (zh) * | 2017-11-17 | 2018-05-01 | 四川长虹电器股份有限公司 | 基于词向量训练的电视节目推荐方法 |
CN109819251A (zh) * | 2019-01-10 | 2019-05-28 | 北京大学 | 一种脉冲阵列信号的编解码方法 |
CN109709485A (zh) * | 2019-02-01 | 2019-05-03 | 北京长城华冠汽车科技股份有限公司 | 动力电池的故障检测方法、装置、介质和电子设备 |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110232434A (zh) * | 2019-04-28 | 2019-09-13 | 吉林大学 | 一种基于属性图优化的神经网络架构评估方法 |
CN110378468A (zh) * | 2019-07-08 | 2019-10-25 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
Non-Patent Citations (5)
Title |
---|
JEFF JUN ZHANG等: "《Fault-Tolerant Systolic Array Based Accelerators for Deep Neural Network Execution》", 《IEEE DESIGN AND TEST》 * |
MAODI MA等: "《Process Variation Mitigation on Convolutional Neural Network Accelerator Architecture》", 《SEMANTIC SCHOLAR》 * |
刘新群: "《基于FPGA的数字瞬时测频接收机研究》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
顾荣: "《大数据处理技术与系统研究》", 《中国博士学位论文全文数据库 信息科技辑》 * |
马茂棣: "《制程变异影响下卷积神经网络加速器的优化设计研究》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108902A (zh) * | 2023-02-22 | 2023-05-12 | 成都登临科技有限公司 | 采样操作实现系统、方法、电子设备及存储介质 |
CN116108902B (zh) * | 2023-02-22 | 2024-01-05 | 成都登临科技有限公司 | 采样操作实现系统、方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110852422B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7245338B2 (ja) | ニューラルネットワークプロセッサ | |
KR102261768B1 (ko) | 대안적인 루프 제한 | |
CN109034373B (zh) | 卷积神经网络的并行处理器及处理方法 | |
CN111338601B (zh) | 用于存储器内乘法及累加运算的电路及其方法 | |
CN107169560B (zh) | 一种自适应可重构的深度卷积神经网络计算方法和装置 | |
CN116541647A (zh) | 运算加速器、处理方法及相关设备 | |
JP2021509747A (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
US20210201120A1 (en) | Inference apparatus, convolution operation execution method, and program | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN112395092A (zh) | 数据处理方法及人工智能处理器 | |
CN110852422B (zh) | 基于脉冲阵列的卷积神经网络优化方法及装置 | |
US11494627B1 (en) | Dynamic tile parallel neural network accelerator | |
US20210319291A1 (en) | Neural network computation apparatus having systolic array | |
JP6906622B2 (ja) | 演算回路および演算方法 | |
US11687831B1 (en) | Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference | |
EP3855443B1 (en) | Memory calibration device, system and method | |
KR102373802B1 (ko) | 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법 | |
JP7475164B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
US11631002B2 (en) | Information processing device and information processing method | |
CN115759212A (zh) | 卷积运算电路及方法、神经网络加速器和电子设备 | |
CN113392959A (zh) | 一种在计算系统中重构架构的方法及计算系统 | |
US7472392B2 (en) | Method for load balancing an n-dimensional array of parallel processing elements | |
JP5045652B2 (ja) | 相関処理装置及びその相関処理装置で読みとり可能な媒体 | |
CN113869507B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |