CN113537449A - 基于脉冲神经网络的数据处理方法、计算核电路和芯片 - Google Patents
基于脉冲神经网络的数据处理方法、计算核电路和芯片 Download PDFInfo
- Publication number
- CN113537449A CN113537449A CN202010324179.1A CN202010324179A CN113537449A CN 113537449 A CN113537449 A CN 113537449A CN 202010324179 A CN202010324179 A CN 202010324179A CN 113537449 A CN113537449 A CN 113537449A
- Authority
- CN
- China
- Prior art keywords
- pulse sequence
- pulse
- module
- sent
- core circuit
- 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 41
- 238000003672 processing method Methods 0.000 title abstract description 17
- 238000001208 nuclear magnetic resonance pulse sequence Methods 0.000 claims abstract description 324
- 210000002569 neuron Anatomy 0.000 claims abstract description 91
- 238000012545 processing Methods 0.000 claims abstract description 89
- 230000005540 biological transmission Effects 0.000 claims abstract description 38
- 238000000034 method Methods 0.000 claims description 64
- 230000015654 memory Effects 0.000 claims description 19
- 238000012421 spiking Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 abstract description 22
- 239000012528 membrane Substances 0.000 description 51
- 230000000946 synaptic effect Effects 0.000 description 35
- 230000010354 integration Effects 0.000 description 26
- 230000008569 process Effects 0.000 description 26
- 239000011159 matrix material Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 15
- 210000000225 synapse Anatomy 0.000 description 10
- 210000005056 cell body Anatomy 0.000 description 8
- 210000001787 dendrite Anatomy 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 210000003050 axon Anatomy 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 210000004556 brain Anatomy 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 238000010304 firing Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/02—Arrangements for program control, e.g. control units using wired connections, e.g. plugboards
-
- 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/0495—Quantised networks; Sparse networks; Compressed 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Logic Circuits (AREA)
- Dc Digital Transmission (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开实施例提供了一种基于脉冲神经网络的数据处理方法、计算核电路和芯片。本公开实施例的计算核电路包括:编码模块、路由发送模块以及控制模块,其中,控制模块用于控制编码模块对由当前计算核中至少一个神经元的待发放脉冲确定的脉冲序列进行编码处理,以获取编码后的脉冲序列,并根据编码后的脉冲序列确定对应的路由包,从而对路由包进行发送。本公开实施例的计算核电路在进行数据传输前对脉冲序列进行编码处理,降低了数据传输过程中所需要传输的脉冲数据的数量,从而有效提升神经形态芯片对于脉冲数据的处理效率。
Description
技术领域
本公开涉及数据处理方法,具体涉及一种基于脉冲神经网络的数据处理方法、计算核电路和芯片。
背景技术
随着深度学习技术领域的不断发展,神经网络,特别是类脑计算的研究因其能够广泛地应用于模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域得到迅速发展。基于类脑计算研究的神经形态芯片打破了冯·诺依曼对于类脑计算的束缚,与传统芯片相比,神经形态芯片大幅提升了处理效率。但在脉冲数据的数据量较大时,现有的神经形态芯片对于大规模脉冲数据的处理能力不高,因此计算效率仍旧有待提高。
发明内容
有鉴于此,本公开实施例的目的在于提供一种基于脉冲神经网络的数据处理方法、计算核电路和芯片,以进一步提升神经形态芯片对于脉冲数据的处理效率。
根据本公开实施例的第一方面,提供一种计算核电路,所述电路包括编码模块、路由发送模块以及控制模块;
所述控制模块用于:
控制所述编码模块对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列,所述第二脉冲序列包括当前计算核电路中至少一个神经元的待发放脉冲,所述第二脉冲序列中各待发放脉冲的发放地址连续;
控制所述路由发送模块确定至少一个所述第三脉冲序列对应的第二路由包;
控制所述路由发送模块向至少一个目的计算核电路发送所述第二路由包。
优选地,所述控制模块还用于:
控制所述编码模块读取当前计算核电路的待发放脉冲序列,将所述待发放脉冲序列中发放地址连续的至少一个所述待发放脉冲确定为所述第二脉冲序列。
优选地,所述第二脉冲序列中脉冲的数值包括第一数值和第二数值;
所述控制模块用于:
控制所述编码模块确定所述第二脉冲序列中各第二数值前第一数值的连续数量,并根据各所述连续数量确定所述第二脉冲序列对应的第三脉冲序列。
根据本公开实施例的第二方面,提供一种基于脉冲神经网络的数据处理方法,所述方法包括:
对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列,所述第二脉冲序列包括当前计算核电路中至少一个神经元的待发放脉冲,所述第二脉冲序列中各待发放脉冲的发放地址连续;
确定至少一个所述第三脉冲序列对应的第二路由包;
向至少一个目的计算核电路发送所述第二路由包。
根据本公开实施例的第三方面,提供一种加速处理单元,其中,所述加速处理单元包括多个如第一方面中任一项所述的计算核电路。
根据本公开实施例的第四方面,提供一种芯片,包括至少一个如第一方面所述的计算核电路,以及用于对所述至少一个计算核电路建立通信连接的片上网络。
根据本公开实施例的第五方面,提供一种板卡,其中,所述板卡包括至少一个如第四方面所述的芯片。
根据本公开实施例的第五方面,提供一种电子设备,其中,所述电子设备包括至少一个如第四方面所述的芯片。
根据本公开实施例的第六方面,提供一种电子设备,其中包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述处理器存储的指令,以执行第二方面中任一项所述的方法。
根据本公开实施例的第七方面,提供一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如第二方面中任一项所述的方法。
本公开实施例的计算核电路包括:编码模块、路由发送模块以及控制模块,其中,控制模块用于控制编码模块对由当前计算核中至少一个神经元的待发放脉冲确定的脉冲序列进行编码处理,以获取编码后的脉冲序列,并根据编码后的脉冲序列确定对应的路由包,从而对路由包进行发送。本公开实施例的计算核电路在进行数据传输前对脉冲序列进行编码处理,降低了数据传输过程中所需要传输的脉冲数据的数量,从而有效提升神经形态芯片对于脉冲数据的处理效率。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是脉冲神经网络的结构示意图;
图2是本公开一示例性实施例的神经形态芯片的结构示意图;
图3是本公开一示例性实施例的计算核电路的结构示意图;
图4是本公开一示例性实施例的基于脉冲神经网络的数据处理方法的流程图;
图5是本公开一示例性实施例的基于脉冲神经网络的数据处理方法的流程图;
图6是本公开一示例性实施例的基于脉冲神经网络的数据处理方法的流程图;
图7是本公开一示例性实施例的一种可选的实现方式中根据第一脉冲序列确定突触权重有效行的地址的示意图;
图8-图9是本公开一示例性实施例的基于脉冲神经网络的数据处理方法的流程图;
图10是本公开一示例性实施例的核间脉冲数据传输的示意图;
图11是本公开一示例性实施例的神经形态芯片的传输带宽及积分运算量的列表;
图12是本发明第三实施例的电子设备的示意图;
图13是本发明第四实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
同时,应当理解,在以下的描述中,“电路”是指由至少一个元件或子电路通过电气连接或电磁连接构成的导电回路。当称元件或电路“连接到”另一元件或称元件/电路“连接在”两个节点之间时,它可以是直接耦接或连接到另一元件或者可以存在中间元件,元件之间的连接可以是物理上的、逻辑上的、或者其结合。相反,当称元件“直接耦接到”或“直接连接到”另一元件时,意味着两者不存在中间元件。
除非上下文明确要求,否则在说明书的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
类脑计算(Brain Inspired Computing)通过模仿生物脑部的运行机制,构建与生物脑部相似的电子大脑,用于以较高的准确性和处理效率进行数据处理。基于冯·诺依曼体系的架构对BIC的支持有限,从而限制了神经网络的应用范围,且能效较低,因此为了获得更匹配神经计算的新型架构体系,神经形态芯片(例如,类脑计算芯片)应运而生。神经形态芯片通常为众核结构,各计算核电路(下述也即计算核)包括一组神经元,可以模拟一个生物神经元簇的行为。神经形态芯片中的各计算核均可以完成一组神经元的树突积分计算过程以及胞体运算过程。
图1是脉冲神经网络的结构示意图。容易理解,图1所示的脉冲神经网络的结构(包括层数和神经元数量)仅仅是示意性的。图1所示的脉冲神经网络为三层结构,各层结构均可以对应神经形态芯片中的一个计算核,且各神经元的输入为脉冲,输出也为脉冲。以第一层结构为例,计算核11包括神经元n1,1-神经元n1,m共m个神经元(m为大于等于1的预定整数)。以第二层结构为当前计算核为例进行说明,当前计算核中的一个神经元n2,1在接收到计算核11(也即,源计算核)中各神经元产生的待发放脉冲后(待发放脉冲为0时也可以看作接收到待发放脉冲),对计算核11中对应的待发放脉冲序列进行树突积分计算,得到神经元n2,1对应的膜电位,然后根据膜电位进行胞体运算,得到神经元n2,1对应的待发放脉冲。脉冲神经网络支持并行计算,因此同一计算核(例如,第二层结构)中的各神经元可以并行进行树突积分计算过程和胞体运算过程,例如,当前计算核中各神经元可以同时得到对应的膜电位,进而得到对应的待发放脉冲,从而根据当前计算核中各神经元对应的待发放脉冲确定当前计算核对应的待发放脉冲序列。
容易理解,图1所示的脉冲神经网络为一个全连接的脉冲神经网络,因此各层结构中的神经元均可以属于同一个计算核。若脉冲神经网络为部分连接、且各部分为全连接的脉冲神经网络,则脉冲神经网络的各部分中,同一层结构中的神经元可以属于同一个计算核。
对于计算核内的各神经元,树突积分计算过程用于描述将与该神经元的树突连接的所有输入轴突的脉冲数据进行积分操作的过程。胞体运算过程负责膜电位的更新和发放判断,如果任一神经元的膜电位满足发放条件,则该神经元的轴突会向与该神经元连接的后继神经元发放脉冲,用1表示;否则,该神经元的轴突不会向与该神经元连接的后继神经元发放脉冲,用0表示。这使得神经形态芯片作为一种电子模拟电路的超大规模集成系统能够较为准确地模拟神经系统中的神经生物结构。
但一个计算核内的神经元数量众多,这使得神经形态芯片中的各计算核在进行核间路由时往往需要传输大量的脉冲数据,且脉冲神经网络具有连接稀疏性和发放稀疏性,因此各计算核输出的脉冲数据中,0的比例远远大于1的比例。而在树突积分计算过程中,无论脉冲数据为0或者为1均会进行计算,消耗了大量的运算资源。因此,现有的神经形态芯片的处理效率仍有待提升。
图2是本公开一示例性实施例的神经形态芯片的结构示意图。如图2所示,本实施例的神经形态芯片可以包括至少一个(通常为多个)计算核21以及用于对计算核21建立通信连接的片上网络(NoC,Network-on-Chip)22。各计算核21均可以处理N个神经元与N×N的神经元互联接,也即,一个计算核电路可以对多个神经元的膜电位进行处理。片上网络22是片上系统(也即,在单个芯片上集成的一个完整系统)的一种通信方法,是众核技术的主要组成部分。片上网络有助于简化路由和数据交换功能所需的硬件,可以为网络的不同区域提供多拓扑和多选项支持,且具有较强的可扩展性、互操作性等特性。可选地,由于NOC构架基于的技术不同,本实施例的神经形态芯片可以采用基于电子技术的片上电网络(ENoC,Electrical Network-on-Chip),或者基于光学技术的片上光网络(ONoC,OpticalNetwork-on-Chip)。
图3是本公开一示例性实施例的计算核电路的结构示意图。对于本公开实施例的各计算核电路,均可以采用图3所示的结构。如图3所示,本实施例的计算核电路至少包括控制模块31、编码模块32以及路由发送模块33。其中,控制模块31用于控制编码模块32对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列,控制路由发送模块33根据各第三脉冲序列确定至少一个第二路由包,并控制路由发送模块33向至少一个目的计算核发送第二路由包。其中,第二脉冲序列包括当前计算核中至少一个神经元的待发放脉冲,且第二脉冲序列中各待发放脉冲的发放地址连续。
在本公开一示例性实施例的一种可选的实现方式中,控制模块31还用于控制编码模块32读取当前计算核电路的待发放脉冲序列中发放地址连续的至少一个所述待发放脉冲,并确定为一个第二脉冲序列。
在本公开一示例性实施例的一种可选的实现方式中,第二脉冲序列中脉冲的数值包括第一数值和第二数值。控制模块31用于控制编码模块32确定第二脉冲序列中各第二数值前第一数值的连续数量,并根据各连续数量确定对应的第三脉冲序列。
在本公开一示例性实施例的一种可选的实现方式中,控制模块31用于控制路由发送模块33根据各第三脉冲序列以及对应的第二有效地址确定对应的第二路由包。其中,第二有效地址为第二脉冲序列中第一参考脉冲的发放地址。
在本公开一示例性实施例的一种可选的实现方式中,计算核电路还可以包括路由接收模块34和积分发放处理模块35。控制模块31还用于控制路由接收模块34接收至少一个源计算核电路发送的第一路由包,控制积分发放处理模块35根据对应的突触权重矩阵对至少一个第一脉冲序列进行膜电位积分运算,以获取对应的膜电位序列,并控制积分发放处理模块35根据至少一个膜电位序列确定当前计算核的待发放脉冲序列。其中,第一路由包包括第一脉冲序列,第一脉冲序列由对应的源计算核对第四脉冲序列进行编码处理得到的脉冲序列,且第四脉冲序列中各脉冲的发放地址连续。膜电位序列为当前计算核中至少一个神经元的膜电位构成的序列。
在本公开一示例性实施例的一种可选的实现方式中,计算核电路还包括地址跳跃控制模块36,第一路由包还包括第一脉冲序列对应的第一有效地址,其中,第一有效地址为第四脉冲序列中第二参考脉冲的发放地址。控制模块31用于控制地址跳跃控制模块36根据第一有效地址以及第一脉冲序列确定突触权重矩阵中有效行的地址以及有效行的突触权重,并控制积分发放处理模块35根据有效行的突触权重进行膜电位积分运算,以确定第一脉冲序列对应的膜电位序列。
在本公开一示例性实施例的一种可选的实现方式中,计算核电路还包括存储模块37。存储模块37用于存储待发放脉冲序列和/或至少一个第三脉冲序列。
容易理解,在本公开实施例中,图3所示的积分发放处理模块35为可以对神经网络中的神经元执行树突积分计算过程以及胞体运算过程的电路模块,用于模拟神经网络中的树突部分以及胞体部分。且图3所示的控制模块31、编码模块32、路由发送模块33、路由接收模块34、积分发放处理模块35、地址跳跃控制模块36以及存储模块37均可以通过相应的专用逻辑电路的方式实现。计算核在进行核间数据传输时,当前计算核可以通过当前计算核的控制模块31控制路由发送模块33将路由包发送到片上网络,目的计算核可以通过目的计算核的控制模块31控制路由接收模块34从片上网络接收路由包,从而完成核间数据传输过程。
本实施例的计算核电路包括:编码模块、路由发送模块以及控制模块,其中,控制模块用于控制编码模块对由当前计算核中至少一个神经元的待发放脉冲确定的脉冲序列进行编码处理,以获取编码后的脉冲序列,并根据编码后的脉冲序列确定对应的路由包,从而对路由包进行发送。本实施例的计算核电路在进行数据传输前对脉冲序列进行编码处理,降低了数据传输过程中所需要传输的脉冲数据的数量,从而有效提升神经形态芯片对于脉冲数据的处理效率。
下面通过方法实施例对本公开实施例的基于脉冲神经网络的数据处理方法进行详细说明。
图4是本公开一示例性实施例的基于脉冲神经网络的数据处理方法的流程图。如图4所示,本实施例的方法包括如下步骤:
步骤S401,对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列。
在本实施例中,第二脉冲序列包括当前计算核中至少一个神经元的待发放脉冲,且第二脉冲序列中各待发放脉冲的发放地址连续。其中,各待发放脉冲的发放地址连续表示各待发放脉冲对应的目的计算核相同且对应的神经元的轴突位置连续。在神经形态芯片接收数据输入时,各计算核均可以在脉冲发放时刻输出一个待发放脉冲。对于第二脉冲序列,其中的各待发放脉冲对应于同一脉冲发放时刻。
例如,计算核1中的神经元1-神经元50与计算核2连接,神经元51-神经元100与计算核3连接,则神经元1-神经元50在一个脉冲发放时刻产生的待发放脉冲:脉冲1-脉冲50的发放地址连续,脉冲1-脉冲50对应一个第二脉冲序列;神经元51-神经元100在一个脉冲发放时刻产生的待发放脉冲:脉冲51-脉冲100的发放地址连续,脉冲51-脉冲100对应一个第二脉冲序列。应理解,不同第二脉冲序列中待发放脉冲的数量可以相同,也可以不同。
在一种可能的实现方式中,对至少一个第二脉冲序列进行编码处理,可以是指将当前计算核中待发放脉冲序列中发放地址连续的至少一个待发放脉冲确定为所述第二脉冲序列,并对该第二脉冲序列进行编码处理,得到第二脉冲序列对应的第三脉冲序列。其中,在确定第二脉冲序列时,可以是同时确定当前计算核电路的多个第二脉冲序列,也可以是依次确定当前计算核电路的各第二脉冲序列,本公开对确定第二脉冲序列的方式不做限制。
在一种可能的实现方式中,对至少一个第二脉冲序列进行编码处理,还可以是在依次读取当前计算核中待发放脉冲序列中的各待发放脉冲时,若当前待发放的脉冲的发放地址与前一个待发放的脉冲的发放地址连续,则可以确定为当前第二脉冲序列中的脉冲,可以在读取当前待发放脉冲的同时进行编码处理,得到中间编码处理结果,并在确定当前第二脉冲序列的最后一个脉冲时,得到最终的编码结果,并根据最终的编码结果确定该第二脉冲序列对应的第三脉冲序列。
例如,如前所述,计算核1中的神经元1-神经元50与计算核2连接,脉冲1-脉冲50的发放地址连续。当读取到计算核1中的神经元2的待发放脉冲的发放地址与计算核1中的神经元1的待发放脉冲的发放地址连续时,则可以确定计算核1中的神经元2与计算核1中的神经元1为当前第二脉冲序列的两个脉冲,可以在读取神经元2的待发放脉冲时,根据计算核1中的神经元1和神经元2的待发放脉冲进行编码处理。以此类推,当读取到计算核1中的神经元51的待发放脉冲的发放地址与神经元50的待发放脉冲的发放地址不连续,可以确定脉冲50为当前第二脉冲序列的最后一个脉冲,脉冲1-脉冲50为同一第二脉冲序列,可以将在读取到脉冲50时编码得到的编码结果确定为脉冲1-脉冲50这一第二脉冲序列的编码结果,并确定该第二脉冲序列对应的第三脉冲序列。
应理解,只要是对各待发放脉冲的发放地址连续的第二脉冲序列进行编码处理即可,本公开对确定第二脉冲序列的方式和时间以及编码处理的方式和时间均不做限制。
在一种可能的实现方式中,待发放脉冲可以包括两个值,例如,第一数值和第二数值,其中,第一数值可以用0来表示,第二数值可以用1来表示。由于脉冲神经网络具有发放稀疏性,在各第二脉冲序列中,两个数值的数量差距通常较大。
为便于理解,下文以第一数值(0)的数量高于第二数值(1)的数量为例进行说明。在本步骤中,当前计算核的控制模块可以控制编码模块通过连续0计数压缩编码对至少一个第二脉冲序列进行编码处理,确定第二脉冲序列对应的第三脉冲序列,从而在后续有效降低核间数据传输过程(也即,不同计算核之间进行数据传输的过程)中的数据传输量,并提升数据传输速度。应理解,当第二脉冲序列中,数值1的数量高于数值0的数量时,也可以连续1计数压缩编码。
以下对连续0计数压缩编码的编码过程进行描述:记c为第二脉冲序列中0的连续数量,c的初始值为0。遍历第二脉冲序列,对于第二脉冲序列中的第i个待发放脉冲Di(i∈[1,n],n为第二脉冲序列中待发放脉冲的总数量),若Di=1,则输出第三脉冲序列中的第j个元素Tj=c,且c=0,j=j+1;若Di=0,则c=c+1。也就是说,对于各第二脉冲序列,控制模块可以通过编码模块分别确定各第二脉冲序列中各第二数值前第一数值的连续数量,并根据各第二脉冲序列对应的各连续数量确定对应的第三脉冲序列。例如,可以将各连续数量以二进制表示作为该第二脉冲序列对应的第三脉冲序列。
可选地,还可以对第三脉冲序列中各元素允许的比特位宽进行限制,比特位宽可以用于限制第一数值的连续数量的最大值。以下同样结合第二脉冲序列和第三脉冲序列对连续0计数压缩编码的过程进行描述:记m为第三脉冲序列中各元素允许的比特位宽,且m为大于等于1的预定整数,若第二脉冲序列中0的连续数量c=2m-1,则输出第三脉冲序列中的第j个元素Tj=c,且在输出Tj后,c=0,j=j+1。也就是说,若比特位宽为m,则第一数值的连续数量最大不超过2m-1。同时,由于脉冲神经网络的限制,待发放脉冲实际为0和1,因此控制模块可以控制编码模块以二进制格式对各第二脉冲序列对应的各连续数量进行输出,以确定对应的第三脉冲序列。
例如,第二脉冲序列1为00000000000000000010000000000000001,预先设置的比特位宽m为4,则0的连续数量不超过15。对于第二脉冲序列中的第一个1(也即,第二脉冲序列中左起第19位),前面存在连续的18个0,则对于第一个1,0的连续数量为15和3;对于第二脉冲序列中的第二个1(也即,第二脉冲序列中左起第35位),前面存在连续的15个0,则对于第二个1,0的连续数量为15。因此,控制模块可以控制编码模块根据比特位宽m,以二进制分别输出15,3和15,从而得到第二脉冲序列1对应的第三脉冲序列1为111100111111。
在神经形态芯片的实际工作过程中,各计算核中的各神经元在各脉冲发放时刻均可以产生待发放脉冲。因此在本实施例的一种可选的实现方式中,在本步骤前,控制模块还可以控制编码模块读取当前计算核中各神经元产生的待发放脉冲构成的序列(也即,待发放脉冲序列),并将待发放脉冲序列中发放地址连续的至少一个待发放脉冲确定为第二脉冲序列。
容易理解,若待发放脉冲序列中各待发放脉冲的发放地址连续,则第二脉冲序列也即待发放脉冲序列。
步骤S402,确定至少一个第三脉冲序列对应的第二路由包。
在本步骤中,控制模块可以控制路由发送模块根据各第三脉冲序列以及对应的第二有效地址各第三脉冲序列对应的第二路由包。在本实施例中,第二有效地址用于表征第二脉冲序列中第一参考脉冲的发放地址,第一参考脉冲可以为第二脉冲序列中首个待发放脉冲或者最后一个待发放脉冲。第二脉冲序列中各待发放脉冲的发放地址连续,因此只需要首个待发放脉冲或最后一个待发放脉冲的发放地址,目的计算核中的控制模块就可以确定各待发放脉冲在目的计算核中对应的目的神经元。因此,与根据第三脉冲序列以及第二脉冲序列中各待发放脉冲对应的发放地址确定第二路由包的方式相比,本步骤可以在后续在核间数据传输过程中有效降低第二路由包的数据量,并提升第二路由包的传输速度。
步骤S403,向至少一个目的计算核电路发送第二路由包。
在确定至少一个第二路由包后,控制模块可以控制路由发送模块根据至少一个第二路由包对应的第二有效地址将第二有效地址对应的计算核确定为目的计算核,并向目的计算核发送对应的第二路由包。例如,可以将该第二路由包发送至片上网络,通过片上网络传输至目的计算核。
本实施例通过对由当前计算核中至少一个神经元的待发放脉冲确定的脉冲序列进行编码处理,获取编码后的脉冲序列,并根据编码后的脉冲序列确定对应的路由包,从而对路由包进行发送。本实施例的基于脉冲神经网络的数据处理方法在进行数据传输前对脉冲序列进行编码处理,降低了数据传输过程中所需要传输的脉冲数据的数量,从而有效提升神经形态芯片对于脉冲数据的处理效率。
图5是本公开一示例性实施例的基于脉冲神经网络的数据处理方法的流程图。如图5所示,在本实施例中,本实施例的方法可以包括如下步骤:
步骤S501,读取待发放脉冲序列。
在本实施例中,控制模块可以控制编码模块读取当前计算核在各脉冲发放时刻对应的待发放脉冲序列,并根据各当前待发放脉冲的发放地址和前一待发放脉冲的发放地址对当前的待发放脉冲进行编码处理,从而直接根据待发放脉冲序列确定至少一个第三脉冲序列。
在本步骤中,控制模块可以控制编码模块在各脉冲发放时刻读取当前计算核中神经元产生的待发放脉冲,并根据各待发放脉冲确定待发放脉冲序列。
步骤S502,以顺序迭代方式将各待发放脉冲确定为当前待发放脉冲。
在本步骤中,控制模块可以控制编码模块按待发放脉冲序列中各待发放脉冲的发放地址的顺序,以迭代方式将各待发放脉冲确定为当前待发放脉冲。
步骤S5A,确定第一发放地址与第二发放地址是否连续。
在本步骤中,第一发放地址用于表征当前待发放脉冲的发放地址,第二发放地址用于表征前一待发放脉冲的发放地址。如果是,执行步骤S503;如果否,执行步骤S5B。
步骤S503,根据在前的各待发放脉冲对当前待发放脉冲进行编码处理,以更新编码处理结果。
在本步骤中,当前待发放脉冲的发放地址与前一待发放脉冲的发放地址连续,因此控制模块可以控制编码模块,根据当前待发放脉冲的数值对当前待发放脉冲进行编码处理,从而更新编码处理结果。
例如,若当前待发放脉冲的发放地址与前一待发放脉冲的发放地址连续,且当前待发放脉冲的数值为1,在当前待发放脉冲前,0的连续数量为5,则控制模块可以控制编码模块将编码处理结果更新为5(不考虑其余数值为1的待发放脉冲前0的连续数量);若当前待发放脉冲的数值为0,在当前待发放脉冲前,0的连续数量为5,则控制模块可以控制编码模块将编码处理结果更新为6(同样不考虑其余数值为1的待发放脉冲前0的连续数量)。
容易理解,若当前待发放脉冲为待发放脉冲序列中的第一个待发放脉冲,或者为发放地址与前一待发放脉冲的发放地址不同的待发放脉冲序列,可以将在前的待发放脉冲中0的连续数量看作0。
步骤S5B,确定当前待发放脉冲是否为待发放脉冲序列中最后一个待发放脉冲。
如果是,执行步骤S504;如果否,返回执行步骤S502。
步骤S504,输出编码处理结果,并根据编码处理结果确定第三脉冲序列。
在本步骤中,当前待发放脉冲的发放地址与前一待发放脉冲的发放地址不连续,因此控制模块可以控制编码模块输出编码处理结果,并将编码处理结果确定为第三脉冲序列。可选地,控制模块还可以控制编码模块进行初始化,以重新获取以及更新编码处理结果。
例如,当前待发放脉冲的发放地址与前一待发放脉冲的发放地址不连续,且在前待发放脉冲对应的编码处理结果为15,3和5,则控制模块可以控制编码模块输出编码处理结果15,3和5,并根据15,3和5确定第三脉冲序列,同时控制编码模块进行初始化,从而重新获取以及更新编码处理结果。
再例如,当前计算核在脉冲发放时刻1对应的待发放脉冲序列1为00001000100000010000000000000001,其中第1-16个待发放脉冲的发放地址连续,第17-32个待发放脉冲的发放地址连续(从左起)。控制模块在对待发放脉冲序列1进行编码处理时,可以将各待发放脉冲确定为当前待发放脉冲,并根据在前的各待发放脉冲对当前待发放脉冲进行编码处理,以更新编码处理结果。例如,在当前待发放脉冲为第1个待发放脉冲时,不存在在前的待发放脉冲,控制模块可以控制编码模块,根据当前待发放脉冲确定编码处理结果为1;在当前待发放脉冲为第16个待发放脉冲时,控制模块可以控制编码模块,根据在前的各待发放脉冲以及当前待发放脉冲确定编码处理结果为4,3和6;在当前待发放脉冲为第17个待发放脉冲时,由于第16个待发放脉冲和第17个待发放脉冲的发放地址不连续,控制模块可以控制编码模块输出编码处理结果4,3和6,并根据4,3和6确定当前计算核中第1个神经元(第i个神经元产生第i个待发放脉冲)-第16个神经元在脉冲发放时刻1对应的第三脉冲序列,为010000110110,同时控制编码模块进行初始化,从而根据第17个待发放脉冲确定编码处理结果2,并根据第18-第32个待发放脉冲更新编码处理结果2。
容易理解,待发放脉冲序列中包括至少一个第二脉冲序列,因此上述对于待发放脉冲序列的编码处理过程(也即,步骤S501-步骤S504)也可以看作是对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列的处理过程。
步骤S505,确定至少一个第三脉冲序列对应的第二路由包。
在本实施例中,步骤S505的实现方式与步骤S402的实现方式相似,在此不再赘述。
步骤S506,向至少一个目的计算核电路发送第二路由包。
在本实施例中,步骤S505的实现方式与步骤S402的实现方式相似,在此不再赘述。
在一种可能的实现方式中,所述方法还可以包括:确定当前计算核电路的待发放脉冲序列。举例来说,可以根据当前计算核电路接收到的脉冲信号以及突触权重矩阵,确定当前计算核电路各神经元的待发放脉冲。应理解,可以采取相关知识中公知的方式确定当前计算核电路的待发放脉冲序列,本公开对此不做限制。
在一种可能的实现方式中,所述方法还可以包括:存储所述待发放脉冲序列。举例来说,在各脉冲发放时刻,可以通过存储模块存储当前计算核电路的各神经元的待发放脉冲。
本实施例通过对由当前计算核中各神经元的待发放脉冲确定的待发放脉冲序列进行编码处理,获取至少一个编码后的脉冲序列,并根据编码后的脉冲序列确定对应的路由包,从而对路由包进行发送。本实施例的基于脉冲神经网络的数据处理方法在进行数据传输前对待发放脉冲序列进行编码处理,利用神经元发放的稀疏性,将待发放地址连续的脉冲序列进行压缩表达,降低了数据传输过程中所需要传输的脉冲数据的数量,显著降低通信传输开销,从而有效提升神经形态芯片对于脉冲数据的处理效率。
图6是本公开一示例性实施例的基于脉冲神经网络的数据处理方法的流程图。如图6所示,本实施例的方法可以包括如下步骤:
步骤S601,接收至少一个源计算核电路发送的第一路由包。
在本步骤中,控制模块可以控制路由接收模块接收至少一个源计算核电路发送的第一路由包,第一路由包包括第一脉冲序列。在本实施例中,第一脉冲序列为对应的源计算核对第四脉冲序列编码得到的脉冲序列,且第四脉冲序列中各脉冲的发放地址连续。可选地,源计算核对第四脉冲序列进行编码处理得到第一脉冲序列的过程可以参考上述方法实施例中的任一种,本实施例不再赘述。
步骤S602,根据对应的突触权重矩阵对至少一个第一脉冲序列进行膜电位积分运算,获取对应的膜电位序列。
以图1所示的脉冲神经网络为例进行说明。计算核11为当前计算核,计算核11中的第i个神经元与第二层结构(也即,目的计算核)中第j个神经元(j∈(1,p)且为整数)之间的连接权重也即计算核11对应的突触权重矩阵中第j行第i列的元素。也就是说,突触权重矩阵中的第i列对应当前计算核中的第i个神经元,第j行对应目的计算核中的第j个神经元。
突触权重矩阵是稠密矩阵(也即,非0元素的数量较少),但第四脉冲序列是稀疏矩阵,现有的计算核在进行膜电位积分运算时,无论第四脉冲序列中的数值是否为1均会进行运算,因此在突触权重矩阵的维度较大时,膜电位积分运算的运算量十分庞大。
在本实施例中,第一路由包还包括第一脉冲序列对应的第一有效地址,第一有效地址为第四脉冲序列中第二参考脉冲的发放地址。与第一参考脉冲相似,第二参考脉冲可以为第四脉冲序列中首个待发放脉冲或者最后一个待发放脉冲。因此在本实施例的一种可选的实现方式中,在已知第一有效地址后,控制模块可以控制地址跳跃控制模块根据第一有效地址以及第一脉冲序列确定突触权重矩阵中突触权重有效行的地址,并确定有效行的突触权重,然后控制积分发放处理模块,根据有效行的突触权重进行膜电位积分运算,确定第一脉冲序列对应的膜电位序列。在本实施例中,膜电位序列中的膜电位可以为胞体充电电压,也可以为胞体充电电流,本实施例不做具体限定。
例如,第一脉冲序列1为111100111111,预先设置的比特位宽为4,控制模块可以控制地址跳跃控制模块确定第一脉冲序列1中0的连续数量不超过15,第一脉冲序列1对应的第四脉冲序列1中0的连续数量用二进制表示为1111,0011和1111,也就是说,第四脉冲序列1包括两个数值为1的脉冲,且数值为1的脉冲为第四脉冲序列1中的第19个和第35个。第一脉冲序列1对应的第一有效地址为n2,1,则突触权重矩阵中突触权重有效行的地址为n2,19和n2,35。
图7是本公开一示例性实施例的一种可选的实现方式中根据第一脉冲序列确定突触权重有效行的地址的示意图。如图7所示,71为当前计算核对应的第四脉冲序列,72为当前计算核对应的突触权重矩阵。其中,73、74和75为控制模块控制地址跳跃控制模块,根据第四脉冲序列对应第一脉冲序列确定的数值为1的脉冲;76、77和78分别为控制模块控制地址跳跃控制模块根据第一脉冲序列对应的第一有效地址确定的,脉冲73、脉冲74和脉冲75对应的突触权重有效行的地址。
膜电位积分运算过程可以通过如下公式表示:
I=XW;
其中,I为膜电位序列,X为第四脉冲序列,W为当前计算核对应的突触权重矩阵。
控制模块在控制地址跳跃控制模块确定突触权重有效行的地址以及有效行的突触权重后,无需进行上述膜电位积分运算过程,只需要在压缩域进行膜电位积分运算,例如,可以控制积分发放处理模块对各神经元在突触权重矩阵中对应的列中、有效行的突触权重进行求和,就可以确定至少一个神经元的膜电位,从而根据至少一个神经元的膜电位确定当前计算核中至少一个膜电位序列。有效降低了膜电位积分运算过程所消耗的运算量,且若干神经元可并行计算,并提升了膜电位积分运算过程的运算效率。
例如,突触权重矩阵中有效行的突触权重为(5,3,2,2),(1,2,3,3)以及(3,2,4,9),神经元n1对应第一列,神经元n2对应第二列,神经元n3对应第三列,神经元n4对应第四列。则以神经元n1为例,神经元n1对应的膜电位为5+1+3=9。
步骤S603,根据至少一个膜电位序列确定当前计算核电路的待发放脉冲序列。
在本步骤中,控制模块可以控制积分发放处理模块通过各种现有的方式进行胞体运算过程,例如,根据至少一个神经元的膜电位确定待发放脉冲,从而根据各神经元的待发放脉冲确定待发放脉冲序列。
步骤S604,对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列。
在本实例中,步骤S604的实现方式与步骤S401的实现方式相似,在此不再赘述。
步骤S605,确定至少一个第三脉冲序列对应的第二路由包。
在本实例中,步骤S605的实现方式与步骤S402的实现方式相似,在此不再赘述。
步骤S606,向至少一个目的计算核电路发送第二路由包。
在本实例中,步骤S606的实现方式与步骤S403的实现方式相似,在此不再赘述。
本实施例在接收至少一个源计算核电路发送的脉冲序列和有效地址后,根据当前计算核对应的突出权重矩阵对至少一个脉冲序列进行膜电位积分运算,获取当前计算核电路对应的至少一个膜电位序列,并根据至少一个膜电位序列确定当前计算核电路对应的待发放脉冲序列,进而对由待发放脉冲序列中至少一个待发放脉冲确定的脉冲序列进行编码处理,获取编码后的脉冲序列,并根据编码后的脉冲序列确定对应的路由包,从而对路由包进行发送。本实施例的基于脉冲神经网络的数据处理方法在进行数据传输前对当前计算核的脉冲序列进行编码处理,利用神经元发放的稀疏性,将待发放地址连续的脉冲序列进行压缩表达,降低了数据传输过程中所需要传输的脉冲数据的数量,显著降低通信传输开销,从而有效提升神经形态芯片对于脉冲数据的处理效率。同时,在接收源计算核电路发送的已编码的脉冲数据时,利用源计算核电路发送的脉冲数据的稀疏性特点,无需对接收到的已编码的脉冲数据进行解码,可以通过确定突触权重有效行,来跳过冗余的积分运算,有效降低运算复杂度。且在进行积分运算时,当前计算核电路的若干神经元可以并行计算,提高运行效率。
图8-图9是本公开一示例性实施例的基于脉冲神经网络的数据处理方法的流程图。如图8-图9所示,本实施例的方法包括如下步骤:
步骤S801,接收至少一个源计算核电路发送的第一路由包。
在本实例中,步骤S801的实现方式与步骤S601的实现方式相似,在此不再赘述。
步骤S802,根据对应的突触权重矩阵对至少一个第一脉冲序列进行膜电位积分运算,获取对应的膜电位序列。
在本实例中,步骤S802的实现方式与步骤S602的实现方式相似,在此不再赘述。
步骤S803,根据至少一个膜电位序列确定当前计算核电路的待发放脉冲序列。
在本实例中,步骤S803的实现方式与步骤S603的实现方式相似,在此不再赘述。
步骤S804,读取待发放脉冲序列。
在本实例中,步骤S804的实现方式与步骤S501的实现方式相似,在此不再赘述。
步骤S805,以顺序迭代方式将各待发放脉冲确定为当前待发放脉冲。
在本实例中,步骤S805的实现方式与步骤S502的实现方式相似,在此不再赘述。
步骤S8A,确定第一发放地址与第二发放地址是否连续。
在本步骤中,第一发放地址用于表征当前待发放脉冲的发放地址,第二发放地址用于表征前一待发放脉冲的发放地址。如果是,执行步骤S806;如果否,执行步骤S8B。
步骤S806,根据在前的各待发放脉冲对当前待发放脉冲进行编码处理,以更新编码处理结果。
在本实例中,步骤S806的实现方式与步骤S503的实现方式相似,在此不再赘述。
步骤S8B,确定当前待发放脉冲是否为待发放脉冲序列中最后一个待发放脉冲。
如果是,执行步骤S807;如果否,返回执行步骤S805。
步骤S807,输出编码处理结果,并根据编码处理结果确定第三脉冲序列。
在本实例中,步骤S807的实现方式与步骤S504的实现方式相似,在此不再赘述。
步骤S808,确定至少一个第三脉冲序列对应的第二路由包。
在本实例中,步骤S808的实现方式与步骤S402的实现方式相似,在此不再赘述。
步骤S809,向至少一个目的计算核电路发送第二路由包。
在本实例中,步骤S809的实现方式与步骤S403的实现方式相似,在此不再赘述。
图10是本公开一示例性实施例的核间脉冲数据传输的示意图。如图10所示,10A为源计算核,10B为当前计算核,10C为目的计算核。计算核10A向计算核10B发送路由包1001,路由包1001既为计算核10A对应的第二路由包,也为计算核10B对应的第一路由包。路由包1001包括计算核10A对应的第三脉冲序列,也即计算核10B对应的第一脉冲序列,以及计算核10A对应的第三脉冲序列的第二有效地址,也即计算核10B对应的第一脉冲序列的第一有效地址。计算核B的控制模块控制计算核B的路由接收模块接收路由包1001,并控制计算核B的积分发放处理模块以及计算核B的地址跳跃控制模块根据计算核10B对应的突触权重,对至少一个计算核B对应的第一脉冲序列在压缩域进行膜电位积分运算,例如,控制计算核B的地址跳跃控制模块根据计算核B对应的第一脉冲序列以及第一有效地址,确定计算核B对应的突触权重矩阵中突触权重有效行的地址,并确定有效行的突触权重,从而控制计算核B的积分发放处理模块根据有效行的突触权重进行膜电位积分运算,确定第一脉冲序列进行的膜电位序列。然后,计算核B的控制模块控制计算核B的积分发放处理模块进行胞体运算,例如,计算核B的控制模块控制计算核B的积分发放处理模块根据至少一个膜电位序列定计算核B的待发放脉冲序列:脉冲序列1002。进而,计算核B的控制模块控制计算核B的编码模块通过连续0压缩计数编码对脉冲序列1002进行编码处理,得到计算核B的至少一个第三脉冲序列:脉冲序列1003,并确定各脉冲序列1003对应的第二有效地址。从而,计算核B的控制模块控制计算核B的路由发送模块根据各脉冲序列1003和对应的第二有效地址确定路由包1002,并控制计算核B的路由发送模块向计算核10C发送路由包1002。路由包1002既为计算核10B的第二路由包,也为计算核10C的第一路由包。
图11是本公开一示例性实施例的神经形态芯片的传输带宽及积分运算量的列表。以Byte为单位对脉冲进行存储,编码处理前脉冲序列(也即,待发放脉冲序列)的序列长度N为1024和256,占用N/8*Bytes的数据带宽,比特位宽m=8。如图11所示,列表中第一列用于表征待发放脉冲序列中数值为1的待发放脉冲所占的比例(也即,发放稠密度),第二列用于表征编码处理前脉冲序列占用的传输带宽,第三列用于表征编码处理后脉冲序列(也即,第三脉冲序列)占用的传输带宽,第四列用于表征计算核在进行膜电位积分运算时所节省的运算量。如图11可知,本实施例的神经形态芯片对于不同发放稠密度的脉冲序列均可以有效降低数据传输量以及膜电位积分运算过程的运算量,从而有效提升神经形态芯片对于脉冲数据的处理效率。
本实施例在接收至少一个源计算核电路发送的脉冲序列和有效地址后,根据当前计算核对应的突出权重矩阵对至少一个脉冲序列进行膜电位积分运算,获取当前计算核电路对应的至少一个膜电位序列,并根据至少一个膜电位序列确定当前计算核电路对应的待发放脉冲序列,进而对由待发放脉冲序列中至少一个待发放脉冲确定的脉冲序列进行编码处理,获取编码后的脉冲序列,并根据编码后的脉冲序列确定对应的路由包,从而对路由包进行发送。本实施例的基于脉冲神经网络的数据处理方法在进行数据传输前对当前计算核的脉冲序列进行编码处理,降低了数据传输过程中所需要传输的脉冲数据的数量,从而有效提升神经形态芯片对于脉冲数据的处理效率。
可选地,在上述方法实施例中,控制模块均可以控制存储模块存储待发放脉冲序列和/或至少一个第三脉冲序列,以使得编码模块可以从存储模块中读取当前计算核的待发放序列,和/或使得路由发送模块可以从存储模块中读取第三脉冲序列,并根据第三脉冲序列以及第二有效地址确定对应的第二路由包。应理解,存储模块可以包括多种形式,用于存储待发放脉冲序列、至少一个第三脉冲序列的存储器可以相同,也可以不同,本公开对此不做限制。
图12是本发明第三实施例的电子设备的示意图。图12所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器1201和存储器1202。处理器1201和存储器1202通过总线1203连接。存储器1202适于存储处理器1201可执行的指令或程序。处理器1201可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器1201通过执行存储器1202所存储的命令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其他装置的控制。总线1203将上述多个组件连接在一起,同时将上述组件连接到显示控制器1204和显示装置以及输入/输出(I/O)装置1205。输入/输出(I/O)装置1205可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出(I/O)装置1205通过输入/输出(I/O)控制器1206与系统相连。
其中,存储器1202可以存储软件组件,例如操作系统、通信模块、交互模块以及应用程序。以上所述的每个模块和应用程序都对应于完成一个或多个功能和在发明实施例中描述的方法的一组可执行程序指令。
图13是本发明第四实施例的电子设备的示意图。图13所示的电子设备为非通用数据处理装置,其至少包括板卡1301和存储器1302。板卡1301和存储器1302通过总线1303连接。存储器1302适于存储板卡1301可执行的指令或程序。板卡1301包括至少一个本公开实施例中的神经形态芯片。进一步地,神经形态芯片包括至少一个CPU(Central ProcessingUnit,中央处理器)和至少一个APU(Accelerated Processing Unit,加速处理器)。进一步地,APU包括至少一个本公开实施例的计算核电路。由此,板卡1301通过执行存储器1302所存储的命令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其他装置的控制。总线1303将上述多个组件连接在一起,同时将上述组件连接到显示控制器1304和显示装置以及输入/输出(I/O)装置1305。输入/输出(I/O)装置1305可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出(I/O)装置1305通过输入/输出(I/O)控制器1306与系统相连。
其中,存储器1302可以存储软件组件,例如操作系统、通信模块、交互模块以及应用程序。以上所述的每个模块和应用程序都对应于完成一个或多个功能和在发明实施例中描述的方法的一组可执行程序指令。
上述根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应理解,流程图和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。
同时,如本领域技术人员将意识到的,本公开实施例的各个方面可以被实现为系统、方法或计算机程序产品。因此,本公开实施例的各个方面可以采取如下形式:完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实施方式。此外,本公开的方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储装置、磁存储装置或前述的任意适当的组合。在本公开实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。
计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。
用于执行针对本公开各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如Java、Smalltalk、C++、PHP、Python等;以及常规过程编程语言如“C”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(LAN)或广域网(WAN)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。
本发明实施例公开了A1、一种计算核电路,所述电路包括编码模块、路由发送模块以及控制模块;
所述控制模块用于:
控制所述编码模块对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列,所述第二脉冲序列包括当前计算核电路中至少一个神经元的待发放脉冲,所述第二脉冲序列中各待发放脉冲的发放地址连续;
控制所述路由发送模块确定至少一个所述第三脉冲序列对应的第二路由包;
控制所述路由发送模块向至少一个目的计算核电路发送所述第二路由包。
A2、如A1所述的电路中,所述控制模块还用于:
控制所述编码模块读取当前计算核电路的待发放脉冲序列,将所述待发放脉冲序列中发放地址连续的至少一个所述待发放脉冲确定为所述第二脉冲序列。
A3、如A1所述的电路中,所述第二脉冲序列中脉冲的数值包括第一数值和第二数值;
所述控制模块用于:
控制所述编码模块确定所述第二脉冲序列中各第二数值前第一数值的连续数量,并根据各所述连续数量确定所述第二脉冲序列对应的第三脉冲序列。
A4、如A1所述的电路中,所述控制模块用于:
控制所述路由发送模块根据第三脉冲序列以及第二有效地址确定所述第三脉冲序列对应的第二路由包,其中,所述第二有效地址为所述第二脉冲序列中第一参考脉冲的发放地址。
A5、如A1所述的电路中,所述计算核电路还包括路由接收模块和积分发放处理模块;
所述控制模块还用于:
控制所述路由接收模块接收至少一个源计算核电路发送的第一路由包,所述第一路由包包括第一脉冲序列,所述第一脉冲序列为由对应的源计算核电路对第四脉冲序列编码处理得到的脉冲序列,所述第四脉冲序列中各脉冲的发放地址连续;
控制所述积分发放处理模块根据对应的突触权重矩阵对至少一个所述第一脉冲序列进行膜电位积分运算,获取对应的膜电位序列,所述膜电位序列为当前计算核电路中至少一个神经元的膜电位构成的序列;
控制所述积分发放处理模块根据至少一个所述膜电位序列确定当前计算核电路的待发放脉冲序列。
A6、如A5所述的电路中,所述计算核电路还包括地址跳跃控制模块,所述第一路由包还包括所述第一脉冲序列对应的第一有效地址,其中,所述第一有效地址为所述第四脉冲序列中第二参考脉冲的发放地址;
所述控制模块用于:
控制所述地址跳跃控制模块根据所述第一有效地址以及所述第一脉冲序列,确定所述突触权重矩阵中突触权重有效行的地址,并确定所述有效行的突触权重;
控制所述积分发放处理模块根据所述有效行的突触权重进行膜电位积分运算,确定所述第一脉冲序列对应的膜电位序列。
A7、如A1所述的电路中,所述计算核电路还包括存储模块;
所述存储模块用于:
存储待发放脉冲序列和/或至少一个所述第三脉冲序列。
本发明实施例还公开了B1、一种基于脉冲神经网络的数据处理方法,所述方法包括:
对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列,所述第二脉冲序列包括当前计算核电路中至少一个神经元的待发放脉冲,所述第二脉冲序列中各待发放脉冲的发放地址连续;
确定至少一个所述第三脉冲序列对应的第二路由包;
向至少一个目的计算核电路发送所述第二路由包。
B2、如B1所述的方法中,所述方法还包括:
读取当前计算核电路的待发放脉冲序列,将所述待发放脉冲序列中发放地址连续的至少一个所述待发放脉冲确定为所述第二脉冲序列。
B3、如B1所述的方法中,所述第二脉冲序列中脉冲的数值包括第一数值和第二数值;
所述对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列包括:
确定所述第二脉冲序列中各第二数值前第一数值的连续数量,并根据各所述连续数量确定所述第二脉冲序列对应的第三脉冲序列。
B4、如B1所述的方法中,所述确定至少一个所述第三脉冲序列对应的第二路由包包括:
根据第三脉冲序列以及第二有效地址确定所述第三脉冲序列对应的第二路由包,其中,所述第二有效地址为所述第二脉冲序列中第一参考脉冲的发放地址。
B5、如B1所述的方法中,所述方法还包括:
接收至少一个源计算核电路发送的第一路由包,所述第一路由包包括第一脉冲序列,所述第一脉冲序列为由对应的源计算核电路对第四脉冲序列编码处理得到的脉冲序列,所述第四脉冲序列中各脉冲的发放地址连续;
根据对应的突触权重矩阵对至少一个所述第一脉冲序列进行膜电位积分运算,获取对应的膜电位序列,所述膜电位序列为当前计算核电路中至少一个神经元的膜电位构成的序列;
根据至少一个所述膜电位序列确定当前计算核电路的待发放脉冲序列。
B6、如B5所述的电路中,所述第一路由包还包括所述第一脉冲序列对应的第一有效地址,其中,所述第一有效地址为所述第四脉冲序列中第二参考脉冲的发放地址;
所述根据对应的突触权重矩阵对至少一个所述第一脉冲序列进行膜电位积分运算,获取对应的膜电位序列包括:
根据所述第一有效地址以及所述第一脉冲序列,确定所述突触权重矩阵中突触权重有效行的地址,并确定所述有效行的突触权重;
根据所述有效行的突触权重进行膜电位积分运算,确定所述第一脉冲序列对应的膜电位序列。
B7、如B1所述的电路中,所述方法还包括:
存储待发放脉冲序列和/或至少一个所述第三脉冲序列。
本发明实施例还公开了C1、一种加速处理单元,其中,所述加速处理单元包括多个如A1-A7中任一项所述的计算核电路。
本发明实施例还公开了D1、一种芯片,其中,所述芯片包括至少一个如A1-A7中任一项所述的计算核电路,以及用于对所述至少一个计算核电路建立通信连接的片上网络。
本发明实施例还公开了E1、一种板卡,其中,所述板卡包括至少一个如D1所述的芯片。
本发明实施例还公开了F1、一种电子设备,其中,所述电子设备包括至少一个如D1所述的芯片。
本发明实施例还公开了G1、一种电子设备,其中,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述处理器存储的指令,以执行B1-B7中任一项所述的方法。
本发明实施例还公开了H1、一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如B1-B7中任一项所述的方法。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种计算核电路,其特征在于,所述电路包括编码模块、路由发送模块以及控制模块;
所述控制模块用于:
控制所述编码模块对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列,所述第二脉冲序列包括当前计算核电路中至少一个神经元的待发放脉冲,所述第二脉冲序列中各待发放脉冲的发放地址连续;
控制所述路由发送模块确定至少一个所述第三脉冲序列对应的第二路由包;
控制所述路由发送模块向至少一个目的计算核电路发送所述第二路由包。
2.根据权利要求1所述的电路,其特征在于,所述控制模块还用于:
控制所述编码模块读取当前计算核电路的待发放脉冲序列,将所述待发放脉冲序列中发放地址连续的至少一个所述待发放脉冲确定为所述第二脉冲序列。
3.根据权利要求1所述的电路,其特征在于,所述第二脉冲序列中脉冲的数值包括第一数值和第二数值;
所述控制模块用于:
控制所述编码模块确定所述第二脉冲序列中各第二数值前第一数值的连续数量,并根据各所述连续数量确定所述第二脉冲序列对应的第三脉冲序列。
4.一种基于脉冲神经网络的数据处理方法,其特征在于,所述方法包括:
对至少一个第二脉冲序列进行编码处理,获取各第二脉冲序列对应的第三脉冲序列,所述第二脉冲序列包括当前计算核电路中至少一个神经元的待发放脉冲,所述第二脉冲序列中各待发放脉冲的发放地址连续;
确定至少一个所述第三脉冲序列对应的第二路由包;
向至少一个目的计算核电路发送所述第二路由包。
5.一种加速处理单元,其特征在于,所述加速处理单元包括多个如权利要求1-3中任一项所述的计算核电路。
6.一种芯片,其特征在于,所述芯片包括至少一个如权利要求1-3中任一项所述的计算核电路,以及用于对所述至少一个计算核电路建立通信连接的片上网络。
7.一种板卡,其特征在于,所述板卡包括至少一个如权利要求6所述的芯片。
8.一种电子设备,其特征在于,所述电子设备包括至少一个如权利要求6所述的芯片。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述处理器存储的指令,以执行权利要求4所述的方法。
10.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求4所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010324179.1A CN113537449B (zh) | 2020-04-22 | 2020-04-22 | 基于脉冲神经网络的数据处理方法、计算核电路和芯片 |
US17/800,176 US11900243B2 (en) | 2020-04-22 | 2021-04-22 | Spiking neural network-based data processing method, computing core circuit, and chip |
PCT/CN2021/089014 WO2021213471A1 (zh) | 2020-04-22 | 2021-04-22 | 基于脉冲神经网络的数据处理方法、计算核电路和芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010324179.1A CN113537449B (zh) | 2020-04-22 | 2020-04-22 | 基于脉冲神经网络的数据处理方法、计算核电路和芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113537449A true CN113537449A (zh) | 2021-10-22 |
CN113537449B CN113537449B (zh) | 2024-02-02 |
Family
ID=78094146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010324179.1A Active CN113537449B (zh) | 2020-04-22 | 2020-04-22 | 基于脉冲神经网络的数据处理方法、计算核电路和芯片 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11900243B2 (zh) |
CN (1) | CN113537449B (zh) |
WO (1) | WO2021213471A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114819122A (zh) * | 2022-03-28 | 2022-07-29 | 中国科学院自动化研究所 | 基于脉冲神经网络的数据处理方法及装置 |
CN116366519A (zh) * | 2021-12-28 | 2023-06-30 | 北京灵汐科技有限公司 | 路由传输方法、路由控制方法、事件处理方法及装置 |
WO2023134561A1 (zh) * | 2022-01-11 | 2023-07-20 | 北京灵汐科技有限公司 | 数据处理方法及装置、电子设备、计算机可读介质 |
CN117634564A (zh) * | 2024-01-26 | 2024-03-01 | 之江实验室 | 一种基于可编程神经拟态核的脉冲延时测量方法及系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114492770B (zh) * | 2022-01-28 | 2024-10-15 | 浙江大学 | 一种面向循环脉冲神经网络的类脑计算芯片映射方法 |
CN116861967A (zh) * | 2022-03-24 | 2023-10-10 | 中国科学院深圳先进技术研究院 | 一种基于脉冲神经网络的数据增强方法及装置 |
CN114819121B (zh) * | 2022-03-28 | 2022-09-27 | 中国科学院自动化研究所 | 基于脉冲神经网络的信号处理装置及信号处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100081958A1 (en) * | 2006-10-02 | 2010-04-01 | She Christy L | Pulse-based feature extraction for neural recordings |
CN109255430A (zh) * | 2018-07-12 | 2019-01-22 | 电子科技大学 | 一种神经元编码电路 |
CN109800872A (zh) * | 2019-01-28 | 2019-05-24 | 电子科技大学 | 一种基于分段复用和参数量化共享的神经形态处理器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10317930B2 (en) * | 2015-09-30 | 2019-06-11 | International Business Machines Corporation | Optimizing core utilization in neurosynaptic systems |
CN108830379B (zh) | 2018-05-23 | 2021-12-17 | 电子科技大学 | 一种基于参数量化共享的神经形态处理器 |
US11823038B2 (en) | 2018-06-22 | 2023-11-21 | International Business Machines Corporation | Managing datasets of a cognitive storage system with a spiking neural network |
CN117094374A (zh) * | 2019-04-09 | 2023-11-21 | 成都时识科技有限公司 | 电子电路及内存映射器 |
-
2020
- 2020-04-22 CN CN202010324179.1A patent/CN113537449B/zh active Active
-
2021
- 2021-04-22 US US17/800,176 patent/US11900243B2/en active Active
- 2021-04-22 WO PCT/CN2021/089014 patent/WO2021213471A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100081958A1 (en) * | 2006-10-02 | 2010-04-01 | She Christy L | Pulse-based feature extraction for neural recordings |
CN109255430A (zh) * | 2018-07-12 | 2019-01-22 | 电子科技大学 | 一种神经元编码电路 |
CN109800872A (zh) * | 2019-01-28 | 2019-05-24 | 电子科技大学 | 一种基于分段复用和参数量化共享的神经形态处理器 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116366519A (zh) * | 2021-12-28 | 2023-06-30 | 北京灵汐科技有限公司 | 路由传输方法、路由控制方法、事件处理方法及装置 |
WO2023134561A1 (zh) * | 2022-01-11 | 2023-07-20 | 北京灵汐科技有限公司 | 数据处理方法及装置、电子设备、计算机可读介质 |
CN114819122A (zh) * | 2022-03-28 | 2022-07-29 | 中国科学院自动化研究所 | 基于脉冲神经网络的数据处理方法及装置 |
CN117634564A (zh) * | 2024-01-26 | 2024-03-01 | 之江实验室 | 一种基于可编程神经拟态核的脉冲延时测量方法及系统 |
CN117634564B (zh) * | 2024-01-26 | 2024-05-24 | 之江实验室 | 一种基于可编程神经拟态核的脉冲延时测量方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2021213471A1 (zh) | 2021-10-28 |
US20230099117A1 (en) | 2023-03-30 |
US11900243B2 (en) | 2024-02-13 |
CN113537449B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113537449B (zh) | 基于脉冲神经网络的数据处理方法、计算核电路和芯片 | |
Guo et al. | Neural coding in spiking neural networks: A comparative study for robust neuromorphic systems | |
Rhodes et al. | Real-time cortical simulation on neuromorphic hardware | |
Stromatias et al. | Scalable energy-efficient, low-latency implementations of trained spiking deep belief networks on spinnaker | |
US9489622B2 (en) | Event-driven universal neural network circuit | |
CN104685516B (zh) | 用于在尖峰神经元网络中实现基于事件的更新的装置和方法 | |
Walter et al. | Neuromorphic implementations of neurobiological learning algorithms for spiking neural networks | |
US9373073B2 (en) | Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a universal substrate of adaptation | |
US20160224886A1 (en) | Neuromorphic event-driven neural computing architecture in a scalable neural network | |
US10311357B2 (en) | Thermodynamic-RAM technology stack | |
US20210209450A1 (en) | Compressed weight distribution in networks of neural processors | |
US11017288B2 (en) | Spike timing dependent plasticity in neuromorphic hardware | |
Wu et al. | A multicast routing scheme for a universal spiking neural network architecture | |
Luo et al. | An FPGA-based hardware emulator for neuromorphic chip with RRAM | |
CN111783973B (zh) | 一种面向液体状态机计算的神经形态处理器及设备 | |
CN112598119B (zh) | 一种面向液体状态机的神经形态处理器片上存储压缩方法 | |
CN109492761A (zh) | 实现神经网络的fpga加速装置、方法和系统 | |
CN104854602B (zh) | 一种神经网络单元、以及相关系统和方法 | |
Kim et al. | Sharing leaky-integrate-and-fire neurons for memory-efficient spiking neural networks | |
US11704562B1 (en) | Architecture for virtual instructions | |
Putic et al. | Hierarchical temporal memory on the automata processor | |
JP7265965B2 (ja) | 機械学習装置および機械学習方法 | |
US20240281253A1 (en) | Compressing instructions for machine-learning accelerators | |
Yerram et al. | HiRE: High Recall Approximate Top-$ k $ Estimation for Efficient LLM Inference | |
CN116997910A (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 |