CN108537330A - 应用于神经网络的卷积计算装置及方法 - Google Patents
应用于神经网络的卷积计算装置及方法 Download PDFInfo
- Publication number
- CN108537330A CN108537330A CN201810194142.4A CN201810194142A CN108537330A CN 108537330 A CN108537330 A CN 108537330A CN 201810194142 A CN201810194142 A CN 201810194142A CN 108537330 A CN108537330 A CN 108537330A
- Authority
- CN
- China
- Prior art keywords
- matrix
- ccu
- convolutional calculation
- data
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 155
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 26
- 239000011159 matrix material Substances 0.000 claims abstract description 149
- 238000012545 processing Methods 0.000 claims abstract description 33
- 230000003139 buffering effect Effects 0.000 claims abstract description 26
- 230000008569 process Effects 0.000 claims abstract description 18
- 102000008297 Nuclear Matrix-Associated Proteins Human genes 0.000 claims description 28
- 108010035916 Nuclear Matrix-Associated Proteins Proteins 0.000 claims description 28
- 210000000299 nuclear matrix Anatomy 0.000 claims description 28
- 230000009466 transformation Effects 0.000 claims description 21
- 210000004027 cell Anatomy 0.000 claims description 16
- 230000001186 cumulative effect Effects 0.000 claims description 15
- 239000013589 supplement Substances 0.000 claims description 12
- 238000009825 accumulation Methods 0.000 claims description 7
- 238000000844 transformation Methods 0.000 claims description 6
- 235000013399 edible fruits Nutrition 0.000 claims description 5
- 238000000205 computational method Methods 0.000 claims description 2
- 210000005036 nerve Anatomy 0.000 claims 1
- 238000013527 convolutional neural network Methods 0.000 description 11
- 239000000047 product Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
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/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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明属于数字信号处理领域,具体涉及一种应用于神经网络的卷积计算装置及方法。旨在解决卷积计算过程中资源消耗大、读入数据利用率低的问题。具体为:对输入数据矩阵按行处理,每两行数据逐列串行输入到乘累加器阵列做乘累加运算;乘累加器阵列依据卷积核维度(M2,N2)进行部署,可并行处理2×M2×N2次乘法运算;利用卷积运算规律,使两组乘累加器阵列移位相加,加速数据运算。本发明挖掘计算过程中的并行性提高系统计算效率;同时复用输入数据,计算结果直接进入池化单元,可减少数据读写;仅需要一个行缓冲空间,资源需求小;可实现不同维数卷积计算,具有计算灵活性、普适性、高效性以及低功耗特性。
Description
技术领域
本发明属于数字信号处理领域,具体涉及一种应用于神经网络的卷积计算装置及方法。
背景技术
卷积是数学中的一种重要运算,广泛应用在数字信号处理中。
卷积可通过时域或者频域方法计算。时域方法,主要涉及乘法和加法运算,不同点的数据之间不存在数据依赖性和时间相关性,可通过并行化计算结构加速。频域方法将卷积序列通过傅里叶变换转换到频域,然后频域数据直接相乘,最后反变换得到卷积计算结果。
卷积神经网络(Convolutional Neural Network,简称CNN)是深度学习中的重要算法模型,近年来成为图像识别领域的研究热点,已经提出了AlexNet、VGG等影响力较大的卷积神经网络模型。随着模型识别率的提高,模型的规模逐渐变大,运算量急剧攀升,对CNN进行高效计算的需求迫切。
CNN中的卷积计算与数学上的卷积略有不同,不可用频域计算方法求解,只能使用时域方法通过乘累加运算实现。目前采用的加速方法主要是硬件并行,多个数据并行输入、多个数据并行输出、卷积核中多个像素点并行计算。一种思想是同一时刻使用尽量多的硬件资源实现CNN中的一层,然后将结果存储在片外,或者片内临时存储空间,再使用尽量多的硬件资源实现CNN后续一层。另一种思想是挖掘CNN多层之间的流水化特点,把CNN所有层部署进硬件,每一层占用流水线的一级,多个输入数据或者图像形成流水操作。采用以上方法进行算法加速,输入输出数据带宽要求大,读入数据需要较大缓冲空间,临时运算结果需要大量片内存储空间,或者通过多次数据移动存进片外存储器。
发明内容
为了解决现有技术中的上述问题,即为了解决卷积计算过程中资源消耗大、读入数据利用率低的问题,本发明的一方面,提供了一种应用于神经网络的卷积计算装置,包括:数据输入端口、卷积计算单元CCU、行缓冲空间、池化单元、数据输出端口;
所述数据输入端口,用于输入待进行卷积计算的数据矩阵;
所述卷积计算单元CCU,包含多个乘累加运算处理单元,对待进行卷积计算的数据矩阵进行卷积计算;
所述行缓冲空间,用于存储所述卷积计算单元CCU中乘累加计算过程中使用的乘累加器MAC的初始值、累加产生的中间数据;
所述池化单元,用于存储卷积计算单元CCU输出结果,对前一次输出结果和当前输出结果进行池化,并发送至所述数据输出端口;
所述数据输出端口,用于接收所述池化单元的输出数据并输出。
进一步地,所述池化单元包括池化层、缓存层;
所述缓存层,配置为存储卷积计算单元CCU前一次的输出的卷积结果;
所述池化层,配置为对卷积计算单元CCU当前的输出结果与所述缓存层中存储的卷积计算单元CCU前一次的输出结果进行池化。
进一步地,还包括矩阵维度计算单元,用于依据输入数据矩阵维度(M1,N1)与卷积核矩阵维度(M2,N2),确定卷积计算结果矩阵维度(M,N),其计算公式为:
M=M1-M2+1,N=N1-N2+1。
进一步地,所述卷积计算单元CCU包括两个乘累加运算处理单元CCU1和CCU2。
进一步地,所述乘累加运算处理单元包括多个乘累加器MAC,且
在卷积计算过程中,所述乘累加运算处理单元配置的维度与卷积核矩阵维度(M2,N2)相同,配置的乘累加器MAC的个数为M2×N2。
进一步地,还包括旋转变换单元,用于将初始卷积核矩阵W进行180°旋转变换,得到卷积核矩阵W’,并分别输入至两个乘累加运算处理单元CCU1和CCU2;
旋转变换表达式如下所示,
其中
为初始卷积核矩阵W,
为经旋转变换后卷积核矩阵W’。
进一步地,还包括矩阵补充单元,用于在卷积计算时,若输入的矩阵的行数为偶数,则直接将输入矩阵送入卷积计算单元CCU进行卷积计算,若输入的矩阵的行数为奇数,则在输入矩阵的最后补充一行全为0的矩阵,并将补充后的输入矩阵输入卷积计算单元CCU进行卷积计算。
进一步地,所述行缓冲空间依据输入数据矩阵维度(M1,N1)配置卷积初始值,所述卷积初始值的个数为M1×N1,且
所述卷积初始值为0或者某偏置值b。
本发明的另一方面,还提供了一种应用于神经网络的卷积计算方法,基于上述的应用于神经网络的卷积计算装置,具体包括:
步骤S1:向数据输入端口输入初始卷积核矩阵W、数据矩阵;
步骤S2:卷积计算装置依据初始卷积核矩阵W、数据矩阵进行卷积计算之前的配置操作;
步骤S3:若输入矩阵的行数为偶数,则执行步骤S4,若为奇数则在输入矩阵的最后补充一行矩阵,补充的数值为0,执行步骤S4;
步骤S4:卷积计算单元CCU读取输入数据矩阵的相邻行的两个元素Xi,j和Xi+1,j,与卷积核矩阵W’进行乘累加运算得到CCU单元矩阵;
步骤S5:CCU单元矩阵中,第1列的上(M2+1)/2个元素输送进池化单元的缓存层,第1列的下(M2+1)/2个元素输送进行缓冲空间;
步骤S6:判断此时是否满足j=N1-1,若满足则执行步骤S7,否则j+1后执行步骤S4;
步骤S7:判断此时是否满足i+1=M1-1,若满足则将池化单元池化后数据输出,卷积计算结束,否则将CCU单元矩阵中矩阵元素CCUp,q存入行缓冲空间,执行步骤S8,
其中,p=(M2+1)/2,(M2+1)/2+1,…,M2,q=0,1,2,3,…,N2-1;
步骤S8:将i+2后,用行缓冲空间中的前(M2+1)*N2/2个数据初始化CCU1中矩阵元素CCUc,d的乘累加器MAC,CCU1和CCU2中剩余的乘累加器MAC初始化为卷积初始值,执行步骤S4,
其中,c=0,1,…,(M2+1)/2-1,d=0,1,…,N2-1。
进一步地,所述步骤S4具体为:
步骤S41:卷积计算单元CCU读取数据矩阵的相邻行的两个元素Xi,j和Xi+1,j;
步骤S42:卷积计算单元CCU将Xi,j广播至CCU1的M2×N2个乘累加器MAC,与卷积核矩阵W’元素完成乘法运算得到CCU1数据,同时,将Xi+1,j广播至CCU2的M2×N2个乘累加器MAC,与卷积核矩阵W’元素完成乘法运算得到CCU2数据;
步骤S43:CCU1数据与CCU2数据相同下标数据累加得到所述CCU单元矩阵。
进一步地,所述步骤S2具体为:
向行缓冲空间存储卷积初始值;
矩阵维度计算单元依据输入数据矩阵和卷积核矩阵的维度,配置卷积计算结果矩阵维度;
转变换单元将初始卷积核矩阵W进行旋转变换得到卷积核矩阵W’,并分别输入至两个乘累加运算处理单元CCU1和CCU2;
卷积计算单元CCU依据卷积核矩阵W’配置乘累加运算处理单元的维度和乘累加运算处理单元中乘累加器MAC的个数。
进一步地,所述步骤S41在第一次读取数据矩阵的相邻行的两个元素Xi,j和Xi+1,j时,i和j均为0。
本领域技术人员应该能够意识到,结合本发明的应用于神经网络的卷积计算装置及方法具有如下优点:
本发明挖掘计算过程中的并行性,两个乘累加运算处理单元CCU1和CCU2并行进行乘累加运算,且计算过程中重复利用输入数据,可减少数据读写操作,提高装置计算效率;计算结果直接进入池化单元,且仅需一个缓存层,且本发明装置仅需要一个行缓冲空间,存储资源需求小;针对不同维度的卷积计算需求,基于卷积计算单元CCU,可配置乘累加运算处理单元的维度及乘累加器MAC的个数,改变各乘累加处理单元之间的数据走向,实现不同维数卷积计算,具有计算灵活性。
附图说明
图1示出了本发明一种实施例的卷积计算装置示意性框图;
图2示出了本发明一种实施例的乘累加器MAC的硬件结构示意图;
图3示出了本发明一种实施例的卷积计算方法流程图;
图4示出了本发明一种实施例的卷积计算过程示意图;
图5示出了本发明一种实施例的卷积计算单元CCU内CCU1和CCU2数据累加过程示意图;
图6示出了本发明一种实施例的卷积计算流程示意图。
具体实施方式
下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
采用目前已有的并行化方法对卷积神经网络算法加速,输入输出数据带宽要求大,读入数据需要较大缓冲空间,临时运算结果需要大量片内存储空间,或者通过多次数据移动存进片外存储器。为了解决卷积计算过程中资源消耗大、读入数据利用率低的问题,本发明提供了一种应用于神经网络的卷积计算装置及方法。
一种实施例的应用于神经网络的卷积计算装置,如图1所示,包括:数据输入端口、卷积计算单元CCU、行缓冲空间、池化单元、数据输出端口;
数据输入端口,用于输入待进行卷积计算的数据矩阵;
卷积计算单元CCU,包含多个乘累加运算处理单元,对待进行卷积计算的数据矩阵进行卷积计算;
行缓冲空间,用于存储所述卷积计算单元CCU中乘累加计算过程中使用的累加器的初始值、累加产生的中间数据;
池化单元,用于存储卷积计算单元CCU输出结果,对前一次输出结果和当前输出结果进行池化,并发送至数据输出端口;
数据输出端口,用于接收池化单元的输出数据并输出。
进一步地,卷积计算单元CCU包括两个乘累加运算处理单元CCU1和CCU2;乘累加运算处理单元包括多个乘累加器MAC,且在卷积计算过程中,上述乘累加运算处理单元配置的维度与卷积核矩阵维度(M2,N2)相同,配置的乘累加器MAC的个数为M2×N2。乘累加器MAC的硬件结构如图2所示,乘累加器MAC由一个乘法器、一个加法器、一个多路选择器和一个数据寄存器组成。乘累加器MAC接收卷积核矩阵的权重w和输入矩阵的权重x,求得其乘积后,与自身或者其它数据源累加得到计算结果y。
本发明的卷积计算装置,在卷积计算过程中,采用CCU1和CCU2进行乘累加运算,基于本发明卷积计算方法CCU1和CCU2的部分乘累加器MAC可以复用一个加法器,从而节省加法器资源。具体地,CCU1和CCU2上下错一行,则CCU1和CCU2存在交叠处,在CCU1和CCU2完成乘法运算后,进行加法运算时,则在CCU1和CCU2交叠处的乘累加器可以复用一个加法器,如图5中所示,CCU1的MAC4和CCU2的MAC1可以使用同一个加法器,CCU1的MAC8和CCU2的MAC5也可以使用同一个加法器。
进一步地,上述行缓冲空间用于存储上述卷积计算单元CCU中乘累加计算过程中使用的累加器的初始值、累加产生的中间数据。累加器的初始值,即乘累加计算中使用的乘累加器MAC的初始值。累加产生的中间数据,即累加产生的部分和数据,是运算中间数据。
在卷积计算之前,上述行缓冲空间依据输入数据矩阵维度(M1,N1)配置卷积初始值,卷积初始值的个数为M1×N1,且卷积初始值为0或者某偏置值b。
进一步地,上述池化单元包括池化层、缓存层;缓存层,配置为存储卷积计算单元CCU前一次的输出的卷积结果;池化层,配置为对卷积计算单元CCU当前的输出结果与缓存层中存储的卷积计算单元CCU前一次的输出结果进行池化。
例如,在卷积核维度为(3,3)的卷积计算中,CCU每次计算输出2个卷积结果,池化单元中缓存层提供2个缓存空间,存储前一次CCU输出的卷积结果;池化层,对当前计算CCU输出的2个卷积结果与缓存空间中存储的前一次输出的2个缓存结果,共4个值,做取最大值或者取平均值的池化操作。
进一步地,本发明实施例的卷积计算装置还包括矩阵维度计算单元,用于依据输入数据矩阵维度(M1,N1)与卷积核维度(M2,N2),确定卷积计算结果矩阵维度(M,N),其计算方法如公式(1)、公式(2)所示:
M=M1-M2+1 (1)
N=N1-N2+1 (2)
进一步地,本发明实施例的卷积计算装置还包括旋转变换单元,用于将初始卷积核矩阵W进行180°旋转变换,得到卷积核矩阵W’,并分别输入至两个乘累加运算处理单元CCU1和CCU2。在卷积计算启动之前,初始卷积核矩阵W经数据入端口输入至旋转变换单元,进行旋转变化得到卷积核矩阵W’。数据输入端口设置有数据选择开关,当输入为初始卷积核矩阵W时,数据输入端口与旋转变换单元连通,将初始卷积核矩阵W输入至旋转变换单元;当输入为数据矩阵时,数据输入端口与卷积计算单元CCU连通,将数据矩阵元素输入至卷积计算单元CCU。
旋转变换如表达式(3)所示,
其中
为初始卷积核矩阵W,
为经旋转变换后卷积核矩阵W’。
进一步地,本发明实施例的卷积计算装置还包括矩阵补充单元,用于在卷积计算时,若输入的矩阵的行数为偶数,则直接将输入矩阵送入卷积计算单元CCU进行卷积计算,若输入的矩阵的行数为奇数,则在输入矩阵的最后补充一行全为0的矩阵,并将补充后的输入矩阵输入卷积计算单元CCU进行卷积计算,需要说明是,配置卷积计算结果矩阵维度时,使用输入矩阵原始数据的维度,该矩阵补充单元只是在卷积算时,对输入矩阵进行处理。具体地,当输入矩阵的行数为奇数时,若输入矩阵如表达式(4)所示,
则补充数值为0的一行矩阵后,如表达式(5)所示,
本发明实施例的应用于神经网络的卷积计算方法,基于上述卷积计算装置,具体包括如下步骤:
步骤S1:向数据输入端口输入初始卷积核矩阵W、数据矩阵;
步骤S2:卷积计算装置依据初始卷积核矩阵W、数据矩阵进行卷积计算之前的配置操作;
步骤S3:若输入矩阵的行数为偶数,则执行步骤S4,若为奇数则在输入矩阵的最后补充一行矩阵,补充的数值为0,执行步骤S4;
步骤S4:卷积计算单元CCU读取输入数据矩阵的相邻行的两个元素Xi,j和Xi+1,j,与卷积核矩阵W’进行乘累加运算得到CCU单元矩阵;
步骤S5:CCU单元矩阵中,第1列的上(M2+1)/2个元素输送进池化单元的缓存层,第1列的下(M2+1)/2个元素输送进行缓冲空间;
步骤S6:判断此时是否满足j=N1-1,若满足则执行步骤S7,否则j+1后执行步骤S3;
步骤S7:判断此时是否满足i+1=M1-1,若满足则将池化单元池化后数据输出,卷积计算结束,否则将CCU单元矩阵中矩阵元素CCUp,q存入行缓冲空间,执行步骤S8,
其中,p=(M2+1)/2,(M2+1)/2+1,…,M2,q=0,1,2,3,…,N2-1;
步骤S8:将i+2后,用行缓冲空间中的前(M2+1)*N2/2个数据初始化CCU1中矩阵元素CCUc,d的乘累加器MAC,CCU1和CCU2中剩余的乘累加器MAC初始化为卷积初始值,执行步骤S4,
其中,c=0,1,…,(M2+1)/2-1,d=0,1,…,N2-1。
进一步地,上述步骤S2具体为:
向行缓冲空间存储卷积初始值,具体为:依据输入数据矩阵维度(M1,N1)配置M1×N1个卷积初始值,且卷积初始值为0或者某偏置值b;
矩阵维度计算单元依据输入数据矩阵的维度和卷积核矩阵的维度,配置卷积计算结果矩阵维度。当输出卷积结果时,依据卷积计算结果矩阵维度得到卷积计算结果矩阵,如:卷积计算结果矩阵维度为2×3,卷积计算结果依次为y1,1和y2,1、y1,2和y2,2、y1,3和y2,3,则卷积计算结果矩阵为:
旋转变换单元将初始卷积核矩阵W进行旋转变换得到卷积核矩阵W’,并分别输入至两个乘累加运算处理单元CCU1和CCU2。
卷积计算单元CCU依据卷积核矩阵W’配置乘累加运算处理单元的维度和乘累加运算处理单元中乘累加器MAC的个数,累加运算处理单元配置的维度与卷积核矩阵的维度(M2,N2)相同,配置的乘累加器的个数为M2×N2。
进一步地,上述步骤S3是基于矩阵补充单元判断输入矩阵的行数,本发明的卷积计算过程中每次读取输入矩阵的元素是上下相邻的两个元素,输入矩阵行数应为偶数,所以若输入矩阵的行数为偶数,则执行上述步骤S4,若为奇数则在输入矩阵的最后补充一行矩阵,补充的数值为0。
进一步地,上述步骤S4具体为:
步骤S41:卷积计算单元CCU读取数据矩阵的相邻行的两个元素Xi,j和Xi+1,j;
步骤S42:卷积计算单元CCU将Xi,j广播至CCU1的M2×N2个乘累加器MAC,与卷积核矩阵W’元素完成乘法运算得到CCU1数据,同时,将Xi+1,j广播至CCU2的M2×N2个乘累加器MAC,与卷积核矩阵W’元素完成乘法运算得到CCU2数据;
步骤S43:CCU1数据与CCU2数据相同下标数据累加得到所述CCU单元矩阵。
综上所述,基于上述应用于神经网络的卷积计算装置及方法实现卷积计算,通过合理安排卷积核计算过程,提高输入数据利用率,减少必需的片内缓冲或者存储空间,在并行计算的同时降低资源消耗,完成高效的卷积运算。
本发明另一实施例中,对本发明涉及的计算原理及计算过程予以详细说明。
数据矩阵X维数为M1×N1,卷积核W维数为M2×N2,卷积计算结果Y的输出维数为M×N,其中M=M1-M2+1,N=N1-N2+1。卷积过程是卷积核W滑动遍历数据矩阵X的各个元素,通过元素点乘后相加,得到结果矩阵Y上各位置元素。
例如:令输入矩阵X的维数M1=4,N1=5,卷积核W维数为M2=3,N2=3,则卷积计算结果Y的维数为M=2,N=3。
卷积计算如表达式(6)所示
结果矩阵Y中的每一个元素yi,j按公式(7)计算:
yi,j=xi-1,j-1×w0,0+xi-1,j×w0,1+xi-1,j+1×w0,2+xi,j-1×w1,0+xi,j×w1,1+xi,j+1×w1,2+xi+1,j-1×w2,0+xi+1,j×w2,1+xi+1,j+1×w2,2 (7)
图4所示是对输入矩阵X(M1×N1)和初始卷积核矩阵W(M2×N2)进行卷积计算得到Y(M×N)具体示例,
图4中,输入矩阵X(M1×N1)为:
初始卷积核矩阵W(M2×N2)为:
则卷积计算结果Y(M×N)为:
图5所示为本发明一种实施例的卷积计算单元CCU内CCU1和CCU2数据累加过程示意图,对于输入矩阵X的一个元素xi,j,它与卷积核矩阵W′的每一个元素的乘积,可分别得到卷积结果矩阵Y中M2×N2个元素的部分累加和CCU1和CCU2,具体为:
CCU1接收输入矩阵元素xi,j,与卷积核矩阵W′的每个元素进行乘法运算,其方法如公式(8)所示,
CCU2接收输入矩阵元素xi+1,j,与卷积核矩阵W′的每个元素进行乘法运算,其方法如公式(9)所示,
其中,为卷积核矩阵W′,矩阵元素y计算过程如公式(10)-(18)所示
将公式(8)和公式(9)计算得到的CCU1(M2,N2)与CCU2(M2,N2)对应相同下标的数据累加得到CCU(M2+1,N2)单元矩阵。
最后,卷积结果矩阵Y的元素yi,j是累加器进行M2×N2次累加的结果。
下面基于本发明的应用于神经网络的卷积计算装置及方法,详细描述本发明卷积计算的技术细节。
对于公示(6)的卷积计算过程,输入矩阵X(M1×N1)=X(4×5),初始卷积核矩阵W(M2×N2)=W(3×3),卷积计算得到Y(M×N)=Y(2×3)。将卷积运算单元CCU配置为两组乘累加单元CCU1和CCU2,分别具有M2×N2=9个乘累加运算处理单元;向行缓冲空间的初始值存储空间写入初始值;将原权重矩阵W经旋转变换后,得到卷积核矩阵W′;计算卷积计算结果矩阵维度;数据行列索引i和j初始化为0,进入数据计算流程。需要说明的是,本实施例的输入矩阵行数为偶数行,所以矩阵补充单元不对输入矩阵做处理,直接将输入矩阵输送给卷积计算单元CCU。
第一次计算:读入两个数据x0,0和x1,0,广播给CCU1和CCU2中的共计18个MAC,x0,0和x1,0与对应的权重数据做乘法操作。CCU1和CCU2的结果分别为
和
CCU2与CCU1中的相同下标数据累加,卷积运算单元CCU中最终数据为
其中,和完成2次累加。和进入池化缓存,和存入行缓存空间。数据列索引j递增。重复上述计算步骤。
第二次计算:接收下一组数据x0,1和x1,1,卷积运算单元CCU中最终数据为:
其中,完成2次累加,完成1次累加,完成4次累加,完成2次累加,完成4次累加,完成2次累加,完成2次累加,完成1次累加。
和与上一轮缓存的和池化,和存入行缓存空间。数据列索引j递增。重复上述计算步骤。
直到第五次计算,j==4==N1-1时,这时卷积运算单元CCU中的数据为:
其中,完成6次累加,完成4次累加, 完成3次累加,完成2次累加,和完成1次累加。和进入池化缓存,和存入行缓存空间。此时j==N2,和和也存入行缓存空间。行索引加2。
第六次计算:乘累加器MAC初始化。从行缓存空间读出前6个数据和和和初始化CCU1前两行的乘累加器MAC,CCU1最后一行乘累加器MAC以及CCU2的9个乘累加器MAC初始化为0,此时CCU1初始化数据为:
其中,是已完成2次累加的数据,是已完成4次累加的数据,是已完成6次累加的数据,是已完成1次累加的数据,是已完成2次累加的数据,是已完成3次累加的数据。接收下一组数据x20和x30,卷积运算单元CCU结果为:
其中,共完成7次累加,共完成5次累加,共完成4次累加,共完成3次累加,共完成2次累加,共完成1次累加。和进入池化缓存,和存入行缓存空间。列索引递增,重复以上计算步骤。
第八次计算时,卷积运算单元CCU中将输出和至池化层,这时及已完成9次累加,是最终结果y1,1和y2,1。同时该次计算后和存入行缓存空间。
第九次计算时,卷积运算单元CCU中将输出和至输出池化层,和存入行缓存空间。
第十次计算时,卷积运算单元CCU中将输出和至输出池化层,和存入行缓存空间
至此,卷积计算结果y1,1和y2,1、y1,2和y2,2、y1,3和y2,3已依次进入池化层,依据卷积计算结果矩阵的维度输出y1,1和y2,1、y1,2和y2,2、y1,3和y2,3,得到最终的卷积计算结果矩阵:
卷积计算结束。
使用该计算方法,按行处理数据,仅需要一个行缓存空间;多个乘累加运算处理单元并行计算,可复用输入数据;卷积计算单元CCU第1列的上(M2+1)/2个数据,为卷积最终结果,该结果直接进入池化,可减少数据存储和读写。
本发明中的应用于神经网络的卷积计算装置及方法的另一个实施例,如图6所示,包括输入层、配置有18个乘累加器MAC的卷积运算单元,一个行缓冲空间、一个池化单元和输出层。卷积运算单元读取输入的矩阵元素X并与乘累加运算器上权重W完成卷积运算,并将计算结果Y输出给池化单元,将运算中间数据缓存在行缓冲区;基于本发明的卷积计算方法,行缓冲空间将卷积初始值和卷积运算中间数据初始化卷积运算单元;池化单元存储前一次CCU输出结果,并完成前一次CCU输出结果和当前CCU输出结果的池化操作,将池化后结果经输出层输出。图6中方格纹方框所示的乘累加器MAC内的数据为卷积计算最终结果,斜纹方框所示的乘累加器MAC内的数据为部分累加和数据。该实施例中卷积数据计算过程同前描述,在此不再赘述。在本实施例中行缓冲空间使用偏置值b,并且在池化操作后加入了非线性函数单元,因此,该计算结构中隐含了偏置累加计算和非线性计算,可实现人工神经网络的基本计算yi,j=δ(wi,jxi,j+bi,j)。
本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的装置及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
术语“包括”或者任何其它类似用语旨在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者还包括这些方法或者装置所固有的要素。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
Claims (12)
1.一种应用于神经网络的卷积计算装置,其特征在于,包括:数据输入端口、卷积计算单元CCU、行缓冲空间、池化单元、数据输出端口;
所述数据输入端口,用于输入待进行卷积计算的数据矩阵;
所述卷积计算单元CCU,包含多个乘累加运算处理单元,对待进行卷积计算的数据矩阵进行卷积计算;
所述行缓冲空间,用于存储所述卷积计算单元CCU中乘累加计算过程中使用的乘累加器MAC的初始值、累加产生的中间数据;
所述池化单元,用于存储卷积计算单元CCU输出结果,对前一次输出结果和当前输出结果进行池化,并发送至所述数据输出端口;
所述数据输出端口,用于接收所述池化单元的输出数据并输出。
2.根据权利要求1所述的应用于神经网络的卷积计算装置,其特征在于,所述池化单元包括池化层、缓存层;
所述缓存层,配置为存储卷积计算单元CCU前一次的输出的卷积结果;
所述池化层,配置为对卷积计算单元CCU当前的输出结果与所述缓存层中存储的卷积计算单元CCU前一次的输出结果进行池化。
3.根据权利要求1所述的应用于神经网络的卷积计算装置,其特征在于,还包括矩阵维度计算单元,用于依据输入数据矩阵维度(M1,N1)与卷积核矩阵维度(M2,N2),确定卷积计算结果矩阵维度(M,N),其计算方法为:
M=M1-M2+1
N=N1-N2+1。
4.根据权利要求1所述的应用于神经网络的卷积计算装置,其特征在于,所述卷积计算单元CCU包括两个乘累加运算处理单元CCU1和CCU2。
5.根据权利要求4所述的应用于神经网络的卷积计算装置,其特征在于,所述乘累加运算处理单元包括多个乘累加器MAC,且
在卷积计算过程中,所述乘累加运算处理单元配置的维度与卷积核矩阵维度(M2,N2)相同,配置的乘累加器MAC的个数为M2×N2。
6.根据权利要求5所述的应用于神经网络的卷积计算装置,其特征在于,还包括旋转变换单元,用于将初始卷积核矩阵W进行180°旋转变换,得到卷积核矩阵W’,并分别输入至两个乘累加运算处理单元CCU1和CCU2;
旋转变换表达式如下所示,
其中
为初始卷积核矩阵W,
为经旋转变换后卷积核矩阵W’。
7.根据权利要求1所述的应用于神经网络的卷积计算装置,其特征在于,还包括矩阵补充单元,用于在卷积计算时,若输入的矩阵的行数为偶数,则直接将输入矩阵送入卷积计算单元CCU进行卷积计算,若输入的矩阵的行数为奇数,则在输入矩阵的最后补充一行全为0的矩阵,并将补充后的输入矩阵输入卷积计算单元CCU进行卷积计算。
8.根据权利要求1所述的应用于神经网络的卷积计算装置,其特征在于,在卷积计算之前,所述行缓冲空间依据输入数据矩阵维度(M1,N1)配置卷积初始值,所述卷积初始值的个数为M1×N1,且
所述卷积初始值为0或者某偏置值b。
9.一种应用于神经网络的卷积计算方法,基于权利要求1-8任一项所述的应用于神经网络的卷积计算装置,其特征在于,具体包括:
步骤S1:向数据输入端口输入初始卷积核矩阵W、数据矩阵;
步骤S2:卷积计算装置依据初始卷积核矩阵W、数据矩阵进行卷积计算之前的配置操作;
步骤S3:若输入矩阵的行数为偶数,则执行步骤S4,若为奇数则在输入矩阵的最后补充一行矩阵,补充的数值为0,执行步骤S4;
步骤S4:卷积计算单元CCU读取输入数据矩阵的相邻行的两个元素Xi,j和Xi+1,j,与卷积核矩阵W’进行乘累加运算得到CCU单元矩阵;
步骤S5:CCU单元矩阵中,第1列的上(M2+1)/2个元素输送进池化单元的缓存层,第1列的下(M2+1)/2个元素输送进行缓冲空间;
步骤S6:判断此时是否满足j=N1-1,若满足则执行步骤S7,否则j+1后执行步骤S4;
步骤S7:判断此时是否满足i+1=M1-1,若满足则将池化单元池化后数据输出,卷积计算结束,否则将CCU单元矩阵中矩阵元素CCUp,q存入行缓冲空间,执行步骤S8,
其中,p=(M2+1)/2,(M2+1)/2+1,…,M2,q=0,1,2,3,…,N2-1;
步骤S8:将i+2后,用行缓冲空间中的前(M2+1)*N2/2个数据初始化CCU1中矩阵元素CCUc,d的乘累加器MAC,CCU1和CCU2中剩余的乘累加器MAC初始化为卷积初始值,执行步骤S4,
其中,c=0,1,…,(M2+1)/2-1,d=0,1,…,N2-1。
10.根据权利要求9所述的应用于神经网络的卷积计算方法,其特征在于,所述步骤S4具体为:
步骤S41:卷积计算单元CCU读取数据矩阵的相邻行的两个元素Xi,j和Xi+1,j;
步骤S42:卷积计算单元CCU将Xi,j广播至CCU1的M2×N2个乘累加器MAC,与卷积核矩阵W’元素完成乘法运算得到CCU1数据,同时,将Xi+1,j广播至CCU2的M2×N2个乘累加器MAC,与卷积核矩阵W’元素完成乘法运算得到CCU2数据;
步骤S43:CCU1数据与CCU2数据相同下标数据累加得到所述CCU单元矩阵。
11.根据权利要求9所述的应用于神经网络的卷积计算方法,其特征在于,所述步骤S2具体为:
向行缓冲空间存储卷积初始值;
矩阵维度计算单元依据输入数据矩阵和卷积核矩阵的维度,配置卷积计算结果矩阵维度;
转变换单元将初始卷积核矩阵W进行旋转变换得到卷积核矩阵W’,并分别输入至两个乘累加运算处理单元CCU1和CCU2;
卷积计算单元CCU依据卷积核矩阵W’配置乘累加运算处理单元的维度和乘累加运算处理单元中乘累加器MAC的个数。
12.根据权利要求10所述的应用于神经网络的卷积计算方法,其特征在于,所述步骤S41在第一次读取数据矩阵的相邻行的两个元素Xi,j和Xi+1,j时,i和j均为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810194142.4A CN108537330B (zh) | 2018-03-09 | 2018-03-09 | 应用于神经网络的卷积计算装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810194142.4A CN108537330B (zh) | 2018-03-09 | 2018-03-09 | 应用于神经网络的卷积计算装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108537330A true CN108537330A (zh) | 2018-09-14 |
CN108537330B CN108537330B (zh) | 2020-09-01 |
Family
ID=63485647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810194142.4A Active CN108537330B (zh) | 2018-03-09 | 2018-03-09 | 应用于神经网络的卷积计算装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108537330B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558564A (zh) * | 2018-11-30 | 2019-04-02 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN109669666A (zh) * | 2018-11-06 | 2019-04-23 | 清华大学 | 乘累加处理器 |
CN110188869A (zh) * | 2019-05-05 | 2019-08-30 | 北京中科汇成科技有限公司 | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 |
CN110399591A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 基于卷积神经网络的数据处理方法和装置 |
CN110399971A (zh) * | 2019-07-03 | 2019-11-01 | Oppo广东移动通信有限公司 | 一种卷积神经网络加速方法及装置、存储介质 |
CN110929861A (zh) * | 2019-11-15 | 2020-03-27 | 中国人民解放军国防科技大学 | 一种多层感知机深度神经网络层间流水的硬件加速器 |
WO2020155044A1 (zh) * | 2019-01-31 | 2020-08-06 | 深圳市大疆创新科技有限公司 | 卷积计算的装置、方法、处理器和可移动设备 |
CN111667053A (zh) * | 2020-06-01 | 2020-09-15 | 重庆邮电大学 | 一种新型卷积神经网络加速器及其前向传播计算加速方法 |
CN112396175A (zh) * | 2019-08-16 | 2021-02-23 | 脸谱公司 | 将卷积映射到矩阵处理器单元 |
CN112639838A (zh) * | 2018-10-12 | 2021-04-09 | 奥林巴斯株式会社 | 运算处理装置 |
CN113240074A (zh) * | 2021-04-15 | 2021-08-10 | 中国科学院自动化研究所 | 一种可重构神经网络处理器 |
CN113283593A (zh) * | 2021-05-25 | 2021-08-20 | 思澈科技(上海)有限公司 | 一种卷积运算协处理器及基于该处理器的快速卷积方法 |
CN113379046A (zh) * | 2020-03-09 | 2021-09-10 | 中国科学院深圳先进技术研究院 | 卷积神经网络的加速计算方法、存储介质和计算机设备 |
CN113591025A (zh) * | 2021-08-03 | 2021-11-02 | 深圳思谋信息科技有限公司 | 特征图的处理方法、装置、卷积神经网络加速器和介质 |
WO2022007266A1 (zh) * | 2020-07-08 | 2022-01-13 | 嘉楠明芯(北京)科技有限公司 | 一种卷积神经网络的加速方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN107491416A (zh) * | 2017-08-31 | 2017-12-19 | 中国人民解放军信息工程大学 | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 |
-
2018
- 2018-03-09 CN CN201810194142.4A patent/CN108537330B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN107491416A (zh) * | 2017-08-31 | 2017-12-19 | 中国人民解放军信息工程大学 | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 |
Non-Patent Citations (1)
Title |
---|
WEIHONG XU: "Efficient fast convolution architectures for convolutional neural network", 《IEEE》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112639838A (zh) * | 2018-10-12 | 2021-04-09 | 奥林巴斯株式会社 | 运算处理装置 |
CN109669666A (zh) * | 2018-11-06 | 2019-04-23 | 清华大学 | 乘累加处理器 |
CN109669666B (zh) * | 2018-11-06 | 2022-12-16 | 清华大学 | 乘累加处理器 |
CN109558564A (zh) * | 2018-11-30 | 2019-04-02 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
WO2020155044A1 (zh) * | 2019-01-31 | 2020-08-06 | 深圳市大疆创新科技有限公司 | 卷积计算的装置、方法、处理器和可移动设备 |
CN110188869A (zh) * | 2019-05-05 | 2019-08-30 | 北京中科汇成科技有限公司 | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 |
CN110188869B (zh) * | 2019-05-05 | 2021-08-10 | 北京中科汇成科技有限公司 | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 |
CN110399591B (zh) * | 2019-06-28 | 2021-08-31 | 苏州浪潮智能科技有限公司 | 基于卷积神经网络的数据处理方法和装置 |
CN110399591A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 基于卷积神经网络的数据处理方法和装置 |
CN110399971A (zh) * | 2019-07-03 | 2019-11-01 | Oppo广东移动通信有限公司 | 一种卷积神经网络加速方法及装置、存储介质 |
CN112396175A (zh) * | 2019-08-16 | 2021-02-23 | 脸谱公司 | 将卷积映射到矩阵处理器单元 |
CN110929861A (zh) * | 2019-11-15 | 2020-03-27 | 中国人民解放军国防科技大学 | 一种多层感知机深度神经网络层间流水的硬件加速器 |
CN110929861B (zh) * | 2019-11-15 | 2023-04-18 | 中国人民解放军国防科技大学 | 一种多层感知机深度神经网络层间流水的硬件加速器 |
CN113379046A (zh) * | 2020-03-09 | 2021-09-10 | 中国科学院深圳先进技术研究院 | 卷积神经网络的加速计算方法、存储介质和计算机设备 |
CN111667053A (zh) * | 2020-06-01 | 2020-09-15 | 重庆邮电大学 | 一种新型卷积神经网络加速器及其前向传播计算加速方法 |
CN111667053B (zh) * | 2020-06-01 | 2023-05-09 | 重庆邮电大学 | 一种卷积神经网络加速器的前向传播计算加速方法 |
WO2022007266A1 (zh) * | 2020-07-08 | 2022-01-13 | 嘉楠明芯(北京)科技有限公司 | 一种卷积神经网络的加速方法及装置 |
CN113240074A (zh) * | 2021-04-15 | 2021-08-10 | 中国科学院自动化研究所 | 一种可重构神经网络处理器 |
CN113283593A (zh) * | 2021-05-25 | 2021-08-20 | 思澈科技(上海)有限公司 | 一种卷积运算协处理器及基于该处理器的快速卷积方法 |
CN113283593B (zh) * | 2021-05-25 | 2023-09-12 | 思澈科技(上海)有限公司 | 一种卷积运算协处理器及基于该处理器的快速卷积方法 |
CN113591025A (zh) * | 2021-08-03 | 2021-11-02 | 深圳思谋信息科技有限公司 | 特征图的处理方法、装置、卷积神经网络加速器和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108537330B (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108537330A (zh) | 应用于神经网络的卷积计算装置及方法 | |
US11361051B1 (en) | Dynamic partitioning | |
JP7394104B2 (ja) | ハードウェアにおけるカーネルストライドの実行 | |
US11461684B2 (en) | Operation processing circuit and recognition system | |
CN108416434B (zh) | 针对神经网络的卷积层与全连接层进行加速的电路结构 | |
CN105681628B (zh) | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 | |
CN107145939B (zh) | 一种低计算能力处理设备的计算机视觉处理方法及装置 | |
CN107153873B (zh) | 一种二值卷积神经网络处理器及其使用方法 | |
CN109034373B (zh) | 卷积神经网络的并行处理器及处理方法 | |
CN109409512B (zh) | 一种可灵活配置的神经网络计算单元、计算阵列及其构建方法 | |
CN107533667B (zh) | 神经网络处理器中的向量计算单元 | |
CN109992743A (zh) | 矩阵乘法器 | |
EP3761235A1 (en) | Transposing neural network matrices in hardware | |
CN106445471A (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
CN106970896A (zh) | 面向向量处理器的二维矩阵卷积的向量化实现方法 | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
CN111758107A (zh) | 用于基于硬件的池化的系统和方法 | |
CN106951962A (zh) | 用于神经网络的复合运算单元、方法和电子设备 | |
EP3674982A1 (en) | Hardware accelerator architecture for convolutional neural network | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN107818367A (zh) | 用于神经网络的处理系统和处理方法 | |
CN112989267A (zh) | 用于执行卷积运算的方法和系统 | |
CN117933314A (zh) | 处理装置、处理方法、芯片及电子装置 | |
CN107085562A (zh) | 一种基于高效复用数据流的神经网络处理器及设计方法 | |
US11763131B1 (en) | Systems and methods for reducing power consumption of convolution operations for artificial neural networks |
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 |