CN116720551A - 脉冲神经网络的卷积加速方法及卷积加速器 - Google Patents
脉冲神经网络的卷积加速方法及卷积加速器 Download PDFInfo
- Publication number
- CN116720551A CN116720551A CN202310967759.6A CN202310967759A CN116720551A CN 116720551 A CN116720551 A CN 116720551A CN 202310967759 A CN202310967759 A CN 202310967759A CN 116720551 A CN116720551 A CN 116720551A
- Authority
- CN
- China
- Prior art keywords
- convolution
- data
- matrix
- operated
- determining
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000001133 acceleration Effects 0.000 title claims abstract description 41
- 239000011159 matrix material Substances 0.000 claims abstract description 275
- 238000004364 calculation method Methods 0.000 claims abstract description 148
- 230000015654 memory Effects 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 16
- 238000013500 data storage Methods 0.000 claims description 7
- 238000012512 characterization method Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 17
- 238000009825 accumulation Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000017105 transposition Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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
-
- 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/08—Learning methods
-
- 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
- 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)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请实施例提供了一种脉冲神经网络的卷积加速方法及卷积加速器,其中,该方法包括:接收含有脉冲信号的特征数据;确定所述脉冲信号在所述特征数据中的位置;根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。通过本申请,解决了由于卷积计算过程复杂,导致加速器计算效率低的技术问题。
Description
技术领域
本申请实施例涉及硬件加速领域,具体而言,涉及一种脉冲神经网络的卷积加速方法及卷积加速器。
背景技术
在传统深度学习FPGA(Field-Programmable Gate Array,可编程逻辑器件)的加速网络中,各神经层的计算以卷积计算为主,但是,在将卷积核矩阵和特征数据的数据矩阵中的指定区域进行卷积时,需要遍历指定区域内的每个数据,才能完成特征数据的中指定区域的计算,得到卷积计算结果,以3×3卷积计算为例,每个数据点需要进行9次乘法计算和一个加法树计算,计算过程尤为复杂,导致计算效率低。
发明内容
本申请实施例提供了一种脉冲神经网络的卷积加速方法及卷积加速器,以至少解决由于卷积计算过程复杂,导致加速器计算效率低的技术问题。
根据本申请的一个实施例,提供了一种脉冲神经网络的卷积加速方法,包括:接收含有脉冲信号的特征数据;确定所述脉冲信号在所述特征数据中的位置;根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。
在一个示例性实施例中,根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以确定待运算卷积计算矩阵,包括:以所述脉冲信号的位置为初始待运算卷积计算矩阵的中心,所述预设卷积权重矩阵的范围为初始待运算卷积计算矩阵的范围,在所述特征数据中确定初始待运算卷积计算矩阵;从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据,并将读取到的数据填充到所述初始待运算卷积计算矩阵中的每个位置中,得到所述待运算卷积计算矩阵。
在一个示例性实施例中,从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据,包括:确定所述初始待运算卷积计算矩阵中每个位置在所述卷积缓存存储阵列中存储数据的地址;按照所述初始待运算卷积计算矩阵中每个位置在存储阵列中存储数据的地址从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据。
在一个示例性实施例中,确定所述脉冲信号在所述特征数据中的位置,包括:确定所述特征数据的数据矩阵;确定所述脉冲信号对应的数据在所述数据矩阵中的位置坐标;将所述脉冲信号对应的数据在所述数据矩阵中的位置坐标确定为所述脉冲信号在所述特征数据中的位置。
在一个示例性实施例中,所述卷积缓存存储阵列中存储序列的数量通过以下方式确定,包括:确定所述预设卷积权重矩阵中元素的数量;将所述预设卷积权重矩阵中元素的数量确定为所述存储序列的数量,其中,所述预设卷积权重矩阵中元素表示卷积权重值。
在一个示例性实施例中,所述特征数据的数据矩阵中的数据通过以下方式确定,包括:将所述特征数据的数据矩阵按照所述预设卷积权重矩阵所覆盖的范围将所述特征数据的数据矩阵分为多个子数据矩阵;根据每个子数据矩阵的数据分布情况,确定所述特征数据的数据矩阵中每个数据在所述卷积缓存存储阵列中的位置。
在一个示例性实施例中,根据每个子数据矩阵的数据分布情况,确定所述特征数据的数据矩阵中每个数据在所述卷积缓存存储阵列中的位置,包括:确定所述每个子数据矩阵的数据排列顺序;按照所述每个子数据矩阵的数据排列顺序依次将所述子数据矩阵的数据存储到所述卷积缓存存储阵列中的多个存储序列中,其中,每个存储序列中存储数据的数量与所述多个子数据矩阵的数量相同。
在一个示例性实施例中,所述将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵卷积结果,包括:在所述特征数据中的脉冲信号的数量为一个的情况下,将所述转置后的预设卷积权重矩阵中的卷积权重值依次与所述卷积计算矩阵中对应位置的数据相加,得到卷积结果。
在一个示例性实施例中,将所述转置后的预设卷积权重矩阵与所述卷积计算矩阵进行运算,以确定所述卷积计算矩阵的卷积结果,包括:在所述脉冲神经网络第一次进行卷积时,确定所述卷积结果为所述转置后的预设卷积权重矩阵,其中,在所述脉冲神经网络第一次进行卷积之前,所述卷积缓存存储阵列中存储的数据对应的数值均为零。
在一个示例性实施例中,所述方法还包括:在所述特征数据中的脉冲信号的数量为多个的情况下,按照预设顺序依次对每个脉冲信号对应的待运算卷积计算矩阵进行运算,以得到所述待运算卷积计算矩阵的卷积结果,其中,在前一个脉冲信号对应的待运算卷积计算矩阵完成运算,并对所述卷积缓存存储阵列中数据进行更新之后,再确定后一个脉冲信号对应的待运算卷积计算矩阵。
在一个示例性实施例中,在确定所述待运算卷积计算矩阵的卷积结果之后,所述方法还包括:将所述卷积结果对应的数据重新写入到卷积缓存存储阵列中与进行卷积运算之前的所述待运算的数据存储位置相同的存储位置,以完成所述卷积缓存存储阵列中数据的更新。
在一个示例性实施例中,将所述卷积结果对应的数据重新写入到卷积缓存存储阵列中与进行卷积运算之前的所述待运算的数据存储位置相同的存储位置,以完成所述卷积缓存存储阵列中数据的更新之后,所述方法还包括:将卷积缓存存储阵列中数值大于预设阈值的数据,确定为第一数据,并将所述第一数据的数值更新为零。
在一个示例性实施例中,在将所述第一数据在所述卷积缓存存储阵列中的数值更新为零之后,所述方法还包括:确定所述第一数据在所述特征数据中的位置;根据所述第一数据在所述特征数据中的位置确定下一次脉冲信号的位置。
根据本申请的另一个实施例,提供了一种脉冲神经网络卷积加速器,包括:特征数据生成模块、地址计算模块、卷积缓存存储阵列、卷积计算阵列和权重缓存模块,其中,所述特征数据生成模块、所述地址计算模块、所述卷积缓存存储阵列、所述卷积计算阵列和所述权重缓存模块依次连接;所述特征数据生成模块,用于生成含有脉冲信号的特征数据,并确定所述脉冲信号在所述特征数据中的位置坐标,以将所述位置坐标发送给所述地址计算模块;所述地址计算模块,用于根据所述脉冲信号在所述特征数据中的位置坐标从所述卷积缓存存储阵列中读取待运算的数据,并将读取到的所述待运算的数据发送给所述卷积计算阵列;所述卷积计算阵列,用于根据所述待运算的数据确定待运算卷积计算矩阵,并接收所述权重缓存模块发送的预设卷积权重矩阵,并将所述预设卷积权重矩阵进行转置得到转置后的预设卷积权重矩阵,还用于将所述转置后的预设卷积权重矩阵与所述卷积计算矩阵进行计算,以确定卷积结果,将所述卷积结果发送给所述卷积缓存存储阵列。
在一个示例性实施例中,所述加速器还包括:脉冲地址队列模块,所述脉冲地址队列模块设置于所述特征数据生成模块和所述地址计算模块之间,用于接收并存储所述特征数据生成模块发送的所述位置坐标,并将所述位置坐标按照所述位置坐标的接收顺序,依次将所述位置坐标发送给所述地址计算模块。
在一个示例性实施例中,所述加速器还包括:阈值判断模块,所述阈值判断模块分别与所述卷积缓存存储阵列和所述脉冲地址队列模块连接,用于在所述卷积缓存存储阵列中存储的数据对应的数值大于预设阈值的情况下,将所述存储的数据对应的数值清零,并向所述脉冲地址队列模块发送所述存储的数据在所述特征数据中的位置坐标。
在一个示例性实施例中,所述卷积缓存存储阵列,还用于接收所述卷积结果,并根据所述卷积结果对所述卷积缓存存储阵列中的数据进行更新。
在一个示例性实施例中,所述卷积缓存存储阵列,包括:多个随机存取存储器,其中,所述多个随机存取存储器的数量与所述预设卷积权重矩阵中元素的数量相同。
在一个示例性实施例中,所述卷积缓存存储阵列中存储的数据的初始值均为零。
在一个示例性实施例中,所述卷积计算阵列,包括:多个计算引擎,所述多个计算引擎的数量与所述预设卷积权重矩阵中元素的数量相同。
根据本申请的再一个实施例,还提供了一种脉冲神经网络的卷积加速装置,包括:接收模块,用于接收含有脉冲信号的特征数据;第一确定模块,用于确定所述脉冲信号在所述特征数据中的位置;第二确定模块,用于根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;卷积模块,用于对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,由于根据特征数据中的脉冲信号在所述特征数据中的位置,从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,确定所述待运算卷积计算矩阵的卷积结果,卷积权重矩阵只需要和脉冲信号所在区域的数据完成一次运算,就能得到卷积结果,避免了卷积权重矩阵分别与特征数据的指定区域内的所有数据分别进行运算,达到了简化卷积计算过程,以提高加速器计算效率的效果。
附图说明
图1是根据本申请实施例的脉冲神经网络的卷积加速方法的计算机终端的硬件结构框图;
图2是根据本申请实施例的脉冲神经网络的卷积加速方法的流程图;
图3是相关技术中的一种卷积运算方式示意图;
图4是相关技术中的一种脉冲神经网络卷积运算方式示意图;
图5是相关技术中的一种脉冲神经网络卷积加速器进行卷积加速的流程示意图;
图6是根据本申请实施例的一种待运算卷积计算矩阵的确定方式示意图;
图7是根据本申请实施例的一种根据脉冲信号的位置确定脉冲地址队列的流程示意图;
图8是根据本申请实施例的一种卷积缓存存储阵列结构示意图;
图9是根据本申请实施例的一种单脉冲数据卷积加速流程示意图;
图10是根据本申请实施例的一种双脉冲数据卷积加速流程示意图;
图11是根据本申请实施例的一种脉冲多层卷积加速流程示意图;
图12是相关技术与本申请实施例中使用的累加方式对比示意图;
图13是根据本申请实施例的一种脉冲神经网络卷积加速器结构示意图;
图14是根据本申请实施例的另一种脉冲神经网络卷积加速器结构示意图;
图15是根据本申请实施例的一种脉冲神经网络的卷积加速装置结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的一种脉冲神经网络的卷积加速方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的脉冲神经网络的卷积加速方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述计算机终端的脉冲神经网络的卷积加速方法,图2是根据本申请实施例的流程图,如图2所示,该流程包括如下步骤:
步骤S202,接收含有脉冲信号的特征数据;
步骤S204,确定脉冲信号在特征数据中的位置;
步骤S206,根据脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;
步骤S208,对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与待运算卷积计算矩阵进行运算,以确定待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。
以3×3卷积运算为例,在相关技术中进行卷积运算的方式如图3所示,将卷积核W矩阵和特征数据的数据矩阵中的斜线框区域进行卷积,需要遍历每个数据,才能计算完毕特征数据矩阵中的斜线框区域,得到卷积计算结果。每个点需要进行9次乘法计算和一个加法树计算。虚线区域内的9个数据点完成卷积,需要进行81次乘法计算和9次加法树计算。
需要进行说明的是,在相关技术中脉冲神经网络通过模拟大脑神经元的脉冲传输方式,传输的数据只有脉冲信号(1)和无传输(0)两种数据,可以极大的降低神经网络中的数据传输量,加速计算中,与其他深度学习网络类似,也需要对数据进行卷积计算,在进行卷积加速计算时,以3×3卷积为例,如图4所示,首先从缓存中取3行数据并行读出,读出的3X3 特征数据矩阵中的数据都是为1或0的数,将数据为1的位置替换为卷积权重矩阵中对应的值,再将数值进行相加,最后再和之前的缓存相加,然后再与阈值比较,如果大于阈值,则将之前缓存清零,然后发出脉冲,如果小于阈值,则将最新的累加结果更新到之前的缓存寄存器,不发送脉冲。
图5示出一种相关技术中的加速器进行3×3卷积加速的流程示意图,如图5所示,与图3相比,虽然无需进行乘法计算,但是特征数据矩阵上的每个数据点的卷积都需要进行一次加法树,如图5中的斜线框区域所示,完成卷积需要计算81个点的加法,而脉冲神经网络的脉冲特征数据往往是高稀疏度的数据,如此遍历计算,会造成大量的无效计算。同时,脉冲神经网络的设计思想也是根据脉冲有无对局部区域进行计算,通用的遍历计算架构无法满足脉冲神经网络的灵活脉冲时间触发计算的要求。
通过本申请,由于根据特征数据中的脉冲信号在所述特征数据中的位置,从卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,确定所述待运算卷积计算矩阵的卷积结果,卷积权重矩阵只需要和脉冲信号所在区域的数据完成一次运算,就能得到卷积结果,避免了卷积权重矩阵分别与特征数据的指定区域内的所有数据分别进行运算,达到了简化卷积计算过程,以提高加速器计算效率的效果。
同时,本申请设计的脉冲神经网络卷积稀疏加速器的加速方法,可以在不使用编解码复杂设计的条件下,利用脉冲神经网络数据为1或0,以及脉冲神经网络卷积只有累加的计算特点,设计一种无需遍历,可以根据脉冲数来完成卷积计算的加速结构,只根据脉冲数(数据1),也可以兼顾优化稀疏计算的优化,减少无效计算过程,有效提高了脉冲神经网络的推理计算加速能力。
下面通过实施例具体解释步骤S202至步骤S208。
在步骤S206中,根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以确定待运算卷积计算矩阵的方式有多种,一种可选的方式是:以所述脉冲信号的位置为初始待运算卷积计算矩阵的中心,所述预设卷积权重矩阵的范围为初始待运算卷积计算矩阵的范围,在所述特征数据中确定初始待运算卷积计算矩阵;从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据,并将读取到的数据填充到所述初始待运算卷积计算矩阵中的每个位置中,得到所述待运算卷积计算矩阵。
其中,从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据的方法,包括:确定所述初始待运算卷积计算矩阵中每个位置在所述卷积缓存存储阵列中存储数据的地址;按照所述初始待运算卷积计算矩阵中每个位置在存储阵列中存储数据的地址从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据。
可以理解的是,初始待运算卷积计算矩阵也可以是特征数据的数据矩阵中的指定区域,例如:以脉冲信号的位置为指定区域的中心,预设卷积权重矩阵的范围为指定区域的范围,图6示出了一种待运算卷积计算矩阵的确定方式示意图,如图6所示,图6左侧的特征数据的数据矩阵中,虚线框所框定的区域为初始待运算卷积计算矩阵,根据初始待运算卷积计算矩阵中每个位置的数据在卷积缓存存储阵列中的存储位置,读取初始待运算卷积计算矩阵中每个位置的数据,并将读取到的数据填充到图6左侧的虚线框内,得到待运算卷积计算矩阵,虚线框中的数据21为脉冲信号所在的位置,可以理解的是,图6右侧中被黑框选中的数据为虚线框中填充的数据。
需要进行说明的是,在确定的初始待运算卷积计算矩阵的范围超出特征数的数据矩阵之外的情况下,将初始待运算卷积计算矩阵中处于特征数据的数据矩阵之外的部分确定为外部区域,外部区域中的数据均为零。
在一个示例性实施例中,确定所述脉冲信号在所述特征数据中的位置,包括:确定所述特征数据的数据矩阵;确定所述脉冲信号对应的数据在所述数据矩阵中的位置坐标;将所述脉冲信号对应的数据在所述数据矩阵中的位置坐标确定为所述脉冲信号在所述特征数据中的位置。
如图7所示,图7的左侧为特征数据的数据矩阵,右侧的脉冲地址队列中示出了多个脉冲信号的位置坐标,左侧的特征数据的数据矩阵中按照位置坐标标注了脉冲信号在特征数据的数据矩阵中的位置。
在一个示例性实施例中,所述卷积缓存存储阵列中存储序列的数量通过以下方式确定,包括:确定所述预设卷积权重矩阵中元素的数量;将所述预设卷积权重矩阵中元素的数量确定为所述存储序列的数量,其中,所述预设卷积权重矩阵中元素表示卷积权重值。
具体地,如图8所示,预设卷积权重矩阵中元素的数量为9个,卷积缓存存储阵列中存储序列的数量也为9个。
在一种可选的方式中,特征数据的数据矩阵中的数据通过以下方式确定,包括:将所述特征数据的数据矩阵按照所述预设卷积权重矩阵所覆盖的范围将所述特征数据的数据矩阵分为多个子数据矩阵;根据每个子数据矩阵的数据分布情况,确定所述特征数据的数据矩阵中每个数据在所述卷积缓存存储阵列中的位置。
其中,根据每个子数据矩阵的数据分布情况,确定所述特征数据的数据矩阵中每个数据在所述卷积缓存存储阵列中的位置的具体过程如下:确定所述每个子数据矩阵的数据排列顺序;按照所述每个子数据矩阵的数据排列顺序依次将所述子数据矩阵的数据存储到所述卷积缓存存储阵列中的多个存储序列中,其中,每个存储序列中存储数据的数量与所述多个子数据矩阵的数量相同。
如图8所示,以特征数据的数据矩阵为图8中左侧的数据矩阵为例,将数据矩阵按照预设卷积权重矩阵所覆盖的范围分为了4个子数据矩阵;
其中,第一列存储序列中的数据为每个子数据矩阵中的第一个数据,第二列存储序列中的数据为每个子数据矩阵中的第二个数据,依此类推,第九列存储序列中的数据为每个子数据矩阵中的第九个数据。
可以理解的是,上述数据的顺序是按照由左到右、由上到下的顺序排列的。
在所述特征数据中的脉冲信号的数量为一个的情况下,将所述转置后的预设卷积权重矩阵中的卷积权重值依次与所述卷积计算矩阵中对应位置的数据相加,得到卷积结果。
需要进行说明的是,在所述脉冲神经网络第一次进行卷积时,所述卷积结果为所述转置后的预设卷积权重矩阵,其中,在所述脉冲神经网络第一次进行卷积之前,所述卷积缓存存储阵列中存储的数据对应的数值均为零。
具体地,如图9所示,在单个3X3卷积范围内只有中间1个脉冲数据,其他都为0,对比卷积结果的数据与卷积权重核数据可以发现,卷积计算结果只是卷积权重数据的转置,对比遍历需要的81个数据的累加,本申请提供的方法只需要计算9个数据的累加。
由于在所述脉冲神经网络第一次进行卷积之前,所述卷积缓存存储阵列中存储的数据对应的数值均为零,将所述转置后的预设卷积权重矩阵中的卷积权重值依次与所述卷积计算矩阵中对应位置的数据相加得到的卷积结果就为转置后的预设卷积权重矩阵。
在所述特征数据中的脉冲信号的数量为多个的情况下,按照预设顺序依次对每个脉冲信号对应的待运算卷积计算矩阵进行运算,以得到所述待运算卷积计算矩阵的卷积结果,其中,在前一个脉冲信号对应的待运算卷积计算矩阵完成运算,并对所述卷积缓存存储阵列中数据进行更新之后,再确定后一个脉冲信号对应的待运算卷积计算矩阵。
如果单个3X3卷积范围内不止一个脉冲数据,则只需要按照对应位置转置后的卷积权重矩阵后相加,即可完成卷积计算,具体如图10所示,由于在所述脉冲神经网络第一次进行卷积之前,所述卷积缓存存储阵列中存储的数据对应的数值均为零,先将第一个脉冲信号完成卷积计算的结果为转置后的卷积权重矩阵,将卷积结果存储到存储序列中,再对第二个脉冲信号进行卷积计算时,对应位置存储的数据为第一次卷积计算后的结果,需要将第一次卷积运算结果与第二脉冲信号位置的转置后的卷积权重矩阵相加得到第二次卷积运算的结果。
在确定所述待运算卷积计算矩阵的卷积结果之后,所述方法还包括:采用所述卷积结果对应的数据重新写入到卷积缓存存储阵列中与进行卷积运算之前的所述待运算的数据存储位置相同的存储位置,以完成所述卷积缓存存储阵列中数据的更新。
如图6所示,在进行卷积运算前虚线框内的数据16存储的位置为第七列存储序列中的第二位,在数据16完成卷积运算后,得到的数值依旧存储到第七列存储序列中的第二位中。
在将所述卷积结果对应的数据重新写入到卷积缓存存储阵列中与进行卷积运算之前的所述待运算的数据存储位置相同的存储位置,以完成所述卷积缓存存储阵列中数据的更新之后,还包括:将卷积缓存存储阵列中数值大于预设阈值的数据,确定为第一数据,并将所述第一数据的数值更新为零。
在将所述第一数据在所述卷积缓存存储阵列中的数值更新为零之后,确定所述第一数据在所述特征数据中的位置;根据所述第一数据在所述特征数据中的位置确定下一次脉冲信号的位置。
图11示出了一种卷积运算过程,如图11所示,卷积权重矩阵与特征数据中的脉冲信号完成卷积计算,并将卷积结果存储,并将存储的卷积结果与预设阈值进行对比,大于预设阈值的情况下发送新的脉冲信号,小于预设阈值的情况下,完成卷积结果数据的更新。
本申请提出的卷积结果确定方法中的累加计算只需要对应点权重值与对应点在卷积缓存存储阵列中的缓存值相加,因此无需采用累加树结构,通用的累加树结构和本发明所需的累加方法结构图如图12所示,如图12中的a图所示,通用的累加树结构是将权重值两两相加后,最后于缓存值求和,如图12中的b图所示,本申请提出的卷积结果确定方法中的累加计算仅需要将对应点权重值与对应点在卷积缓存存储阵列中的缓存值相加即可。
如图6所示,以数据15进行卷积运算后得到的数据为40为例,在数据40大于预设阈值的情况下,则将数据15在第9列存储序列中的第一位中存储的数据更新为零,并将数据15在特征数据的数据矩阵中的位置确定为下一个脉冲信号的位置。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本申请提出的脉冲神经网络的卷积加速方法的基础上,本申请还提出了一种用于执行本申请提出的脉冲神经网络的卷积加速方法的脉冲神经网络卷积加速器,如图13所示,包括:特征数据生成模块50、地址计算模块52、卷积缓存存储阵列54、卷积计算阵列56和权重缓存模块58,其中,所述特征数据生成模块50、所述地址计算模块52、所述卷积缓存存储阵列54、所述卷积计算阵列56和所述权重缓存模块58依次连接;所述特征数据生成模块50,用于生成含有脉冲信号的特征数据,并确定所述脉冲信号在所述特征数据中的位置坐标,以将所述位置坐标发送给所述地址计算模块52;所述地址计算模块52,用于根据所述脉冲信号在所述特征数据中的位置坐标从所述卷积缓存存储阵列54中读取待运算的数据,并将读取到的所述待运算的数据发送给所述卷积计算阵列56;所述卷积计算阵列56,用于根据所述待运算的数据确定待运算卷积计算矩阵,并接收所述权重缓存模块58发送的预设卷积权重矩阵,并将所述预设卷积权重矩阵进行转置得到转置后的预设卷积权重矩阵,还用于将所述转置后的预设卷积权重矩阵与所述卷积计算矩阵进行计算,以确定卷积结果,将所述卷积结果发送给所述卷积缓存存储阵列54。
在一个示例性实施例中,如图14所示,所述加速器还包括:脉冲地址队列模块60,所述脉冲地址队列模块60设置于所述特征数据生成模块50和所述地址计算模块52之间,用于接收并存储所述特征数据生成模块50发送的所述位置坐标,并将所述位置坐标按照所述位置坐标的接收顺序,依次将所述位置坐标发送给所述地址计算模块52。
在一个示例性实施例中,如图14所示,所述加速器还包括:阈值判断模块62,所述阈值判断模块62分别与所述卷积缓存存储阵列54和所述脉冲地址队列模块60连接,用于在所述卷积缓存存储阵列54中存储的数据对应的数值大于预设阈值的情况下,将所述存储的数据对应的数值清零,并向所述脉冲地址队列模块60发送所述存储的数据在所述特征数据中的位置坐标。
在一个示例性实施例中,所述卷积缓存存储阵列54,还用于接收所述卷积结果,并根据所述卷积结果对所述卷积缓存存储阵列中的数据进行更新。
在一个示例性实施例中,所述卷积缓存存储阵列54,包括:多个随机存取存储器(图中未示出),其中,所述多个随机存取存储器的数量与所述预设卷积权重矩阵中元素的数量相同。
在一个示例性实施例中,所述卷积缓存存储阵列54中存储的数据的初始值均为零。
在一个示例性实施例中,所述卷积计算阵列56,包括:多个计算引擎(图中未示出),所述多个计算引擎的数量与所述预设卷积权重矩阵中元素的数量相同。
具体地,首先选取出对应缓存的数据值,再与权重缓存的转置数据通过9个计算引擎的累加数计算,得到对应脉冲的局部位置卷积结果,再写回卷积缓存存储阵列,为了能同时选出9个对应3X3卷积核的缓存数据,需要将卷积缓存存储阵列设计成9个独立的存储单元。
需要进行说明的是,本申请提出的脉冲神经网络卷积加速器中的阵列和模块均为处理器、存储器和计算引擎等硬件单元。
图15是根据本申请实施例的脉冲神经网络的卷积加速装置的结构框图,如图15所示,该装置包括:
接收模块80,用于接收含有脉冲信号的特征数据;第一确定模块82,用于确定所述脉冲信号在所述特征数据中的位置;第二确定模块84,用于根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;卷积模块86,用于对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。
接收模块80,包括:第一确定子模块,第一确定子模块,用于以所述脉冲信号的位置为初始待运算卷积计算矩阵的中心,所述预设卷积权重矩阵的范围为初始待运算卷积计算矩阵的范围,在所述特征数据中确定初始待运算卷积计算矩阵;从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据,并将读取到的数据填充到所述初始待运算卷积计算矩阵中的每个位置中,得到所述待运算卷积计算矩阵。
第一确定子模块,包括:读取单元,读取单元,用于确定所述初始待运算卷积计算矩阵中每个位置在所述卷积缓存存储阵列中存储数据的地址;按照所述初始待运算卷积计算矩阵中每个位置在存储阵列中存储数据的地址从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据。
第一确定模块82,包括:位置子模块,位置子模块,用于确定所述特征数据的数据矩阵;确定所述脉冲信号对应的数据在所述数据矩阵中的位置坐标;将所述脉冲信号对应的数据在所述数据矩阵中的位置坐标确定为所述脉冲信号在所述特征数据中的位置。
第二确定模块84,包括:第二确定子模块,第二确定子模块,用于确定所述预设卷积权重矩阵中元素的数量;将所述预设卷积权重矩阵中元素的数量确定为所述存储序列的数量,其中,所述预设卷积权重矩阵中元素表示卷积权重值。
第二确定子模块,包括:位置单元,位置单元,用于将所述特征数据的数据矩阵按照所述预设卷积权重矩阵所覆盖的范围将所述特征数据的数据矩阵分为多个子数据矩阵;根据每个子数据矩阵的数据分布情况,确定所述特征数据的数据矩阵中每个数据在所述卷积缓存存储阵列中的位置。
位置单元,包括:位置子单元,位置子单元,用于确定所述每个子数据矩阵的数据排列顺序;按照所述每个子数据矩阵的数据排列顺序依次将所述子数据矩阵的数据存储到所述卷积缓存存储阵列中的多个存储序列中,其中,每个存储序列中存储数据的数量与所述多个子数据矩阵的数量相同。
卷积模块86,包括:第一卷积子模块、第二卷积子模块和更新子模块,第一卷积子模块,用于在所述特征数据中的脉冲信号的数量为一个的情况下,将所述转置后的预设卷积权重矩阵中的卷积权重值依次与所述卷积计算矩阵中对应位置的数据相加,得到卷积结果。
第一卷积子模块,包括:在所述脉冲神经网络第一次进行卷积时,确定所述卷积结果为所述转置后的预设卷积权重矩阵,其中,在所述脉冲神经网络第一次进行卷积之前,所述卷积缓存存储阵列中存储的数据对应的数值均为零。
第二卷积子模块,用于在所述特征数据中的脉冲信号的数量为多个的情况下,按照预设顺序依次对每个脉冲信号对应的待运算卷积计算矩阵进行运算,以得到所述待运算卷积计算矩阵的卷积结果,其中,在前一个脉冲信号对应的待运算卷积计算矩阵完成运算,并对所述卷积缓存存储阵列中数据进行更新之后,再确定后一个脉冲信号对应的待运算卷积计算矩阵。
更新子模块,用于将所述卷积结果对应的数据重新写入到卷积缓存存储阵列中与进行卷积运算之前的所述待运算的数据存储位置相同的存储位置,以完成所述卷积缓存存储阵列中数据的更新。
更新子模块,包括:更新单元,更新单元,用于将卷积缓存存储阵列中数值大于预设阈值的数据,确定为第一数据,并将所述第一数据的数值更新为零。
更新单元,包括:脉冲子单元,脉冲子单元,用于确定所述第一数据在所述特征数据中的位置;根据所述第一数据在所述特征数据中的位置确定下一次脉冲信号的位置。
上述脉冲神经网络卷积结果确定装置,通过本申请,由于根据特征数据中的脉冲信号在所述特征数据中的位置,从卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,确定所述待运算卷积计算矩阵的卷积结果,卷积权重矩阵只需要和脉冲信号所在区域的数据完成一次运算,就能得到卷积结果,避免了卷积权重矩阵分别与特征数据的指定区域内的所有数据分别进行运算,达到了简化卷积计算过程,以提高加速器计算效率的效果。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述脉冲神经网络的卷积加速方法。
上述计算机可读存储介质,存储的脉冲神经网络的卷积加速方法,包括:接收含有脉冲信号的特征数据;确定所述脉冲信号在所述特征数据中的位置;根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
上述计算机设备执行的脉冲神经网络的卷积加速方法,包括:接收含有脉冲信号的特征数据;确定所述脉冲信号在所述特征数据中的位置;根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。
在一个示例性实施例中,上述计算机设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (23)
1.一种脉冲神经网络的卷积加速方法,其特征在于,包括:
接收含有脉冲信号的特征数据;
确定所述脉冲信号在所述特征数据中的位置;
根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;
对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,确定所述待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。
2.根据权利要求1所述的方法,其特征在于,根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以确定待运算卷积计算矩阵,包括:
以所述脉冲信号的位置为初始待运算卷积计算矩阵的中心,所述预设卷积权重矩阵的范围为初始待运算卷积计算矩阵的范围,在所述特征数据中确定初始待运算卷积计算矩阵;
从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据,并将读取到的数据填充到所述初始待运算卷积计算矩阵中的每个位置中,得到所述待运算卷积计算矩阵。
3.根据权利要求2所述的方法,其特征在于,从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据,包括:
确定所述初始待运算卷积计算矩阵中每个位置在所述卷积缓存存储阵列中存储数据的地址;
按照所述初始待运算卷积计算矩阵中每个位置在存储阵列中存储数据的地址从所述卷积缓存存储阵列中读取所述初始待运算卷积计算矩阵中每个位置的数据。
4.根据权利要求1所述的方法,其特征在于,确定所述脉冲信号在所述特征数据中的位置,包括:
确定所述特征数据的数据矩阵;
确定所述脉冲信号对应的数据在所述数据矩阵中的位置坐标;
将所述脉冲信号对应的数据在所述数据矩阵中的位置坐标确定为所述脉冲信号在所述特征数据中的位置。
5.根据权利要求1所述的方法,其特征在于,所述卷积缓存存储阵列中存储序列的数量通过以下方式确定,包括:
确定所述预设卷积权重矩阵中元素的数量;
将所述预设卷积权重矩阵中元素的数量确定为所述存储序列的数量,其中,所述预设卷积权重矩阵中元素表示卷积权重值。
6.根据权利要求5所述的方法,其特征在于,所述特征数据的数据矩阵中的数据通过以下方式确定,包括:
将所述特征数据的数据矩阵按照所述预设卷积权重矩阵所覆盖的范围将所述特征数据的数据矩阵分为多个子数据矩阵;
根据每个子数据矩阵的数据分布情况,确定所述特征数据的数据矩阵中每个数据在所述卷积缓存存储阵列中的位置。
7.根据权利要求6所述的方法,其特征在于,根据每个子数据矩阵的数据分布情况,确定所述特征数据的数据矩阵中每个数据在所述卷积缓存存储阵列中的位置,包括:
确定所述每个子数据矩阵的数据排列顺序;
按照所述每个子数据矩阵的数据排列顺序依次将所述子数据矩阵的数据存储到所述卷积缓存存储阵列中的多个存储序列中,其中,每个存储序列中存储数据的数量与所述多个子数据矩阵的数量相同。
8.根据权利要求1所述的方法,其特征在于,所述将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵卷积结果,包括:
在所述特征数据中的脉冲信号的数量为一个的情况下,将所述转置后的预设卷积权重矩阵中的卷积权重值依次与所述卷积计算矩阵中对应位置的数据相加,得到卷积结果。
9.根据权利要求8所述的方法,其特征在于,将所述转置后的预设卷积权重矩阵与所述卷积计算矩阵进行运算,以确定所述卷积计算矩阵的卷积结果,包括:
在所述脉冲神经网络第一次进行卷积时,确定所述卷积结果为所述转置后的预设卷积权重矩阵,其中,在所述脉冲神经网络第一次进行卷积之前,所述卷积缓存存储阵列中存储的数据对应的数值均为零。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述特征数据中的脉冲信号的数量为多个的情况下,按照预设顺序依次对每个脉冲信号对应的待运算卷积计算矩阵进行运算,以得到所述待运算卷积计算矩阵的卷积结果,其中,在前一个脉冲信号对应的待运算卷积计算矩阵完成运算,并对所述卷积缓存存储阵列中数据进行更新之后,再确定后一个脉冲信号对应的待运算卷积计算矩阵。
11.根据权利要求1所述的方法,其特征在于,在确定所述待运算卷积计算矩阵的卷积结果之后,所述方法还包括:
将所述卷积结果对应的数据重新写入到卷积缓存存储阵列中与进行卷积运算之前的所述待运算的数据存储位置相同的存储位置,以完成所述卷积缓存存储阵列中数据的更新。
12.根据权利要求11所述的方法,其特征在于,将所述卷积结果对应的数据重新写入到卷积缓存存储阵列中与进行卷积运算之前的所述待运算的数据存储位置相同的存储位置,以完成所述卷积缓存存储阵列中数据的更新之后,所述方法还包括:
将所述卷积缓存存储阵列中数值大于预设阈值的数据,确定为第一数据,并将所述第一数据的数值更新为零。
13.根据权利要求12所述的方法,其特征在于,在将所述第一数据在所述卷积缓存存储阵列中的数值更新为零之后,所述方法还包括:
确定所述第一数据在所述特征数据中的位置;
根据所述第一数据在所述特征数据中的位置确定下一次脉冲信号的位置。
14.一种脉冲神经网络卷积加速器,其特征在于,包括:特征数据生成模块、地址计算模块、卷积缓存存储阵列、卷积计算阵列和权重缓存模块,其中,所述特征数据生成模块、所述地址计算模块、所述卷积缓存存储阵列、所述卷积计算阵列和所述权重缓存模块依次连接;
所述特征数据生成模块,用于生成含有脉冲信号的特征数据,并确定所述脉冲信号在所述特征数据中的位置坐标,以将所述位置坐标发送给所述地址计算模块;
所述地址计算模块,用于根据所述脉冲信号在所述特征数据中的位置坐标从所述卷积缓存存储阵列中读取待运算的数据,并将读取到的所述待运算的数据发送给所述卷积计算阵列;
所述卷积计算阵列,用于根据所述待运算的数据确定待运算卷积计算矩阵,并接收所述权重缓存模块发送的预设卷积权重矩阵,并将所述预设卷积权重矩阵进行转置得到转置后的预设卷积权重矩阵,还用于将所述转置后的预设卷积权重矩阵与所述卷积计算矩阵进行计算,以确定卷积结果,将所述卷积结果发送给所述卷积缓存存储阵列。
15.根据权利要求14所述的加速器,其特征在于,所述加速器还包括:
脉冲地址队列模块,所述脉冲地址队列模块设置于所述特征数据生成模块和所述地址计算模块之间,用于接收并存储所述特征数据生成模块发送的所述位置坐标,并将所述位置坐标按照所述位置坐标的接收顺序,依次将所述位置坐标发送给所述地址计算模块。
16.根据权利要求15所述的加速器,其特征在于,所述加速器还包括:
阈值判断模块,所述阈值判断模块分别与所述卷积缓存存储阵列和所述脉冲地址队列模块连接,用于在所述卷积缓存存储阵列中存储的数据对应的数值大于预设阈值的情况下,将所述存储的数据对应的数值清零,并向所述脉冲地址队列模块发送所述存储的数据在所述特征数据中的位置坐标。
17.根据权利要求14所述的加速器,其特征在于,所述卷积缓存存储阵列,还用于接收所述卷积结果,并根据所述卷积结果对所述卷积缓存存储阵列中的数据进行更新。
18.根据权利要求14所述的加速器,其特征在于,所述卷积缓存存储阵列,包括:
多个随机存取存储器,其中,所述多个随机存取存储器的数量与所述预设卷积权重矩阵中元素的数量相同。
19.根据权利要求14所述的加速器,其特征在于,所述卷积缓存存储阵列中存储的数据的初始值均为零。
20.根据权利要求14所述的加速器,其特征在于,所述卷积计算阵列,包括:
多个计算引擎,所述多个计算引擎的数量与所述预设卷积权重矩阵中元素的数量相同。
21.一种脉冲神经网络的卷积加速装置,其特征在于,包括:
接收模块,用于接收含有脉冲信号的特征数据;
第一确定模块,用于确定所述脉冲信号在所述特征数据中的位置;
第二确定模块,用于根据所述脉冲信号的位置从卷积加速器中的卷积缓存存储阵列中读取待运算的数据,以生成脉冲神经网络中的待运算卷积计算矩阵;
卷积模块,用于对预设卷积权重矩阵进行转置,并将转置后的预设卷积权重矩阵与所述待运算卷积计算矩阵进行运算,以确定所述待运算卷积计算矩阵的卷积结果,以完成脉冲神经网络的卷积加速。
22.一种计算机设备,其特征在于,包括存储器和处理器,所述处理器用于运行计算机程序,其中,所述处理器所在设备通过运行所述计算机程序执行权利要求1至13中任意一项所述脉冲神经网络的卷积加速方法。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,所述计算机可读存储介质所在设备通过运行所述计算机程序执行权利要求1至13中任意一项所述脉冲神经网络的卷积加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310967759.6A CN116720551B (zh) | 2023-08-02 | 2023-08-02 | 脉冲神经网络的卷积加速方法及卷积加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310967759.6A CN116720551B (zh) | 2023-08-02 | 2023-08-02 | 脉冲神经网络的卷积加速方法及卷积加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116720551A true CN116720551A (zh) | 2023-09-08 |
CN116720551B CN116720551B (zh) | 2023-09-29 |
Family
ID=87868200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310967759.6A Active CN116720551B (zh) | 2023-08-02 | 2023-08-02 | 脉冲神经网络的卷积加速方法及卷积加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116720551B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117057403A (zh) * | 2023-10-10 | 2023-11-14 | 苏州元脑智能科技有限公司 | 一种运算模块、基于脉冲神经网络的加速器及方法 |
CN117437382A (zh) * | 2023-12-19 | 2024-01-23 | 成都电科星拓科技有限公司 | 一种数据中心部件的更新方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334801A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的硬件加速方法、装置、设备及系统 |
CN112183739A (zh) * | 2020-11-02 | 2021-01-05 | 中国科学技术大学 | 基于忆阻器的低功耗脉冲卷积神经网络的硬件架构 |
CN114611684A (zh) * | 2022-03-08 | 2022-06-10 | 浙江大学 | 一种基于stdp在线学习的卷积脉冲神经网络的硬件加速器 |
CN114792132A (zh) * | 2022-06-22 | 2022-07-26 | 苏州浪潮智能科技有限公司 | 一种脉冲神经网络加速计算系统、方法、设备及介质 |
CN114819114A (zh) * | 2022-07-04 | 2022-07-29 | 南京大学 | 脉冲神经网络硬件加速器及其在卷积运算中的优化方法 |
CN116167425A (zh) * | 2023-04-26 | 2023-05-26 | 浪潮电子信息产业股份有限公司 | 一种神经网络加速方法、装置、设备及介质 |
-
2023
- 2023-08-02 CN CN202310967759.6A patent/CN116720551B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334801A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的硬件加速方法、装置、设备及系统 |
CN112183739A (zh) * | 2020-11-02 | 2021-01-05 | 中国科学技术大学 | 基于忆阻器的低功耗脉冲卷积神经网络的硬件架构 |
CN114611684A (zh) * | 2022-03-08 | 2022-06-10 | 浙江大学 | 一种基于stdp在线学习的卷积脉冲神经网络的硬件加速器 |
CN114792132A (zh) * | 2022-06-22 | 2022-07-26 | 苏州浪潮智能科技有限公司 | 一种脉冲神经网络加速计算系统、方法、设备及介质 |
CN114819114A (zh) * | 2022-07-04 | 2022-07-29 | 南京大学 | 脉冲神经网络硬件加速器及其在卷积运算中的优化方法 |
CN116167425A (zh) * | 2023-04-26 | 2023-05-26 | 浪潮电子信息产业股份有限公司 | 一种神经网络加速方法、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
程文韶 等: "基于卷积神经网络的目标检测硬件加速器设计", 光学与光电技术, vol. 20, no. 5, pages 108 - 114 * |
童敢 等: "Winograd快速卷积相关研究综述", 计算机科学与探索, vol. 16, no. 5, pages 959 - 971 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117057403A (zh) * | 2023-10-10 | 2023-11-14 | 苏州元脑智能科技有限公司 | 一种运算模块、基于脉冲神经网络的加速器及方法 |
CN117057403B (zh) * | 2023-10-10 | 2024-02-13 | 苏州元脑智能科技有限公司 | 一种运算模块、基于脉冲神经网络的加速器及方法 |
CN117437382A (zh) * | 2023-12-19 | 2024-01-23 | 成都电科星拓科技有限公司 | 一种数据中心部件的更新方法及系统 |
CN117437382B (zh) * | 2023-12-19 | 2024-03-19 | 成都电科星拓科技有限公司 | 一种数据中心部件的更新方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116720551B (zh) | 2023-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116720551B (zh) | 脉冲神经网络的卷积加速方法及卷积加速器 | |
EP3373210B1 (en) | Transposing neural network matrices in hardware | |
CN106875011B (zh) | 二值权重卷积神经网络加速器的硬件架构及其计算流程 | |
KR102415576B1 (ko) | 컨벌루션 뉴럴 네트워크의 계산 복잡성을 감소시키기 위한 방법 및 시스템 | |
CN108645411B (zh) | 基于粒子群算法的机器人路径规划方法、装置及终端设备 | |
KR20170126997A (ko) | 신경망 프로세서의 벡터 컴퓨테이션 유닛 | |
CN112465131A (zh) | 神经网络处理器中的批处理 | |
CN107944545B (zh) | 应用于神经网络的计算方法及计算装置 | |
CN109993308B (zh) | 基于云平台共享学习系统及方法、共享平台及方法、介质 | |
CN110197183B (zh) | 一种图像盲去噪的方法、装置、计算机设备和存储介质 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN115880132B (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN107730514A (zh) | 场景分割网络训练方法、装置、计算设备及存储介质 | |
CN115186802A (zh) | 基于卷积神经网络的块稀疏方法、装置及处理单元 | |
CN110580522A (zh) | 卷积计算方法及相关设备 | |
CN114996649A (zh) | 一种矩阵分解和下三角矩阵求逆的实现方法 | |
CN106528903A (zh) | 执行水下爆炸的数字模拟的系统和方法 | |
WO2022137696A1 (ja) | 情報処理装置、情報処理方法 | |
US11775803B2 (en) | System and method for accelerating RNN network, and storage medium | |
CN116167425B (zh) | 一种神经网络加速方法、装置、设备及介质 | |
CN111753951A (zh) | 信息处理器、信息处理方法和存储介质 | |
CN117063182A (zh) | 一种数据处理方法和装置 | |
CN115879562A (zh) | 一种量子程序初始映射的确定方法、装置及量子计算机 | |
CN108832935B (zh) | 一种rle算法实现方法、系统、设备及计算机存储介质 | |
CN115355918B (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 |