CN115456149A - 脉冲神经网络加速器学习方法、装置、终端及存储介质 - Google Patents
脉冲神经网络加速器学习方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN115456149A CN115456149A CN202211221881.0A CN202211221881A CN115456149A CN 115456149 A CN115456149 A CN 115456149A CN 202211221881 A CN202211221881 A CN 202211221881A CN 115456149 A CN115456149 A CN 115456149A
- Authority
- CN
- China
- Prior art keywords
- gradient
- convolution
- result
- pulse
- neural network
- 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/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)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种脉冲神经网络加速器学习方法、装置、终端及存储介质,包括:获取前向运算所需数据,并根据前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果;根据前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果;根据后向运算结果进行梯度更新运算,并根据梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。本发明可以高效处理基于BPTT的脉冲神经网络学习,从而确保了SNN的精度,端到端的解决了SNN学习问题。
Description
技术领域
本发明涉及脉冲神经网络加速器技术领域,尤其涉及的是脉冲神经网络加速器学习方法、装置、终端及存储介质。
背景技术
脉冲神经网络(Spiking Neural Network,SNN)是源于生物启发的新一代人工智能神经网络模型,属于深度学习子集且具有较强的生物基础支撑。动态神经网络中的神经元不是在每一次迭代传播中都被激活,而是在它的膜电位达到某一个特定值才被激活。当一个神经元被激活,它会产生一个信号传递给其他神经元,提高或降低其膜电位,因此其模拟神经元更加接近实际。脉冲神经网络具有强大的时空信息表征、异步事件信息处理、网络自组织学习等能力。借助于对神经科学的研究,人们可以通过建立精确的脉冲-时间模型,采用脉冲编码(spike coding),从而使这种新型的神经网络获得更多的信息和更强的计算能力。脉冲神经网络与传统人工智能神经网络一样可以用于信息处理,且它更加接近现实,因此可以用作学习生物神经系统。虽然在发展和应用方面,脉冲神经网络(SNN)还远远落后于深度学习人工神经网络(ANN),但是脉冲神经网络能更好模仿生物神经系统运行机制。
目前,基于生物合理性建模的脉冲神经网络(SNN),模拟神经元之间通过脉冲信号交流和传递信息。脉冲神经网络在处理天然的稀疏信号有不可替代的唯一优势。但是低精度却限制了其应用,现今通用处理器在处理SNN的BPTT(Back Propagation Through Time)算法效率很低。
因此,现有技术还有待改进。
发明内容
本发明要解决的技术问题在于,针对现有技术缺陷,本发明提供一种脉冲神经网络加速器学习方法、装置、终端及存储介质,以解决传统脉冲神经网络学习精度低的技术问题。
本发明解决技术问题所采用的技术方案如下:
第一方面,本发明提供一种脉冲神经网络加速器学习方法,包括:
获取前向运算所需数据,并根据所述前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果;
根据所述前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果;
根据所述后向运算结果进行梯度更新运算,并根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。
在一种实现方式中,所述获取前向运算数据,并根据所述前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果,包括:
将所述前向运算所需数据搬入DDR存储器中;
通过直接存储器访问指令将每轮卷积运算所需数据搬入片内对应SRAM存储器中,并配置第一运算参数;
根据所述第一运算参数进行第一卷积运算,并将得到的卷积值存放在第一SRAM存储器中;
根据所述第一卷积运算的卷积值进行自组织迁移运算,并将得到运算结果搬入所述DDR存储器中。
在一种实现方式中,所述第一运算参数包括:目标图像尺寸、卷积运算参数、运算模式以及卷积开始信号中的一种或组合。
在一种实现方式中,所述根据所述第一卷积运算的卷积值进行自组织迁移运算,并将得到运算结果搬入所述DDR存储器中,包括:
根据所述第一卷积运算的卷积值计算得到对应的膜电位;
将得到的膜电位与第一阈值进行对比;
根据对比结果得到脉冲张量和脉冲梯度掩蔽信号,将所述脉冲张量和所述脉冲梯度掩蔽信号搬入所述DDR存储器中,得到所述前向运算结果。
在一种实现方式中,所述根据所述第一卷积运算的卷积值进行自组织迁移运算,并将得到运算结果搬入所述DDR存储器中,之后包括:
判断所有的卷积核是否已完成所述第一卷积运算;
若有未完成运算的卷积核,则对未完成运算的卷积核进行卷积数据搬运、第一运算参数配置、第一卷积运算以及自组织迁移运算,直到完成全部时刻与全部层的运算。
在一种实现方式中,所述根据所述前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果,包括:
将所述前向运算结果对应的数据搬入DDR存储器中;
通过直接存储器访问指令将每轮卷积运算所需数据搬入片内对应SRAM存储器中,并配置第二运算参数;
对n个通道的脉冲梯度掩蔽信号进行同步扫描,根据扫描结果对信号为1的脉冲梯度掩蔽信号进行寻址及第二卷积运算;
根据所述第二卷积运算的卷积值进行对应点的梯度运算,并将得到运算结果搬入所述DDR存储器中。
在一种实现方式中,所述对n个通道的脉冲梯度掩蔽信号进行同步扫描,根据扫描结果对信号为1的脉冲梯度掩蔽信号进行寻址及第二卷积运算,包括:
根据所述前向运算结果,同时对n个通道的脉冲梯度掩蔽信号进行一一扫描;
若被扫描的信号为0,则跳过所述第二卷积运算;
若被扫描的信号为1,则对对应的脉冲梯度掩蔽信号进行寻址,并根据所述第二运算参数进行k*k窗口的卷积运算。
在一种实现方式中,所述根据所述第二卷积运算的卷积值进行对应点的梯度运算,并将得到运算结果搬入所述DDR存储器中,之后包括:
判断所有脉冲梯度掩蔽信号是否已完成扫描;
若有未完成扫描的脉冲梯度掩蔽信号,则对未完成扫描的脉冲梯度掩蔽信号进行卷积数据搬运、第二运算参数配置、扫描、第二卷积运算以及梯度运算,直到完成全部时刻与全部层的运算。
在一种实现方式中,所述根据所述后向运算结果进行梯度更新运算,并根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数,包括:
将所述后向运算结果对应的数据搬入DDR中;
将每轮梯度更新需要的数据放入对应SRAM存储器中,配置梯度运算参数、梯度更新模式以及梯度运算开始信号;
进行梯度更新运算,并将结果搬至DDR中。
在一种实现方式中,所述进行梯度更新运算,并将结果搬至DDR中,包括:
循环进行n个膜电位梯度cube运算,直到完成全部膜电位梯度与脉冲张量的运算。
第二方面,本发明提供一种脉冲神经网络加速器学习装置,包括:
前向运算模块,用于获取前向运算所需数据,并根据所述前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果;
后向运算模块,用于根据所述前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果;
梯度更新运算模块,用于根据所述后向运算结果进行梯度更新运算,并根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。
第三方面,本发明提供一种终端,包括:处理器以及存储器,所述存储器存储有脉冲神经网络加速器学习程序,所述脉冲神经网络加速器学习程序被所述处理器执行时用于实现如第一方面所述的脉冲神经网络加速器学习方法的操作。
第四方面,本发明还提供一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质存储有脉冲神经网络加速器学习程序,所述脉冲神经网络加速器学习程序被处理器执行时用于实现如第一方面所述的脉冲神经网络加速器学习方法的操作。
本发明采用上述技术方案具有以下效果:
本发明根据前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,可以利用脉冲神经网络加速器的前向运算引擎得到前向运算结果;并且,根据前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,可以利用脉冲神经网络加速器的后向运算引擎得到后向运算结果;以及根据后向运算结果进行梯度更新运算,可以根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。本发明提出了一种新型加速器架构,可以高效处理基于BPTT的脉冲神经网络学习,从而确保了SNN的精度,端到端的解决了SNN学习问题。此外利用输入脉冲信号的高稀疏性,且进行了引擎复用,具有更高能效与更少的硬件资源消耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1是本发明的一种实现方式中脉冲神经网络加速器学习方法的流程图。
图2是本发明的一种实现方式中脉冲神经网络加速器的架构示意图;其中,图2a为整体架构示意图;图2b为前向运算引擎示意图;图2c为后向运算引擎示意图。
图3是本发明的一种实现方式中终端的功能原理图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
示例性方法
基于生物合理性建模的脉冲神经网络(SNN),模拟神经元之间通过脉冲信号交流和传递信息。脉冲神经网络在处理天然的稀疏信号有不可替代的唯一优势。但是低精度却限制了其应用,现今通用处理器在处理SNN的BPTT算法效率很低。
针对上述技术问题,本实施例中提供了一种脉冲神经网络加速器学习方法,该脉冲神经网络加速器学习方法基于新型加速器架构实现,可以高效处理基于BPTT的脉冲神经网络学习,从而确保了SNN的精度,端到端的解决了SNN学习问题。此外利用输入脉冲信号的高稀疏性,且进行了引擎复用,使得加速器架构具有更高能效与更少的硬件资源消耗。
如图1所示,本发明实施例提供一种脉冲神经网络加速器学习方法,包括以下步骤:
步骤S100,获取前向运算所需数据,并根据所述前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果。
在本实施例中,该脉冲神经网络加速器学习方法应用于终端上,该终端包括但不限于:计算机等设备;所述终端设置有脉冲神经网络加速器架构,该脉冲神经网络加速器架构可以高效处理基于BPTT的脉冲神经网络学习,从而确保了SNN的精度,端到端的解决了SNN学习问题;并且,该脉冲神经网络加速器架构利用输入脉冲信号的高稀疏性,且进行了引擎复用,具有更高能效与更少的硬件资源消耗。
如图2中a所示,在本实施例中,脉冲神经网络加速器架构的硬件设备,包括但不限于:脉冲网络加速器、CPU核、DDR(双倍数据率同步动态随机存取存储器)和DMA(直接存储器访问);其中,脉冲网络加速器、CPU核、DDR和DMA均挂载在AMBA总线矩阵上。
在脉冲网络加速器中,包括:前向运算引擎、后向运算引擎以及梯度更新引擎;前向运算和梯度更新复用同一个引擎、相同SRAM存储器(静态随机存取存储器)和卷积模块,最大限度节约了资源和能耗。运算所需的网络数据全部存放于片外DDR存储器中,每轮运算根据设计的并行度n将所需数据通过DMA搬运至相应的片内SRAM存储器中,片内SRAM存储器均采用Ping-Pong SRAM结构,两片乒乓存储器交替存储,用以提高数据的存取效率,减少整体的运算时间。脉冲神经网络加速器引擎处理的图像尺寸、运算参数、运算模式等通过APB总线配置寄存器传递。
具体地,在本实施例的一种实现方式中,步骤S100包括以下步骤:
步骤S101,将所述前向运算所需数据搬入DDR存储器中;
步骤S102,通过直接存储器访问指令将每轮卷积运算所需数据搬入片内对应SRAM存储器中,并配置第一运算参数;
步骤S103,根据所述第一运算参数进行第一卷积运算,并将得到的卷积值存放在第一SRAM存储器中;
步骤S104,根据所述第一卷积运算的卷积值进行自组织迁移运算,并将得到运算结果搬入所述DDR存储器中。
在本实施例中,通过前向运算引擎进行前向运算,得到前向运算结果;前向运算为在层Layer和t方向上正向传输的运算,前向运算引擎通过上一层脉冲与权重,以及本层上一时刻的脉冲与膜电位,得到本层当前时刻的脉冲张量、膜电位与脉冲张量梯度掩蔽信号。
如图2中b所示,在前向运算的过程中,首先需要将前向运算所需数据搬入DDR存储器中,其中,前向运算所需数据为输入数据(即上一层脉冲与权重,以及本层上一时刻的脉冲与膜电位);然后,使用DMA将每轮卷积运算所需数据(n个卷积核所需数据)搬入片内对应SRAM存储器中,并且配置该前向运算引擎中的卷积运算参数(即第一运算参数),该参数包括:目标图像尺寸、卷积运算参数、运算模式以及卷积开始信号中的一种或组合;最后,根据配置的参数进行该前向运算引擎中的卷积运算(即第一卷积运算),并将结果存放在Partsum SRAM中,以及从Partsum SRAM中取出卷积值进行SOMA运算(即自组织迁移运算),并将结果搬至DDR存储器中。
在本实施例中,前向运算引擎中的整体运算可以分为:卷积运算和SOMA运算这两个阶段进行,即在卷积运算完成后得到中间值,然后进行后续SOMA运算。在每轮卷积运算与SOMA运算之前,需要软件将需要的数据存入相应SRAM存储器,然后拉起Flag(标志旗)告知硬件加速器数据准备完毕,可以开始运算。
具体地,在本实施例的一种实现方式中,步骤S103包括以下步骤:
步骤S103a,根据所述第一卷积运算的卷积值计算得到对应的膜电位;
步骤S103b,将得到的膜电位与第一阈值进行对比;
步骤S103c,根据对比结果得到脉冲张量和脉冲梯度掩蔽信号,将所述脉冲张量和所述脉冲梯度掩蔽信号搬入所述DDR存储器中,得到所述前向运算结果。
如图2中b所示,在本实施例中,每轮卷积运算的并行度为n,对应n个Kernels(内核)的卷积与n个卷积结果Channel(通道)的SOMA运算,即同时进行n组卷积运算与SOMA运算,最终得到n个Channel的结果。
由于神经元之间传递的脉冲信号稀疏度极高,故充分利用这一点先判断每个点全部Channel的脉冲信号是否全为0,如果全为0则跳过该点的点乘运算,继续进行后续点的扫描运算。这样做可以很大程度的降低功耗。卷积运算的每个中间结果都按地址存放在Partsum SRAM中。卷积运算完成后进行SOMA运算,每轮同时进行n个卷积结果Channel的SOMA运算,SOMA运算根据卷积值计算出膜电位,比较膜电位与配置的阈值,得到脉冲张量与脉冲张量梯度掩蔽信号。本实施例中,可以在设定轮数(例如,Kernel数/n)后完成全部前向运算。
具体地,在本实施例的一种实现方式中,步骤S100还包括以下步骤:
步骤S105,判断所有的卷积核是否已完成所述第一卷积运算;
步骤S106,若有未完成运算的卷积核,则对未完成运算的卷积核进行卷积数据搬运、第一运算参数配置、第一卷积运算以及自组织迁移运算,直到完成全部时刻与全部层的运算。
本实施例中通过前向运算引擎进行前向运算,可以利用上一层脉冲与权重,以及本层上一时刻的脉冲与膜电位得到本层当前时刻的脉冲张量、膜电位与脉冲张量梯度掩蔽信号,从而根据这些前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果。
如图1所示,在本发明实施例的一种实现方式中,脉冲神经网络加速器学习方法还包括以下步骤:
步骤S200,根据所述前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果。
在本实施例中,通过后向运算引擎进行后向运算,后向运算为在层Layer和t方向上反向传输,后向运算引擎通过下一层膜电位梯度,本层权重、本层膜电位、本层脉冲、本层脉冲梯度掩蔽信号,本层上一时刻的膜电位梯度得到本层当前时刻的膜电位梯度。
具体地,在本实施例的一种实现方式中,步骤S200包括以下步骤:
步骤S201,将所述前向运算结果对应的数据搬入DDR存储器中;
步骤S202,通过直接存储器访问指令将每轮卷积运算所需数据搬入片内对应SRAM存储器中,并配置第二运算参数;
步骤S203,对n个通道的脉冲梯度掩蔽信号进行同步扫描,根据扫描结果对信号为1的脉冲梯度掩蔽信号进行寻址及第二卷积运算;
步骤S204,根据所述第二卷积运算的卷积值进行对应点的梯度运算,并将得到运算结果搬入所述DDR存储器中。
如图2中c所示,在本实施例中,在后向运算引擎的运算过程中,需要将后向运算所需数据搬入DDR存储器中,其中,后向运算所需数据即为前向运算结果对应的数据;然后,使用DMA将每轮卷积运算所需数据(n个Kernels卷积所需数据)搬入片内对应SRAM存储器,通过软件配置第二运算参数,其中,第二运算参数包括:图像尺寸、卷积运算参数、运算模式与卷积开始信号中的一种或组合;最后,进行n个Channel脉冲梯度掩蔽信号同步一一扫描,如遇到信号为0,则跳过卷积模块;如遇到信号为1,则寻址进行k*k窗口的卷积运算。
具体地,在本实施例的一种实现方式中,步骤S203包括以下步骤:
步骤S203a,根据所述前向运算结果,同时对n个通道的脉冲梯度掩蔽信号进行一一扫描;
步骤S203b,若被扫描的信号为0,则跳过所述第二卷积运算;
步骤S203c,若被扫描的信号为1,则对对应的脉冲梯度掩蔽信号进行寻址,并根据所述第二运算参数进行k*k窗口的卷积运算。
如图2中c所示,在本实施例中,后向运算分为卷积运算(即第二卷积运算)和Grad运算(即Grad梯度运算)两个阶段进行,卷积运算完成后得到中间值,然后进行后续Grad运算。卷积运算根据前向运算得到的结果,同时进行n个Channel脉冲梯度掩蔽信号的一一扫描,由于脉冲梯度掩蔽信号具有很高的稀疏性,利用这一点,后向卷积部分只计算非稀疏的部分。遇到信号为0,则跳过卷积模块,遇到信号为1,则按照寻址方式(如图2中c所示的圆圈部分)取值进行该点对应k*k窗口的卷积运算,这样可以提高能效,具体的提升幅度与脉冲梯度掩蔽信号的稀疏度有关。
在本实施例中,卷积结果按地址存放在Partsum SRAM中。后续进行Grad运算时,按地址取出,同样Grad运算的并行度为n,(kernel数/n)轮后完成全部后向运算。
具体地,在本实施例的一种实现方式中,步骤S200还包括以下步骤:
步骤S205,判断所有脉冲梯度掩蔽信号是否已完成扫描;
步骤S206,若有未完成扫描的脉冲梯度掩蔽信号,则对未完成扫描的脉冲梯度掩蔽信号进行卷积数据搬运、第二运算参数配置、扫描、第二卷积运算以及梯度运算,直到完成全部时刻与全部层的运算。
本实施例中通过后向运算引擎进行后向运算,利用前向运算结果得到本层当前时刻的膜电位梯度,可以利用本层当前时刻的膜电位梯度进行梯度更新运算,从而更新整个脉冲神经网络加速器的梯度参数。
如图1所示,在本发明实施例的一种实现方式中,脉冲神经网络加速器学习方法还包括以下步骤:
步骤S300,根据所述后向运算结果进行梯度更新运算,并根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。
在本实施例中,通过梯度更新引擎进行梯度更新运算,梯度更新运算为在层Layer间反向传输,在t方向进行累加,由上一层膜电位梯度与本层脉冲张量运算得到权重梯度值。
具体地,在本实施例的一种实现方式中,步骤S300包括以下步骤:
步骤S301,将所述后向运算结果对应的数据搬入DDR中;
步骤S302,将每轮梯度更新需要的数据放入对应SRAM存储器中,配置梯度运算参数、梯度更新模式以及梯度运算开始信号;
步骤S303,进行梯度更新运算,并将结果搬至DDR中。
在本实施例中,梯度更新运算前需要先进行前向、后向的所有层Layer与t方向的运算,并且将得到的膜电位梯度与脉冲张量每个Layer将t时刻对应值按照Channel方向放置。
由于梯度更新运算的输入数据也有脉冲张量,因此梯度更新可以复用前向运算的卷积模块,这样做既可以充分利用其稀疏性降低能耗,又可以节约硬件资源。通过软件配置选择运算模式为前向运算或梯度更新。进行梯度更新模式运算时,前向的SOMA运算模块不工作,仅卷积模块工作。并行度为n,每次进行n个膜电位梯度Cube运算,共需(脉冲张量kernel数*膜电位梯度Kernel数/n)次循环完成全部梯度更新。
具体地,在本实施例的一种实现方式中,步骤S303包括以下步骤:
步骤S303a,循环进行n个膜电位梯度cube运算,直到完成全部膜电位梯度与脉冲张量的运算。
在一种实际应用场景中,本实施例的脉冲神经网络加速器学习算法可以包括以下步骤:
S01:将前向运算数据全部搬入DDR中;
S02:使用DMA将每轮卷积运算所需数据(n个Kernels卷积所需数据)搬入片内对应SRAM中,软件配置图像尺寸、运算参数、运算模式与卷积开始信号;
S03:进行卷积运算,并将结果存放在Partsum SRAM中;
S04:从Partsum SRAM中取出卷积值进行SOMA运算,并将结果搬至DDR中;
S05:判断全部Kernels是否都完成运算,如未完成则循环执行S02~S04直到全部完成;
S06:循环执行S02~S04直到完成全部时刻t与全部层Layer的运算。
上述步骤S01~S06为前向运算引擎中进行的运算。
S07:将后向运算数据全部搬入DDR中;
S08:使用DMA将每轮卷积运算所需数据(n个Kernels卷积所需数据)搬入片内对应SRAM中,软件配置图像尺寸、运算参数、运算模式与卷积开始信号;
S09:进行n个Channel脉冲梯度掩蔽信号同步一一扫描,如遇到0则跳过卷积模块,遇到1则寻址进行k*k窗口的卷积运算;
S10:进行对应点的Grad运算,并将结果搬至DDR中;
S11:判断所有脉冲梯度掩蔽信号是否都完成扫描,如未完成则循环执行S08~S10直到全部完成;
S12:循环执行S08~S10直到完成全部时刻t与全部层Layer的运算。
上述步骤S07~S12为后向运算引擎中进行的运算。
S13:将梯度更新运算所需数据全部搬入DDR中;
S14:每轮梯度更新需要的数据放入片内SRAM,配置相关参数,并配置梯度更新模式与开始信号;
S15:进行梯度更新运算,并将结果搬至DDR中;
S16:循环执行S14、S15,直到完成全部膜电位梯度与脉冲张量Kernels的运算。
上述步骤S13~S16为梯度更新运算引擎中进行的运算。
值得一提的是,上述步骤中的运算分别按照前向运算、后向运算、梯度更新的顺序进行。
本实施例通过上述技术方案达到以下技术效果:
本实施例根据前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,可以利用脉冲神经网络加速器的前向运算引擎得到前向运算结果;并且,根据前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,可以利用脉冲神经网络加速器的后向运算引擎得到后向运算结果;以及根据后向运算结果进行梯度更新运算,可以根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。本实施例提出了一种新型加速器架构,可以高效处理基于BPTT的脉冲神经网络学习,从而确保了SNN的精度,端到端的解决了SNN学习问题。此外利用输入脉冲信号的高稀疏性,且进行了引擎复用,具有更高能效与更少的硬件资源消耗。
示例性设备
基于上述实施例,本发明还提供一种脉冲神经网络加速器学习装置,包括:
前向运算模块,用于获取前向运算所需数据,并根据所述前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果;
后向运算模块,用于根据所述前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果;
梯度更新运算模块,用于根据所述后向运算结果进行梯度更新运算,并根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。
基于上述实施例,本发明还提供一种终端,其原理框图可以如图3所示。
该终端包括:通过系统总线连接的处理器、存储器、接口、显示屏以及通讯模块;其中,该终端的处理器用于提供计算和控制能力;该终端的存储器包括存储介质以及内存储器;该存储介质存储有操作系统和计算机程序;该内存储器为存储介质中的操作系统和计算机程序的运行提供环境;该接口用于连接外部设备,例如,移动终端以及计算机等设备;该显示屏用于显示相应的信息;该通讯模块用于与云端服务器或移动终端进行通讯。
该计算机程序被处理器执行时用以实现一种脉冲神经网络加速器学习方法的操作。
本领域技术人员可以理解的是,图3中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种终端,其中,包括:处理器和存储器,存储器存储有脉冲神经网络加速器学习程序,脉冲神经网络加速器学习程序被处理器执行时用于实现如上的脉冲神经网络加速器学习方法的操作。
在一个实施例中,提供了一种存储介质,其中,存储介质存储有脉冲神经网络加速器学习程序,脉冲神经网络加速器学习程序被处理器执行时用于实现如上的脉冲神经网络加速器学习方法的操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。
综上,本发明提供了一种脉冲神经网络加速器学习方法、装置、终端及存储介质,方法包括:获取前向运算所需数据,并根据前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果;根据前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果;根据后向运算结果进行梯度更新运算,并根据梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。本发明可以高效处理基于BPTT的脉冲神经网络学习,从而确保了SNN的精度,端到端的解决了SNN学习问题。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (13)
1.一种脉冲神经网络加速器学习方法,其特征在于,包括:
获取前向运算所需数据,并根据所述前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果;
根据所述前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果;
根据所述后向运算结果进行梯度更新运算,并根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。
2.根据权利要求1所述的脉冲神经网络加速器学习方法,其特征在于,所述获取前向运算数据,并根据所述前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果,包括:
将所述前向运算所需数据搬入DDR存储器中;
通过直接存储器访问指令将每轮卷积运算所需数据搬入片内对应SRAM存储器中,并配置第一运算参数;
根据所述第一运算参数进行第一卷积运算,并将得到的卷积值存放在第一SRAM存储器中;
根据所述第一卷积运算的卷积值进行自组织迁移运算,并将得到运算结果搬入所述DDR存储器中。
3.根据权利要求2所述的脉冲神经网络加速器学习方法,其特征在于,所述第一运算参数包括:目标图像尺寸、卷积运算参数、运算模式以及卷积开始信号中的一种或组合。
4.根据权利要求2所述的脉冲神经网络加速器学习方法,其特征在于,所述根据所述第一卷积运算的卷积值进行自组织迁移运算,并将得到运算结果搬入所述DDR存储器中,包括:
根据所述第一卷积运算的卷积值计算得到对应的膜电位;
将得到的膜电位与第一阈值进行对比;
根据对比结果得到脉冲张量和脉冲梯度掩蔽信号,将所述脉冲张量和所述脉冲梯度掩蔽信号搬入所述DDR存储器中,得到所述前向运算结果。
5.根据权利要求2所述的脉冲神经网络加速器学习方法,其特征在于,所述根据所述第一卷积运算的卷积值进行自组织迁移运算,并将得到运算结果搬入所述DDR存储器中,之后包括:
判断所有的卷积核是否已完成所述第一卷积运算;
若有未完成运算的卷积核,则对未完成运算的卷积核进行卷积数据搬运、第一运算参数配置、第一卷积运算以及自组织迁移运算,直到完成全部时刻与全部层的运算。
6.根据权利要求1所述的脉冲神经网络加速器学习方法,其特征在于,所述根据所述前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果,包括:
将所述前向运算结果对应的数据搬入DDR存储器中;
通过直接存储器访问指令将每轮卷积运算所需数据搬入片内对应SRAM存储器中,并配置第二运算参数;
对n个通道的脉冲梯度掩蔽信号进行同步扫描,根据扫描结果对信号为1的脉冲梯度掩蔽信号进行寻址及第二卷积运算;
根据所述第二卷积运算的卷积值进行对应点的梯度运算,并将得到运算结果搬入所述DDR存储器中。
7.根据权利要求6所述的脉冲神经网络加速器学习方法,其特征在于,所述对n个通道的脉冲梯度掩蔽信号进行同步扫描,根据扫描结果对信号为1的脉冲梯度掩蔽信号进行寻址及第二卷积运算,包括:
根据所述前向运算结果,同时对n个通道的脉冲梯度掩蔽信号进行一一扫描;
若被扫描的信号为0,则跳过所述第二卷积运算;
若被扫描的信号为1,则对对应的脉冲梯度掩蔽信号进行寻址,并根据所述第二运算参数进行k*k窗口的卷积运算。
8.根据权利要求6所述的脉冲神经网络加速器学习方法,其特征在于,所述根据所述第二卷积运算的卷积值进行对应点的梯度运算,并将得到运算结果搬入所述DDR存储器中,之后包括:
判断所有脉冲梯度掩蔽信号是否已完成扫描;
若有未完成扫描的脉冲梯度掩蔽信号,则对未完成扫描的脉冲梯度掩蔽信号进行卷积数据搬运、第二运算参数配置、扫描、第二卷积运算以及梯度运算,直到完成全部时刻与全部层的运算。
9.根据权利要求1所述的脉冲神经网络加速器学习方法,其特征在于,所述根据所述后向运算结果进行梯度更新运算,并根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数,包括:
将所述后向运算结果对应的数据搬入DDR中;
将每轮梯度更新需要的数据放入对应SRAM存储器中,配置梯度运算参数、梯度更新模式以及梯度运算开始信号;
进行梯度更新运算,并将结果搬至DDR中。
10.根据权利要求9所述的脉冲神经网络加速器学习方法,其特征在于,所述进行梯度更新运算,并将结果搬至DDR中,包括:
循环进行n个膜电位梯度cube运算,直到完成全部膜电位梯度与脉冲张量的运算。
11.一种脉冲神经网络加速器学习装置,其特征在于,包括:
前向运算模块,用于获取前向运算所需数据,并根据所述前向运算数据在前向运算引擎中进行第一卷积运算和自组织迁移运算,得到前向运算结果;
后向运算模块,用于根据所述前向运算结果在后向运算引擎中进行第二卷积运算和梯度运算,得到后向运算结果;
梯度更新运算模块,用于根据所述后向运算结果进行梯度更新运算,并根据所述梯度更新运算的结果更新脉冲神经网络加速器的梯度参数。
12.一种终端,其特征在于,包括:处理器以及存储器,所述存储器存储有脉冲神经网络加速器学习程序,所述脉冲神经网络加速器学习程序被所述处理器执行时用于实现如权利要求1-10中任意一项所述的脉冲神经网络加速器学习方法的操作。
13.一种存储介质,其特征在于,所述存储介质为计算机可读存储介质,所述存储介质存储有脉冲神经网络加速器学习程序,所述脉冲神经网络加速器学习程序被处理器执行时用于实现如权利要求1-10中任意一项所述的脉冲神经网络加速器学习方法的操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211221881.0A CN115456149B (zh) | 2022-10-08 | 2022-10-08 | 脉冲神经网络加速器学习方法、装置、终端及存储介质 |
PCT/CN2023/106990 WO2024074072A1 (zh) | 2022-10-08 | 2023-07-12 | 脉冲神经网络加速器学习方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211221881.0A CN115456149B (zh) | 2022-10-08 | 2022-10-08 | 脉冲神经网络加速器学习方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115456149A true CN115456149A (zh) | 2022-12-09 |
CN115456149B CN115456149B (zh) | 2023-07-25 |
Family
ID=84308072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211221881.0A Active CN115456149B (zh) | 2022-10-08 | 2022-10-08 | 脉冲神经网络加速器学习方法、装置、终端及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115456149B (zh) |
WO (1) | WO2024074072A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024074072A1 (zh) * | 2022-10-08 | 2024-04-11 | 鹏城实验室 | 脉冲神经网络加速器学习方法、装置、终端及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247378A (zh) * | 2006-10-17 | 2008-08-20 | 北京凌讯华业科技有限公司 | 高吞吐量的n点正向和反向快速傅立叶的方法和装置 |
CN107341547A (zh) * | 2016-04-29 | 2017-11-10 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络训练的装置和方法 |
CN108053029A (zh) * | 2017-12-27 | 2018-05-18 | 宁波山丘电子科技有限公司 | 一种基于存储阵列的神经网络的训练方法 |
CN111027691A (zh) * | 2019-12-25 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 用于神经网络运算的计算装置及其集成电路板卡 |
CN112633497A (zh) * | 2020-12-21 | 2021-04-09 | 中山大学 | 一种基于重加权膜电压的卷积脉冲神经网络的训练方法 |
CN112686379A (zh) * | 2020-12-30 | 2021-04-20 | 上海寒武纪信息科技有限公司 | 集成电路装置、电子设备、板卡和计算方法 |
CN112836823A (zh) * | 2021-03-02 | 2021-05-25 | 东南大学 | 基于循环重组和分块的卷积神经网络反向传播映射方法 |
CN113298237A (zh) * | 2021-06-23 | 2021-08-24 | 东南大学 | 一种基于fpga的卷积神经网络片上训练加速器 |
CN114611684A (zh) * | 2022-03-08 | 2022-06-10 | 浙江大学 | 一种基于stdp在线学习的卷积脉冲神经网络的硬件加速器 |
CN114819048A (zh) * | 2021-01-18 | 2022-07-29 | 西门子股份公司 | 用于处理由观察到的三元组语句表示的知识图的神经形态硬件和用于训练学习组件的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704923A (zh) * | 2017-10-19 | 2018-02-16 | 珠海格力电器股份有限公司 | 卷积神经网络运算电路 |
US20220027727A1 (en) * | 2020-07-21 | 2022-01-27 | International Business Machines Corporation | Online training of neural networks |
CN111967594A (zh) * | 2020-08-06 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种神经网络压缩方法、装置、设备及存储介质 |
CN112734012B (zh) * | 2021-01-07 | 2024-03-05 | 北京灵汐科技有限公司 | 脉冲神经网络训练方法、数据处理方法、电子设备和介质 |
CN113255905B (zh) * | 2021-07-16 | 2021-11-02 | 成都时识科技有限公司 | 脉冲神经网络中神经元的信号处理方法及该网络训练方法 |
CN115456149B (zh) * | 2022-10-08 | 2023-07-25 | 鹏城实验室 | 脉冲神经网络加速器学习方法、装置、终端及存储介质 |
-
2022
- 2022-10-08 CN CN202211221881.0A patent/CN115456149B/zh active Active
-
2023
- 2023-07-12 WO PCT/CN2023/106990 patent/WO2024074072A1/zh unknown
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247378A (zh) * | 2006-10-17 | 2008-08-20 | 北京凌讯华业科技有限公司 | 高吞吐量的n点正向和反向快速傅立叶的方法和装置 |
CN107341547A (zh) * | 2016-04-29 | 2017-11-10 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络训练的装置和方法 |
CN108053029A (zh) * | 2017-12-27 | 2018-05-18 | 宁波山丘电子科技有限公司 | 一种基于存储阵列的神经网络的训练方法 |
CN111027691A (zh) * | 2019-12-25 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 用于神经网络运算的计算装置及其集成电路板卡 |
CN112633497A (zh) * | 2020-12-21 | 2021-04-09 | 中山大学 | 一种基于重加权膜电压的卷积脉冲神经网络的训练方法 |
CN112686379A (zh) * | 2020-12-30 | 2021-04-20 | 上海寒武纪信息科技有限公司 | 集成电路装置、电子设备、板卡和计算方法 |
CN114819048A (zh) * | 2021-01-18 | 2022-07-29 | 西门子股份公司 | 用于处理由观察到的三元组语句表示的知识图的神经形态硬件和用于训练学习组件的方法 |
CN112836823A (zh) * | 2021-03-02 | 2021-05-25 | 东南大学 | 基于循环重组和分块的卷积神经网络反向传播映射方法 |
CN113298237A (zh) * | 2021-06-23 | 2021-08-24 | 东南大学 | 一种基于fpga的卷积神经网络片上训练加速器 |
CN114611684A (zh) * | 2022-03-08 | 2022-06-10 | 浙江大学 | 一种基于stdp在线学习的卷积脉冲神经网络的硬件加速器 |
Non-Patent Citations (3)
Title |
---|
JACQUES KAISER等: "Synaptic Plasticity Dynamics for Deep Continuous Local Learning (DECOLLE)", 《FRONTIERS IN NEUROSCIENCE》, pages 1 - 11 * |
ZIHAN XU等: "ReCU: Reviving the Dead Weights in Binary Neural Networks", 《2021 IEEE/CVF INTERNATIONAL CONFERENCE ON COMPUTER VISION (ICCV)》, pages 5178 - 5188 * |
刘博: "深度学习系统内存管理和通信优化关键技术研究", 《中国博士学位论文全文数据库信息科技辑》, pages 140 - 13 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024074072A1 (zh) * | 2022-10-08 | 2024-04-11 | 鹏城实验室 | 脉冲神经网络加速器学习方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115456149B (zh) | 2023-07-25 |
WO2024074072A1 (zh) | 2024-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110555523B (zh) | 一种基于脉冲神经网络的短程跟踪方法及系统 | |
CN109948029B (zh) | 基于神经网络自适应的深度哈希图像搜索方法 | |
WO2021114625A1 (zh) | 用于多任务场景的网络结构构建方法和装置 | |
CN106951926B (zh) | 一种混合架构的深度学习方法及装置 | |
US11348004B2 (en) | Method of managing data representation for deep learning, method of processing data for deep learning and deep learning system performing the same | |
CN111401406B (zh) | 一种神经网络训练方法、视频帧处理方法以及相关设备 | |
CN111382868B (zh) | 神经网络结构搜索方法和神经网络结构搜索装置 | |
CN112163601B (zh) | 图像分类方法、系统、计算机设备及存储介质 | |
CN111210019B (zh) | 一种基于软硬件协同加速的神经网络推断方法 | |
CN111797992A (zh) | 一种机器学习优化方法以及装置 | |
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
WO2023179482A1 (zh) | 一种图像处理方法、神经网络的训练方法以及相关设备 | |
EP4401007A1 (en) | Neural network acquisition method, data processing method and related device | |
WO2024074072A1 (zh) | 脉冲神经网络加速器学习方法、装置、终端及存储介质 | |
CN114519306B (zh) | 一种去中心化的终端节点网络模型训练方法及系统 | |
JP2022548341A (ja) | 目標モデルの取得 | |
CN117688984A (zh) | 神经网络结构搜索方法、装置及存储介质 | |
WO2022134766A1 (zh) | 场景迁移方法、装置及电子设备 | |
WO2024051655A1 (zh) | 全视野组织学图像的处理方法、装置、介质和电子设备 | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
CN114638823B (zh) | 基于注意力机制序列模型的全切片图像分类方法及装置 | |
WO2023197857A1 (zh) | 一种模型切分方法及其相关设备 | |
WO2024045320A1 (zh) | 人脸识别方法及装置 | |
CN114758130B (zh) | 图像处理及模型训练方法、装置、设备和存储介质 | |
WO2023115814A1 (zh) | Fpga硬件架构及其数据处理方法、存储介质 |
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 |