CN114041140A - 事件驱动脉冲卷积神经网络 - Google Patents

事件驱动脉冲卷积神经网络 Download PDF

Info

Publication number
CN114041140A
CN114041140A CN202080028125.9A CN202080028125A CN114041140A CN 114041140 A CN114041140 A CN 114041140A CN 202080028125 A CN202080028125 A CN 202080028125A CN 114041140 A CN114041140 A CN 114041140A
Authority
CN
China
Prior art keywords
neuron
kernel
coordinates
module
event
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.)
Pending
Application number
CN202080028125.9A
Other languages
English (en)
Inventor
奥勒·树里·里克特
乔宁
刘茜
萨迪克·尤艾尔阿明·西克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Shizhi Technology Co ltd
Original Assignee
Chengdu Shizhi Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Shizhi Technology Co ltd filed Critical Chengdu Shizhi Technology Co ltd
Priority to CN202311221064.XA priority Critical patent/CN117094374A/zh
Priority to CN202311221063.5A priority patent/CN117151181A/zh
Publication of CN114041140A publication Critical patent/CN114041140A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

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)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Multimedia (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)
  • Image Analysis (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种事件驱动脉冲卷积神经网络,其包括:内核模块,被配置为以事件驱动的方式存储和处理至少一个卷积核的内核值;神经元模块,被配置为以事件驱动的方式存储并更新所述脉冲卷积神经网络中神经元的神经元状态,并输出由更新的神经元产生的输出脉冲事件;内存映射器,被配置为通过与至少一个卷积核的卷积来确定来自源层的输入脉冲事件所投射的神经元,并且其中所确定神经元的神经元状态将用至少一个卷积核的适用内核值更新,其中,内存映射器被配置为以事件驱动的方式处理输入的脉冲事件。本发明公开的技术方案能以高效、快速的方式执行脉冲卷积神经网络sCNN,且在神经拟态硬件中消耗的能量极低。

Description

事件驱动脉冲卷积神经网络
技术领域
本发明涉及一种事件驱动脉冲卷积神经网络,并具体涉及事件驱动的脉冲卷积神经网络、用于事件驱动的卷积神经网络的内存映射器、以及电子电路。
背景技术
用于有效执行CNN任务的卷积神经网络(CNNs)和相应的芯片体系结构在本领域中是已知的。
一种特定类型的CNN为脉冲卷积神经网络(sCNN,spiking Convolutional NeuralNetwork),它们模拟生物神经元的功能,即在达到神经元一定膜电位时,产生电脉冲形式的不连续的信号。相比之下,传统的CNN在任何输入上提供连续输出,因此具有比sCNN更低的能源效率。
继而,尽管在数学上sCNN可以被很好地描述,但尚不知道在专用硬件中如何实现。在通用处理器上实现的sCNN失去了数据处理特定模式的优势,因此速度相对较慢或具有特别高的内存需求。
然而,到目前为止,还没有专门设计用于操作sCNN的专用电子电路。
通用的(不一定是卷积的)神经网络是基于IBM的“True North”芯片架构(US2014/0032465 A1),基于所谓的交叉架构,该架构提供了可以将每个神经元几乎以任何方式连接到其它神经元的一种神经网络网络。然而,这是以极大的存储需求为代价的,因为神经元之间的每个连接都具有相关的权重。因此,由于每个神经元都与所有其它神经元互连,包含所有权重的权重矩阵的存储需求大约与神经元的平方数成正比,速度难以很快。
此外,除了“True North”芯片架构之外,已知的CNN处理器以基于帧的方式运行,这与处理sCNN时有利的信号处理模式(基于帧和事件)不同。到目前为止,还没有专门为高效快速执行sCNN设计的电子电路架构。
发明内容
本发明的目的是提供一种执行脉冲卷积网络的***和方法,该***和方法能够有效节省能耗和存储资源。
在下文中,如果没有另外说明或建议,则术语“脉冲卷积神经网络”和类似术语是指被配置和布置用于操作脉冲卷积神经网络的至少一种电子设备。
基于事件驱动的脉冲卷积神经网络,包括多个层,其中每个层包括如下特征:
内核模块(kernel module或convolution kernel,在本文中也称为:内核,卷积核或卷积内核),被配置为以事件驱动的方式存储和处理至少一个卷积内核的内核值;
神经元模块(neuron module),被配置为以事件驱动方式存储和更新网络中神经元的神经元状态,并输出由被处理,例如被更新的神经元,产生的离去脉冲事件;
内存映射器(memory mapper),被配置为通过与至少一个卷积核的卷积来确定来自源层的输入脉冲事件投射到的神经元,并且其中所述确定的神经元的神经元状态将用至少一个卷积核的适用核值更新,其中内存映射器被配置为以事件驱动的方式处理输入的脉冲事件。
事件驱动的sCNN,尤其是包括诸如内存映射器,神经元模块和内核模块之类的组件的电子电路和/或至少一个计算机芯片,其每个部件或模块在电子电路或至少一个计算机芯片中具有硬连线的对应关系。
换言之,虽然sCNN的某些组件是可编程的,但不仅在计算机程序或在随后在例如通用多用途芯片上执行的软件中反映或实现这些组件,即sCNN的组件不是虚拟的并且不能在通用计算机芯片中使用,它们是sCNN电子电路的物理实体。术语“层”特别是指表示sCNN中一层的至少一个电子电路,尤其是CNN通用术语中的层。
根据本发明的事件驱动的sCNN包括有限和预定数量的层。
与传统的CNN相比,事件驱动的sCNN的组件被配置为以事件驱动的方式处理信息。
驱动sCNN的事件是由sCNN的一层接收到的脉冲事件给出。
脉冲事件是包含关于事件的结构化信息的数字数据。
因此,与其它CNN相比,事件驱动的sCNN不是基于帧或时钟运行,它适用于符合例如由事件生成动态视觉相机和其它事件生成设备提供的数据流。
内核模块存储至少一个卷积核(convolution kernel)的内核值,在本说明书中有时仅称为“内核”,该内核值适用于所有输入的脉冲事件。
这使得内核模块使用相对较小的关联的内核存储器(associated kernelmemory),以存储至少一个卷积核的内核值。
与一般神经网络相比,sCNN中神经元连接的特点是一组较小的权重,因此内核降低了sCNN的内存需求。
事件驱动的sCNN通常在内核模块中存储多个卷积核。
神经元模块基本上存储该层的所有神经元,神经元具体与该层输出特征图相关。
每个神经元具体包含在输出特征图中,其中,神经元在输出特征图中的位置具体由神经元坐标给出。
特别地,输出特征图是值的二维阵列,其中,这些值对应于神经元的神经元状态。
术语“神经元”是指sCNN的实体,其特征在于包括可调节的神经元状态,并且其中所述神经元状态具有表征神经元何时以及如何输出脉冲事件的功能。
此外,神经元模块以事件驱动的方式(event-driven fashion)操作。
特别是对于每个输入脉冲事件,神经元模块的至少某些神经元将使用特定的内核值进行更新(即处理),并根据其神经元状态(在本领域中有时称为膜电位或膜电压,membrane potential)输出脉冲事件。
更新过程具体包括存储在相应神经元地址处的神经元状态与适用内核值的加法或减法,并且具体涉及偏置值(在本文中也称作偏移值,bias value)的计算。
需要说明的是,神经元模块被配置为存储和处理网络中神经元的神经元状态,根据更新后的神经元状态,神经元模块可以输出由更新的神经元产生的一个或多个脉冲事件。
一般而言,并非每个更新的神经元都会输出脉冲事件。
根据本发明的另一实施例,内核模块包括内核接口,内核接口连接到相关联的内核存储器,其中,相关联的内核存储器被配置为将至少一个卷积核的内核值存储在内核地址中,尤其是多个卷积核,其中内核模块电连接到神经元模块。
关联的内核存储器包括或者尤其是物理的存储器,例如布置在每一层上的存储器。这样做的优点是,每一层可以被相同地制造并作为自主单元操作。
替代地或附加地,内核存储器包括或者是被分配连接到该层的存储器,但该存储器不是该层所必需的。内核存储器可以包括在全局的,尤其是外部内核存储器中,该全局内核存储器连接到该层的内核模块。
根据一个实施例,sCNN的所有层都连接到全局内核存储器,其中全局内核存储器包括与每一层相关联的内核存储器。
内核地址特别是指一个内核存储器地址,其中存储内核值。根据本发明的另一实施例,神经元模块包括神经元存储器,其中神经元存储器被配置为将神经元的神经元状态存储在神经元地址中。
根据另一实施例,神经元存储器(neuron memory)包括可以并行方式访问的多个神经元存储器单元,这种神经元存储单元也被称为关联神经元存储器或关联的神经元存储器(associated neuron memory)。
神经元存储器,特别是每个关联神经元存储器,包括或者尤其是物理上包括(例如布置在)每个层上的存储器,或者是分配并连接到该层但不是该层所必须的存储器。附加地或可替代地,关联神经元存储器可以包括在连接到该层的神经元模块的全局的,特别是外部神经元存储器中。
在一个实施例中,sCNN的所有层都连接到全局神经元存储器,其中全局神经元存储器包括与每一层相关联的神经元存储器。
此外,全局内核和全局神经元存储器可以由单个存储器组件组成。
神经元地址特别是指存储神经元状态的神经元存储器地址。
根据本发明的另一实施例,内存映射器电连接到内核模块,具体是内核接口,其中内存映射器进行如下配置和布置:
a)通过电子连接从sCNN的源层(source layer)接收输入的,特别地,单脉冲事件;输入的脉冲事件包括,特别地,源层中关于单个神经元的坐标;响应于接收的脉冲事件,
b)确定神经元坐标和相应的神经元地址;特别地,是在接收的输入脉冲事件与至少一个卷积核完成卷积后所投射的神经元(neurons)所关联的神经元存储器中。
c)通过相应的内核地址确定内核坐标(coordinates),所述内核地址(addresses)是适用于所确定的神经元地址对应的神经元状态(states)的内核值(values)的地址;其中所确定的神经元地址对应的神经元状态,是通过适用内核值(values)而更新,特别地,是从至少一个卷积核或多个卷积核。
d)提供所确定的内核地址,所述内核地址对应适用内核值,特别地,以及所确定的神经元地址至内核模块,特别是内核接口。
内存映射器,尤其是一种电子电路或电子电路***。
内存映射器进一步计算输入脉冲事件投射至的位置。该计算基于hard-wired公式,该公式使内存映射器能够确定要更新的神经元地址和具有适用内核值的内核地址。
为了确定神经元地址和内核地址,可以向内存映射器提供可编程的寄存器值,该可编程的寄存器值用确定的公式进行计算。
进一步地,内存映射器是事件驱动的,特别是异步的串行接口电路,其具有预定义的带宽并行接口,使得可以一次处理至少一个脉冲事件。
进一步地,内存映射器,是SRAM模块,闪存等。
进一步地,源层包含在sCNN中。例如,当由神经元模块生成的脉冲事件重新路由到该层的内存映射器时,源层甚至可以是当前层。
进一步地,术语“投射或投射至(projects to)”和类似术语尤其是指CNN感受野的倒转(inverse)。
由于sCNN是事件驱动的,因此可以在单个脉冲事件上特别有效地执行卷积操作。
根据本发明的另一实施例,内核模块被配置和布置成从相关联的内核存储器接收所确定的内核地址,并且特别是与硬件模块一起提供输出以存储在所确定的内核地址处的恰当的内核值。尤其是,并根据确定的神经元地址,到达神经元模块。
根据本发明的另一实施例,神经元模块被配置和布置为:
a)接收所确定的神经元地址和适用内核值;
b)对于每一个接收到的神经元地址,根据适用内核值,为神经元确定更新后的神经元状态;
c)为更新后的神经元,举例而言,特别是超过或低于至少一个预定阈值,输出离去的脉冲事件,尤其是在神经元状态更新过后。
即,如果神经元状态达到预定阈值,则产生脉冲事件。
进一步地,神经元状态用数字表示。
术语“达到”尤其是指神经元状态低于或超过阈值。
根据本发明的另一实施例,内存映射器被配置和布置为对于每个接收到的输入脉冲事件确定至少一个输出特征图,该输出特征图由分配给该输出特征图的神经元组成,其中输出特征图的数量等于当前层的卷积核数。
特征图可以表示为一个二维的神经元数组,这些神经元可以通过它们的神经元坐标进行寻址,每个神经元都有一个神经元状态。
输入脉冲事件投射至与层中的内核数量相同的特征图。
根据该实施例,每个内核产生其关联的输出特征图。
根据本发明的另一个实施例,sCNN的每一层还包括目的地映射,其中目的地映射连接到输出,特别是连接到神经元模块的总线,并且其中目的地映射被配置和布置为转储输出脉冲事件和/或生成从当前层的神经元模块接收到的输出脉冲事件的输出目的地信息,并将其关联,特别是将所述目的地信息附加到输出脉冲事件,其中输出目的地信息包括有关向外的脉冲事件将被传递到多个层中包括的至少一个目标层的信息,具体地,目标信息包括生成脉冲事件的输出特征图信息,在输出特征图中的脉冲事件的神经元坐标,和/或相对于特征图索引的偏移值,也称为偏置值。
该实施例允许每一层自主地确定目的地信息,使得可以通过以模块化方式添加更多的层来扩展sCNN。
根据本发明的另一个实施例,神经元模块包括多个并行操作的神经元子接口,其被配置为处理接收到的神经元地址和内核值,特别是接收到的偏置值,并生成更新的神经元状态和脉冲事件,其中每个神经元子接口包括一个关联神经元存储器,用于读取接收到的神经元地址的神经元状态,并将更新的神经元状态写入到相关神经元存储器中的接收到的神经元地址,从而由神经元子接口及其相关的神经元存储器实现神经元状态的并行处理。。
通常,由于在存储器上的读取和写入的过程是相当缓慢且费时的过程,所以本申请绕过了网络处理速度的潜在瓶颈,允许有效且快速地处理来自先前层的脉冲事件。根据该实施例,所确定的神经元地址和适用内核值被分配给多个神经元子接口,以便以并行方式进行处理。
根据本发明的另一实施例,神经元模块包括路由器模块,该路由器模块被配置、适配和连接以接收来自内核模块的确定的神经元地址、适用内核值,特别是,和/或来自偏置模块的偏置值,并且将接收到的神经元地址和内核值、和/或偏置值,传送到多个并行操作的神经元子接口,这些神经元子接口被配置为并行处理接收到的神经元地址和内核值,尤其是并行的偏置值。其中,神经元模块还包括合并模块,该合并模块被配置为接收来自多个神经元子接口生成的脉冲事件,并将该脉冲事件集中以进行串行处理,进一步地,在通道数量少于神经元子接口的总线中,更进一步地,其中总线仅具有单个传输通道。该实施例允许适配到神经元模块的串行总线和来自神经元模块的串行总线连接,而在神经元模块处,促进了并行处理。
根据本发明的另一实施例,每一层还包括偏置模块,该偏置模块包括关联的偏置存储器,特别是连接到关联的偏置存储器的偏置接口,其中,关联的偏置存储器被配置为将偏置值存储在偏置地址中,其中,偏置模块被连接到神经元模块,并且其中偏置模块被配置为以特别预定的时间间隔向神经元模块提供偏置值,其中神经元模块被配置为根据接收到的偏置值更新至少一个输出特征图中所有神经元的神经元状态。
与内核接口相似,偏置接口被配置为寻址存储器,以便接收并特别处理偏置值。
偏置模块不连接到内存映射器。因此,偏置存储器向神经元模块,特别是向至少一个输出特征图提供偏置值,该偏置值独立于输入的脉冲事件中包括的信息。
根据本发明的另一实施例,神经元模块被配置为接收神经元地址和内核值,尤进一步地包括偏置值,这些值来自于内核模块和/或偏置模块,并且经神经元子接口之一分发神经元地址、内核值和偏置值。
读取接收到的神经元地址的神经元状态,特别是从关联的神经元存储器中读取,使用接收到的内核值和/或接收到的偏置值(特别是在神经元子接口上)更新读取的神经元状态,将更新后的神经元状态与至少一个阈值进行比较,所述阈值是存储在阈值寄存器中并且可从该阈值寄存器访问,在达到所述至少一个阈值时,所述寄存器可用至少一个阈值进行编程以产生提供给目的地映射的脉冲事件,并通过合并模块,将更新的神经元状态重置为重置神经元状态,以将更新后的神经元状态(重置的神经元状态或复位的神经元状态)写入到接收神经元地址的相关神经元存储器。
对于每个神经元,sCNN可以包括两个阈值,例如下阈值和上阈值。
当神经元产生脉冲事件时,所述神经元状态被设置为重置的神经元状态。例如,重置的神经元状态可以为零或等于更新的神经元状态与阈值之间的差。
因此,神经元模块,特别是神经元子接口,被配置为执行必要的计算来更新输入的脉冲事件所投射神经元的神经元状态,尤其是以并行方式将其应用到适用内核值。因此,神经元模块包括执行该任务所需的电子电路。
根据本发明的另一实施例,神经元模块包括多个神经元子接口,其具有相关联的神经元存储器,用于并行访问所确定的神经元地址,其中,神经元模块被配置为通过以下方式分配多个接收到的神经元地址,将神经元路由器模块连接到多个神经元子接口,其中每个神经元子接口及其关联的存储器子块被配置为处理接收到的神经元地址和内核值。
该实施例允许对利用内核值更新的神经元进行并行处理。
进一步地,由于从关联神经元存储器进行读取和写入是相当缓慢的过程,因此,当使用诸如随机存取存储器的常规存储器时,通过并行化该步骤能够减少处理时间。
该实施例即使在高数据速率下,也能实时处理输入的脉冲事件。
根据本发明的另一实施例,内核接口包括多个内核读/写接口,用于并行访问包括在相关联的内核存储器中的内核存储器子块,其中,内核接口被配置为分配接收到的内核地址,通过内核接口路由器***到多个内核读/写接口,并收集从内核存储器子块接收的内核值。该实施例解决了加速常规存储器中类似的慢速读写过程的问题,从而使得即使在高数据速率下,sCNN特别能够进行实时处理。
术语“实时”处理或操作的具体特征在于,sCNN对输入脉冲事件的平均处理速率等于SCNN中输入脉冲事件的平均速率,从而避免了内存溢出。
根据本发明的另一实施例,内存映射器被配置为执行以下操作序列,以便在脉冲事件被确定时确定适用内核值的内核地址以及与对应要更新的神经元地址的神经元坐标。在由内存映射器接收到的脉冲事件中,该脉冲事件包括脉冲事件的坐标(x,y)的信息,或由源特征图中的脉冲事件的坐标(x,y)的信息组成,进一步地包括通道标识符(c),神经元坐标包括x-标识符和y-标识符。
进一步地,补零或零填充(Zero Padding)(x+px,y+py)脉冲事件的坐标(x,y)具有从坐标(x,y)提供并存储在寄存器中的预定义偏移量(px,py),进一步地,从补零或零填充坐标(x+px,y+py)中,计算脉冲事件投射至的神经元锚点坐标(xo,yo),以及相应内核锚点坐标(xo k,yo k)的至少一个内核(f),其中内核锚点坐标(xo k,yo k)表示至少一个内核(f)中每个内核的内核坐标(f,xo k,yo k),进一步地,神经元锚点坐标与输出特征图相关联。
从神经元锚点坐标和内核锚点坐标开始,通过寄存器提供的输出特征图(430)尺寸(size,在本文中也称作大小)(H,W)、步长(stride size,在本文中也称作步幅)(sx,sy)和/或内核尺寸(size,在本文中也称作大小)(Hk,Wk)的信息,确定所有待更新的神经元坐标(f,x,y)和适用内核值(142k)的所有内核坐标(c,f,xk,yk)。
从确定的神经元坐标(f,x,y)和内核坐标中确定适用内核值,尤其是压缩的神经元地址和内核地址,将确定的神经元和内核地址提供给内核模块和/或神经元模块。
源特征图是从已接收到脉冲事件的sCNN层的输出特征图。
对输入脉冲事件的坐标进行填充(或补零,Zero Padding)解决了脉冲事件在特征图的边界处卷积的问题。进一步地,偏移量(px,py)包含在可编程寄存器中。
在当前说明书的上下文中,寄存器特别是指一种存储器设备,与诸如神经元存储器或内核存储器之类的存储器相比,该存储器设备提供对所存储的数据的更快的读写。因此,根据本发明的sCNN包括寄存器,该寄存器用于存储经常访问(或频繁访问)的信息。
每当层接收到脉冲事件时,就访问偏移值。因此,偏移量被存储在与内存映射器电连到或由内存映射器包括的寄存器中。
神经元锚点坐标寻址位于输出特征图中脉冲事件投射至的投射窗口处的神经元,例如投射窗口角落处的神经元。投射窗口由内核大小给出,例如,其在x和y中的维度、卷积的步幅大小以及其它可能的因素。神经元锚点坐标用于在输出特征图中定义卷积的起点,进一步地,扫描操作用于在确定的神经元地址上扫描内核以更新这些神经元的神经元状态。内核在输出特征图上的扫描具体取决于卷积的步幅大小。
内核锚点坐标,进一步是位于内核角落或接近/靠近角落的内核值的坐标。内核锚点坐标用于定义起点以确定所有适用内核值。这对于大于1的步幅尤为重要。
内核锚点坐标尤其取决于步幅大小、内核大小和潜在的其它因素。
一旦确定了神经元锚点坐标和内核锚点坐标,便生成了用于计算受卷积影响的神经元的起点,其中该卷积具有适用内核值。从神经元锚点坐标和内核锚点坐标定义的起点开始,确定所有要更新的神经元坐标(f,x,y),即脉冲事件投射至的所有神经元,以及确定所有具有适用内核值的内核坐标(c,f,xk,yk),具体是通过处理由寄存器提供的有关输出特征图大小(H,W)、步幅大小(sx,sy)和/或内核大小(Hk,Wk)等信息来确定。
确定要更新的神经元坐标所需的参数具体存储在一个寄存器中,与传统的存储器相比,该寄存器提供了更快的读写速度。
由神经元坐标确定神经元地址,神经元坐标具体指输出特征图中的参考位置,神经元地址具体指神经元存储器中的存储地址。
一旦内存映射器确定了神经元地址和内核地址,就将这些地址提供给内核模块,具体是内核接口,在内核接口处接收适用内核值并将其发送到神经元模块,在此处确定的神经元的神经元状态将使用适用内核值进行更新。
内存映射器被配置和布置为执行所有这些操作。为此,内存映射器被特别地配置和布置为执行公式,该公式计算要更新的神经元地址和适用内核值的内核地址。该公式在内存映射器中是固定的,并且不可编程。但是,存储在寄存器中的值例如用于提供步幅大小、内核大小等公式可以通过将相应的寄存器编程来调整为适当的值。
根据本发明的另一实施例,相关联的神经元存储器被组织成使得所有神经元状态都存储在连续的神经元地址中,其中,相关神经元存储器在操作期间具有存储在连续的神经元地址中的所有神经元状态,其中,内存映射器被配置成为所有神经元坐标生成连续的神经元地址,例如生成压缩的神经元地址,并且其中,内存映射器被配置为将压缩的神经元地址提供给神经元模块。
该实施例使得关联神经元存储器的存储空间有效利用。根据本发明的另一实施例,组织相关联的内核存储器,使得所有内核值被存储在连续的内核地址中,特别是其中,相关联的内核存储器具有在操作期间存储在连续的内核地址中的所有内核值,其中,内存映射器被配置。为所有内核坐标生成连续的内核地址,例如生成压缩的内核地址,并且其中,内存映射器被配置为将压缩的内核地址提供给内核模块。
该实施例使得相关联的内核存储器的存储器空间被有效的使用。
根据本发明的另一实施例,事件驱动的脉冲卷积网络包括与脉冲事件路由器连接的多个层,该脉冲事件路由器被配置为将从源层接收的输出脉冲事件路由到至少一个目的地层,进一步地,其中,路由器访问与输出脉冲事件关联的目的地信息,其中目的地层可以是源层。
该实施例提供了具有多个层的sCNN,这些层通过脉冲事件路由器被电连接和组织。优选地,脉冲事件路由器是可编程的,以便允许各种sCNN配置和路由选项。
动态视觉传感器被配置为产生事件驱动脉冲,可以用作脉冲事件路由器的输入或第一源层。
根据本发明的另一实施例,事件驱动的卷积神经网络被配置用于事件驱动的,特别是脉冲事件的异步处理。其中,sCNN被配置成接收异步脉冲事件并在接收时处理每个脉冲事件;进一步地,其中,内存映射器是事件驱动的,是异步电子电路,关联的内存模块是事件驱动的,是异步模块,内核模块是事件驱动的,是异步模块,目的地映射是事件驱动的,是异步电子电路。
根据本发明的另一实施例,sCNN被配置为接收并处理来自动态视觉传感器的脉冲事件,进一步地,sCNN包括动态视觉传感器。此外,通过计算机程序解决了根据本发明的问题。该计算机程序特别地被配置为操作sCNN,更具体地,根据本发明的sCNN的组件。
在sCNN的实施例的上下文中引入的术语和定义也适用于计算机程序。
所述计算机程序包括指令,当在所述sCNN的至少一个组件上执行所述计算机程序时,诸如内存映射器,神经元模块,内核模块,目的地映射和/或脉冲事件路由器。根据本发明的事件驱动的脉冲卷积网络,使用相应的组件执行对应的步骤,对该组件进行配置和布置以异步地处理输入的脉冲事件。
进一步地,该计算机程序为sCNN的寄存器提供了可编程的寄存器值。
根据计算机程序的另一个实施例,该计算机程序使内存映射器:
a)从网络的源层经由电子连接接收输入的单个脉冲事件,并且响应于接收到的脉冲事件,输入脉冲事件包括关于源层中单个神经元的坐标的信息。
b)确定接收到的输入脉冲事件与至少一个卷积核的卷积投射至的神经元的相关神经元存储器中的神经元坐标和相应的神经元地址,
c)确定具有适用于所确定的神经元地址的神经元状态的内核值的对应内核地址的内核坐标,其中,所确定的神经元地址的神经元状态将用适用内核值进行更新,进一步地,来自至少一个或多个卷积核,
d)内核模块,特别是内核接口,提供适用内核值的确定的内核地址,进一步地,确定神经元地址。
根据计算机程序的另一个实施例,该计算机程序使神经元模块:
a)在神经元子接口之一处接收确定的神经元地址和适用内核值,
b)根据适用内核值,确定每个接收到的神经元地址处的神经元的更新神经元状态,
c)更新的神经元达到或者是超过或低于至少一个预定阈值时,输出脉冲事件,具体是在神经元状态已经更新之后。
根据计算机程序的另一实施例,计算机程序使目的地映射转储输出脉冲事件和/或生成从神经元模块接收到的输出脉冲事件的输出目的地信息,并将所述目的地信息与输出脉冲事件相关联,其中输出目的地信息包括关于输出脉冲事件将要被传递到的至少一个目的地层的信息,其中目的地信息包括有关其中生成了脉冲事件的输出特征图的信息,输出特征图中脉冲事件的神经元坐标,和/或相对于特征图索引的偏移值。
根据计算机程序的另一个实施例,计算机程序使神经元子接口接收神经元地址、内核值、偏置值,具体从内核模块和/或偏差模块接收,读取接收到的神经元地址的神经元状态,用接收到的内核值和/或接收到的偏置值更新读取的神经元状态,将更新后的神经元状态与至少一个阈值进行比较,所述阈值是存储在阈值寄存器中并且可从该阈值寄存器访问,其中,寄存器可编程为具有至少一个阈值,一旦达到该阈值,产生特定地提供给目的地映射的脉冲事件,并将更新后的神经元状态重置为重置神经元状态,将更新后的(即特别是重置神经元状态)写入接收神经元地址关联的神经元存储器。
根据该计算机程序的另一个实施例,该计算机程序使神经元模块通过神经元路由器模块将多个接收到的神经元地址分配给多个神经元子接口,其中,计算机程序还使每个神经元子接口与对应的内存相关联,以处理接收到的神经元地址和内核值。
根据该计算机程序的另一实施例,该计算机程序使内核接口借助于内核接口路由器***将接收到的内核地址分配给多个内核读/写接口,并收集从内核存储器子块接收的内核值。
根据该计算机程序的另一个实施例,当计算机程序执行以下操作时,该计算机程序使内存映射器执行以下序列操作,以确定适用内核值的内核地址以及要更新的相应神经元地址的神经元坐标。内存映射器接收到脉冲事件,该脉冲事件包括以下信息或由其组成:源特征图中的脉冲事件的坐标(x,y)的信息,进一步地包括通道标识符(c),神经元坐标包括x和y标识符。
进一步地,补零或零填充(x+px,y+py),脉冲事件的坐标(x,y)具有从坐标(x,y)提供并存储在寄存器中的预定义偏移量(px,py),进一步地,从补零或零填充坐标(x+px,y+py)中,计算脉冲事件投射至的神经元锚点坐标(xo,yo),以及相应内核锚点坐标(xo k,yo k)的至少一个内核(f),其中内核锚点坐标(xo k,yo k)表示至少一个内核(f)中每个内核的内核坐标(f,xo k,yo k),进一步地,神经元锚点坐标与一个输出特征图,
从神经元锚点坐标和内核锚点坐标开始,通过处理寄存器提供的有关输出特征图大小(H,W),步幅/步长大小(sx,sy)和/或内核大小(Hk,Wk)的信息,确定要更新的所有神经元坐标(f,x,y),即脉冲事件投射至的神经元坐标,以及所有内核坐标(c,f,xk,yk)。
从确定的神经元坐标(f,x,y)和内核坐标中确定适用内核值,尤其是压缩的神经元地址和内核地址,将确定的神经元和内核地址提供给内核模块和/或神经元模块。
根据该计算机程序的另一个实施例,该计算机程序组织关联神经元存储器,使得所有神经元状态都存储在连续的神经元地址中,其中该计算机程序使内存映射器为所有神经元坐标生成连续的神经元地址,例如以生成压缩神经元地址,并且其中计算机程序还使内存映射器将压缩神经元地址提供给神经元模块。
根据计算机程序的另一实施例,计算机程序组织关联的内核存储器,使得所有内核值被存储在连续的内核地址中,其中,计算机程序使内存映射器为所有内核坐标生成连续的内核地址,例如以生成压缩内核地址,并且其中计算机程序还使内存映射器将压缩内核地址提供给内核模块。
根据计算机程序的另一实施例,计算机程序使脉冲事件路由器将从源层接收的输出脉冲事件路由到至少一个目的地层,特别是其中路由器访问与输出脉冲事件相关联的目的地信息,其中目的层可以是源层。
此外,通过计算机实现的方法解决了根据本发明的问题。该计算机实现的方法特别地被配置为操作sCNN,更进一步地,根据本发明的sCNN的组件。此外,该计算机实现的方法尤其包括针对计算机程序公开的至少一些特征和/或方法步骤。
通过事件驱动的sCNN的内存映射器进一步解决了该问题。
在sCNN的实施例的上下文中引入的术语和定义也适用于内存映射器。当内存映射器接收到脉冲事件时,根据本发明的内存映射器被配置为确定以事件驱动的方式被更新的内核地址和神经元地址,该脉冲事件包括关于坐标的信息或由其组成(x,y),进一步地包括通道标识符(c),神经元坐标包括x和y标识符,其中当内存映射器接收到脉冲事件时,内存映射器执行以下操作:
-补零或零填充(x+px,y+py),脉冲事件的坐标(x,y)具有由寄存器提供并存储在寄存器中的预定义偏移量(px,py);
-从坐标(x,y),尤其是从补零或零填充坐标(x+px,y+py)计算脉冲事件投射至的神经元锚点坐标(xo,yo),以及相应的内核锚至少一个内核(f)的坐标(xo k,yo k),其中内核锚点坐标(xo k,yo k)指示至少一个内核(f)中的每个内核的内核坐标(f,xo k,yo k)。特别是其中神经元锚点坐标与输出特征图相关联的情况;
-从神经元锚点坐标和内核锚点坐标开始,确定要更新的所有神经元坐标(f,x,y)(即脉冲事件投射至)和所有内核坐标(c,f,xk,yk)通过处理寄存器提供的有关输出特征图大小(H,W),步幅/步长大小(sx,sy)和/或内核大小(Hk,Wk)的信息来确定适用内核值;
-从确定的神经元坐标(f,x,y)和内核坐标中确定适用内核值,尤其是压缩的神经元地址和内核地址;
-将确定的神经元和内核地址提供给内核模块和/或神经元模块以处理神经元和内核地址。
根据内存映射器的另一实施例,内存映射器被配置为为所有神经元坐标生成连续的神经元地址,诸如以生成压缩的神经元地址,并且其中,内存映射器被配置为将压缩的神经元地址提供给神经元模块。
根据内存映射器的另一实施例,内存映射器被配置为为所有内核坐标生成连续的内核地址,诸如以生成压缩的内核地址,并且其中,内存映射器被配置为将压缩的内核地址提供给内核模块。
具体地,下面结合附图描述示例性实施例。附图被附加到权利要求书中,并且伴随有解释所示出的实施例和本发明的各个方面的各个特征的文本。在附图中示出的和/或在附图的文本中提到的每个单独的特征可以并入(也以隔离的方式)到与根据本发明的装置有关的权利要求中。
附图说明
图1是本发明的sCNN的一层的示意图。
图2是包括多个层的sCNN的示意性布局。
图3是内存映射器130中的数据流。
图4是关于如何确定神经元坐标和适用内核值的示意图。
图5是说明神经元更新过程的示意性数据流程图。图6是并行化的神经元模块架构。
具体实施方式
图1示出了根据本发明的sCNN的一层10的示意图。层10是包含各种组件的电子模块,通常与sCNN中的几个副本集成在一起。
框状区域指一个单元或模块,其中箭头指示组件之间的数据连接和关联的数据流向。
sCNN包括内存映射器130,其被配置为接收由{c,x,y}指示的输入脉冲事件140。输入脉冲事件140,特别是数字数据,其包括生成输入脉冲事件140的位置信息以及指示脉冲事件140所关联信道的信道索引。位置信息特别是源层输出特征图中的x和y坐标或动态视觉传感器(参见图2)的x和y坐标。该信道可以指示来自脉冲产生设备的色彩通道,诸如动态视觉传感器。此外,还可以标识其它通道标记。
内存映射器的任务是确定所有必要信息,以使(当前)层10执行卷积。因此,内存映射器130需要确定输入的脉冲事件140投射到的神经元地址142n,即层中的哪个神经元受到脉冲事件140与至少一个卷积核410的卷积的影响。
一旦内存映射器130接收到脉冲事件140,则内存映射器130开始处理该脉冲事件140。内存映射器130是事件驱动的内存映射器130,并且包括例如具有多个缓冲器级和电子组合逻辑电路的流水线处理。组合逻辑电路对脉冲事件c,x和y的各个位进行加、乘和/或多路复用。
内存映射器130被连接以执行预定义公式,该预定义公式被配置为根据适用内核值142k确定要更新的神经元地址142n。由于来自输入脉冲事件140的特征图的尺寸,当前层10中输出特征图的尺寸和数量,内核数,卷积步幅(又称步长,stride size)大小和其它参数可能会有所不同,因此通过连接的寄存器或由内存映射器130包括的寄存器131来提供公式中的这些值。图1所示的所有寄存器131、161、123都是类似的快速存储器,其被配置为进行快速读取和写入操作。
请注意,在整个说明书中,所有寄存器都是可编程的,特别是配置为存储sCNN不可训练或未可训练的参数。
反过来,内核值142k以及偏置值通常在sCNN 1的训练过程期间确定,如本领域所公知的。
寄存器131连接到内存映射器130,其存储至少一个内核的内核值、步幅、x和y的零填充或补零(zero-padding)、内核数f以及输出特征图430的数量。
另外,寄存器131可以存储输出特征图430的大小或尺寸,例如它们的高度和宽度(例如,以像素为单位测量)。
图3示出了内存映射器130的示例性实施例以及如何由内存映射器确定神经元地址和内核值。
进一步地,所确定的神经元地址ncomp和内核地址kcomp被压缩,从而不会浪费相关的神经元和内核存储器的存储空间。内存映射器130输出神经元地址142n和内核地址到内核模块110,内核模块110包括内核接口111和相关联的内核存储器112。内核接口111是内核存储器接口。
在内核接口111处,接收内核地址,并且内核接口111从关联的内核存储器112读取内核地址。
内核存储器112是常规存储器,例如随机存取存储器(RAM)、闪存等。关联的内核存储器112可以与层10的其余部分布置在同一电路板上,或者可以连接到层10并构成外部存储设备。
根据脉冲事件140,需要从内核存储器112中读取多个内核值142k,并且由于诸如SRAM之类的常规存储设备比较慢,因此内核模块110被配置和布置为用于从关联的内核存储器112并行读取和写入内核值142k(参见图6)。
图6示出了通过并行化关联内核和/或关联神经元存储器112、122的读取和写入操作来解决该问题的示例性实施例。
假设当前层10中卷积核的数量为N,则内核接口111输出与神经元地址相关联的N个卷积核的内核权重,根据N个卷积核的值更新相应神经元地址处的神经元状态。
当每个卷积核410(编号参考图4)投影到关联的输出特征图430时,N个卷积核410投影到当前层10中的N个输出特征图430,假设内核的尺寸为N×M×H×W,其中M是输入通道的数量,H是每个内核的高度,W是每个内核的宽度。因此,每个输出特征图430包括一些神经元420,这些神经元将用适用内核值(wk)来更新。这些神经元420的神经元地址由内核接口111在输出数据集中提供,该输出数据集中包括与适用内核值142k相关联的所述神经元地址142n。待更新神经元的神经元地址由内核接口111提供并由如上所述的内存映射器130计算。
内核模块110电连接到神经元模块120,该神经元模块120被配置和布置为处理神经元的神经元状态。神经元模块120接收来自内核模块110的输出数据集。当神经元模块120接收到输出数据集时,开始处理所述数据集,即神经元模块120是事件驱动的。
除了输出特征图430中的一些神经元420的更新之外,输出特征图430中的所有神经元431可以在重复的时间间隔内用偏置值142b更新。
为此,每个层10、10'、10”包括偏置模块160,偏置模块包括偏置接口161和相关联的偏置存储器162。相关联的偏置存储器162是常规的存储设备,并且被配置为存储将要应用于神经元431的偏置值。
偏置接口161连接至或集成在偏置相关存储器162中,并被配置为从关联偏置存储器162中读取和写入偏置值。此外,偏置接口161被配置为输出偏置值,并将偏置值和将要被偏置值更新的神经元地址提供给神经元模块120。
值得注意的是,通常,偏置值142b会扩展到特定输出特征图430中的所有神经元431,同时,要用内核值142k更新的神经元420取决于内存映射器130接收的特定的脉冲事件140。
因此,偏置模块160不连接到内存映射器130,以便交换数据和/或同步操作,从而独立于输入事件并与任何正在处理的事件并行地操作。偏置模块的操作可以基于时钟设备,但是也可以通过用户选择的任何触发器进行操作。
偏置模块160包括偏置寄存器161,即快速读/写存储器组件,其存储指示当前层10中要用偏置值142b更新DE输出特征图430的输出特征图索引。
神经元模块120连接到偏置模块160和内核模块110,并被配置为接收来自所述模块160、110的输出。
神经元模块120连接到神经元寄存器123。神经元模块120包括多个神经元子接口121s,其中每个神经元子接口121s具有相关联的用于存储神经元状态的神经元存储器506(参见图5),以进行读取、处理和写入神经元状态(参见图6)。图5为神经元子接口的一个实施例。每当神经元模块120从内核模块110接收输出数据集或从偏置模块160接收偏置值142b时,神经元模块将所述输出数据分配至一个或多个神经元子接口601,该子接口从要用适用内核值142k和/或偏置值142b更新的神经元中读取神经元状态。
根据脉冲事件140或接收到的偏置值142b,必须从相关的神经元存储器506中读取多个神经元状态,并且由于诸如SRAM之类的常规存储设备相对较慢,因此神经元模块120被配置和布置为借助相关联的神经元子接口和/或相关联的神经元存储器506,从关联的神经元存储器506(参见图6)并行读取和写入神经元状态。
使用内核值142k更新神经元状态,可以采用以下公式,例如:
s(n+1)=mod(s(n)+wb,tr)
其中s(n)代表存储在关联的神经元存储器506中神经元的神经元状态,wb对应于适用内核值142k或偏置值142b。例如,新的神经元状态s(n+1)通过上阈值和下阈值tr的模运算给出。
如果s(n)+wb超过阈值,通过所述模块操作将神经元状态重置为重置神经元状态,并且由神经元子接口121s生成输出脉冲事件150。神经元子接口121s将新的神经元状态存储在与接收神经元地址相同的关联的神经元存储器506中。此过程在图5中进行了详细说明。请注意,图5提供了神经元模块120的功能示意图,而图6提供了神经元模块120的结构示意图。
重置神经元状态的其它定义方式也是可行的,并在图5的上下文中进行了阐述。
对于已经达到下阈值502或上阈值502的所有神经元,神经元接口601产生输出脉冲事件150。该输出脉冲事件150是一种数据结构,其包括输出特征图中所述神经元的神经元坐标,包括所述神经元以及用于指示输出特征图的输出特征图索引。该数据结构被电传输到目的地映射器170(参见图1)组件,该组件在当前说明书的上下文中也被称为目标映射器。
目的地映射器例如是一个合并缓冲器,用于合并寄存器171和输出脉冲事件150接收的信息,该合并寄存器171连接到目的地映射器。
目的地映射器170被配置和布置为附加输出脉冲事件150、503的信息,使得其可以被路由到适当的层10、10'、10”,在当前说明书上下文中也被称为目的地层。
为此,目的地映射器170包括相关联的寄存器171,该寄存器171提供关于输出脉冲事件150、503将被路由到的目的地层10、10'、10”的信息。
目的地映射器170附加输出脉冲事件150的信息,使其包含脉冲神经元所在输出特征图430的x,y坐标和索引。此外,在所述附加信息中包括输出特征图索引,该附加信息指示脉冲神经元所位于输出特征图的位置。而且,输出脉冲事件150可以被路由到多个目的地层10'、10”。因此,目的地映射器170附加该信息,使得其包含指示由sCNN包括的另一层10'、10”的目的地层索引和相对于特征图索引的偏移值,从而映射输出脉冲事件到目的地层(或目标层)中预定义的输出特征图。附加偏移值允许在sCNN中进行层堆叠。
随后可以将输出脉冲事件150(具有如前所述的附加信息)提供给sCNN的脉冲事件路由器200,如图2所示。
图2示出了根据本发明的sCNN 1的总体布局,其包括脉冲事件路由器200和多个层10、10'、10”(如图1所示)。
脉冲事件路由器200从层10、10'、10”或从事件生成设备220(例如动态视觉传感器)接收脉冲事件210。
然后,脉冲事件路由器200基于其目的地层10'、10”的附加信息提供230这样的脉冲事件210,以进一步处理脉冲事件210。
脉冲事件路由器200例如是流复用器/解复用器电路。脉冲事件路由器200是可编程的并被配置为以向后、向前或循环的方式将脉冲事件路由到目的地层,从而为sCNN 1提供高度的灵活性,尤其是在深度学习网络方面。
脉冲事件路由器200配置提供层到层数据流(layer-to layer data)以及芯片到芯片通信(chip-to-chip communication)表示为“芯片输出”和“芯片输入”(“chip-out”和“chip in”),以防多个sCNN 1合作安排成一个网络。
为此,脉冲事件路由器200包括输入端口240,用于从芯片间的外部设备(可以是来自第二sCNN的脉冲事件路由器)接收信号和数据。脉冲事件路由器200还配置为接收数据,即由连接到脉冲事件路由器200的动态视觉传感器220生成的脉冲事件。动态视觉传感器220可以视为sCNN的源层,除了不允许重复或反向传播。
脉冲事件路由器200具有输出端口250,用于将脉冲事件输出到另一芯片或作为结果。
sCNN 1进一步地可包括100000个以上的神经元,这些神经元可编程地分配给sCNN1的层10、10'、10”和输出特征图430。
层10、10′、10″,特别是层10、10′、10″的寄存器131、163、123、171被相应地编程,以反映每个层10、10′、10″的特定布局,即每层包含多少卷积核,每层的输出特征图尺寸等。
动态视觉传感器220例如是具有光接收像素阵列的设备。每个像素都配置为在检测到的光强度发生变化的时,输出脉冲事件。也就是说,动态视觉传感器220的像素对检测到的光通量的变化敏感。
动态视觉传感器220是事件驱动装置,即,与基于帧的相机读出不同,当脉冲事件发生时,像素输出脉冲事件。这样的动态视觉传感器的优势是动态成像非常快速。结合本发明的sCNN 1,可以利用sCNN 1充分发挥实时、超快速数据处理的潜力。
在图3中,示意性地示出了内存映射器130中的数据流。内存映射器130的目的是确定输入的脉冲事件140投射到的神经元420。这也显示在图4中,内存映射器130基于如下步骤处理输入的脉冲事件140:
输入脉冲事件140携带例如信道和坐标的信息{c,x,y}。首先,对接收到的输入脉冲事件140进行补零或零填充300,其中脉冲事件140的坐标被一个偏移值px,py转换:
{c,x,y}→{c,x+px,y+py}。
补零或零填充300的目的是避免在坐标太接近输出特征图430的边界时产生边缘效应。
偏移值由与内存映射器130相关联的寄存器300r,131提供。
在下一步骤中,由内核映射器301模块来确定至少一个内核的适用内核值的内核地址。
内核映射器301被配置为针对每个输出特征图430计算输入脉冲事件140投影到的神经元锚点坐标。
神经元锚点坐标,例如由位于事件投射到的相应输出特征图430中的阵列的右下角的神经元给出。此步骤涉及输出特征图大小、卷积核大小以及卷积步长的处理。此外,计算对应于所述神经元锚点坐标的相应内核锚点坐标。神经元锚点坐标和内核锚点坐标用作确定输出特征图430中所有要更新的神经元420和需要从内核存储器112接收的所有适用内核值142k的起点。
显然,基于两个锚点坐标的起点不仅仅是位于右下角神经元的神经元坐标,而可以是任何神经元,只要它与脉冲事件的投影的关系是已知的即可。
然后将神经元锚点坐标和内核锚点坐标发送到地址扫描模块302,该地址扫描模块302被配置为计算脉冲事件140投射到的神经元420的剩余神经元坐标及其关联的神经元地址142n。
此外,适用内核值142k的所有内核地址由地址扫描模块302确定。对神经元坐标422和适用内核坐标411的计算是通过“扫描”完成的,即根据步幅大小来移动卷积核410。以及在输出特征图430上确定的锚点坐标,例如图4所示。
根据神经元坐标422和内核坐标411,神经元地址142n和内核地址由地址扫描模块302确定。为此,地址扫描模块302可以访问可编程寄存器302r。
如上所述,压缩神经元地址和内核地址,以使存储空间最佳地保留在神经元存储器506和内核存储器112中。
如上所述,将压缩的神经元和内核地址从内存映射器130提供给内核模块110。
在图4中,示意性地示出了输入的脉冲事件140投射到的神经元地址和适用内核值142k的过程。
脉冲事件140来自源特征图440,特别是来自源层中的输出特征图430,其在图4的左列上示出。左列中的每个正方形表示神经元在源层特征图440,SFM,具有相关的坐标{x,y}。其中产生脉冲事件140的神经元421是黑色的。例如图4的面板A,其接收脉冲事件140的当前层10包括两个内核410K1,K2,每个内核具有3×3内核值(描绘为3×3的正方形矩阵)的大小/尺寸(Hk,Wk)。因此,当前层10还包括两个输出特征图430(OFM1,OFM2)(OutputFeature Map)。在此实施例中,输出特征图OFM1,OFM2的大小(H,W)分别为3×3个神经元(每个神经元被描绘为一个正方形)。
步幅(或步长)sx=sy在x和y方向上设置为2,即,卷积核K1,K2在输出特征图OFM1和OFM2上以2为步长进行移动。
确定神经元锚点坐标x0,y0和对应于第一内核K1的内核锚点坐标,以使神经元锚点坐标x0,y0位于脉冲事件140/421投射到的投影部分的右下角,如图4的面板A所示。随后,扫描模块根据步幅(或步长)大小sx在输出特征图OFM1上“扫描”第一卷积核K1,如图4的面板B所示,并确定另一个脉冲事件140(表示为神经元421)投射到的内核坐标和另一个神经元坐标。按照加框区域表示的进行扫描,扫描包括源特征图440SFM(Source Feature Map)中的九个神经元(并且总是包括神经元421)。
在下一步步骤(面板C)中,第一卷积核K1沿y方向扫描(步幅/步长为2),并再次确定第一输出特征图OFM1中的神经元坐标422和核坐标。
在图4的面板D中,第一卷积核K1沿着x移动,并且确定四个神经元坐标中的最后一个以及第一输出特征图OFM1的内核坐标。
然后对第二内核K2执行相同的过程(对照面板G至H)。这样,总共八个神经元坐标和来自两个输出特征图OFM1和OFM2中两个内核K1,K2的八个内核坐标由扫描模块确定。
对于确定的神经元坐标422和内核坐标411,确定相应的神经元地址142n(八个)和具有适用内核值142k的内核地址(八个),使得神经元模块120执行卷积。
图5详细且示意性地示出了如何在神经元模块120上,特别是在神经元子接口121s上执行卷积。
当神经元子接口例如从神经元路由器模块601接收到神经元地址142n和适用内核值142k时,神经元子接口121s从相关的神经元存储器506读取500存储在接收到的神经元地址142n下方的神经元状态。将适用内核值142k添加501到神经元状态。然后将所得的神经元状态与至少一个阈值502比较,通常是两个阈值:一个下阈值和一个上阈值502。
如果所得的结果神经元状态超过阈值502之一(上升到上阈值以上或下降到下阈值以下),则神经元子接口121s会生成输出脉冲事件503,并将神经元状态重置为重置神经状态。在该示例中,重置神经元状态可以为零或取模运算的余数。重置神经元状态被写回505到神经元子接口121s的相关联的神经元存储器506。在没有产生脉冲事件的情况下,将所得到的结果神经元状态写回505到相关的神经元存储器506。
图5的示意图以相同的方式应用于偏置值142b和在神经元子接口121s处接收到的对应神经元地址,其中,代替适用内核值142k,将偏置值142b添加到神经元状态。其余处理的处理与针对内核值142k的接收所描述的相同。
图6示意性地示出了如何促进相关联的内核112或神经元存储器506的并行访问和流水线处理。在图6中,示出了神经元模块120被配置为寻址多个神经元子接口121s,其中,每个神经元子接口121s被配置为读取、写入和处理神经元地址和神经元状态,如前所述。为此,神经元模块120包括神经元路由器模块601,其接收适用内核值和确定的要更新的神经元地址。神经元模块还可以接收偏置值以分配至所确定的神经元地址。路由器模块601将接收到的内核值和适用的神经元地址发送到多个并行组织的神经元子接口121s中的对应神经元子接口121s。在神经元子接口121s处,从关联的存储器506中读取适用的神经元地址,并用内核值142k,尤其是偏置值142(参见图5)进行更新。一旦所确定的神经元地址的神经元状态被更新,就将更新后的神经元状态写回,即存储在相关联的存储器506中。根据更新后的神经元状态,神经元子接口可以生成脉冲事件并输出所述脉冲事件。由于神经元接口被配置为并行操作,因此补偿了神经元存储器上相对较慢的读写过程,从而保持了处理速度。神经元模块还包括合并模块602,合并模块602将所生成的脉冲事件从多个神经元子接口121s合并,以在共同的特别是串行连接中进行进一步处理。神经元模块120,其中每个神经元子接口121s具有其自己可访问的相关联的存储器506,允许有效地并行处理多个神经元状态的读取、写入和更新,从而与非并行相比,增加了层10的处理速度。也可以为内核模块110实现类似的体系结构,使得内核模块处的内核值的读取和写入相应地并行化。
因此,内核模块100包括多个内核子接口,每个内核子接口包括用于读取和写入内核值的相关联的内核存储器。多个内核子接口连接到内核路由器模块,该内核路由器模块被配置为将内核地址分配给内核同级接口,使得从相关内核存储器读取与内核地址相关联的内核值。此外,内核模块可以包括内核合并模块,该内核合并模块被配置为将从多个内核子接口提供的内核值集中到串行总线。
根据本发明的脉冲卷积神经网络提供了专用的电子电路,用于以记忆和节能方式操作现代脉冲卷积神经网络。
Figure BDA0003298491700000251
Figure BDA0003298491700000261

Claims (15)

1.一种脉冲卷积神经网络(1),包括多个层(10,10',10”),每一层包括:
内核模块(110),被配置为以事件驱动的方式存储和处理至少一个卷积核(410)的内核值;
神经元模块(120),被配置为以事件驱动的方式存储并更新所述脉冲卷积神经网络(1)中神经元的神经元状态,并输出由更新的神经元(420)产生的输出脉冲事件(150);
内存映射器(130),被配置为通过与至少一个卷积核(410)的卷积来确定来自源层(10')的输入脉冲事件(140)所投射的神经元(420),并且其中所确定的神经元(420)的神经元状态将用至少一个卷积核(410)的适用内核值更新,其中,内存映射器(130)被配置为以事件驱动的方式处理输入的脉冲事件。
2.根据权利要求1所述的事件驱动脉冲卷积神经网络,其中,内核模块(110)包括连接到关联的内核存储器(112)的内核接口(111);其中,关联的内核存储器(112)被配置为在内核地址中存储至少一个卷积核(110),尤其是多个卷积核(410),的内核值,其中卷积核模块(110)与神经元模块(120)电连接。
3.根据权利要求1和2所述的事件驱动脉冲卷积神经网络,其中所述内存映射器(130)与内核模块(110),尤其是与内核接口(111),电连接,其中所述内存映射器(110)被配置和布置为
a)从脉冲卷积神经网络(1)的源层(10')接收输入脉冲事件(140),输入脉冲事件(140)包括源层中神经元坐标(421)的信息,并响应接收到的输入脉冲事件(140)
b)确定接收的输入脉冲事件(140)与至少一个卷积核(110)完成卷积后所投射的神经元坐标(422)和对应的神经元(420)的神经元地址;
c)通过相应的内核地址确定内核坐标(411),所述内核地址是适用于所确定的神经元地址对应的神经元状态的内核值的地址,其中,所确定的神经元地址对应的神经元状态通过适用的内核值更新;
d)向内核模块(110),尤其是向内核接口(111),提供确定的内核地址,尤其是确定的神经元地址。
4.根据权利要求4所述的事件驱动脉冲卷积神经网络,其中所述内核模块(110)被配置和布置为接收所确定的内核地址,并将存储在所确定的内核地址处的适用内核值,尤其是根据确定的神经元地址,提供给所述神经元模块(120)。
5.根据前述权利要求任一所述的事件驱动脉冲卷积神经网络,其中所述神经元模块(120)被配置和布置为
a)接收确定的神经元地址(142n)和适用的内核值(142k);
b)对于每个接收到的神经元地址(142n),基于适用的内核值(142k),为神经元(420)确定更新后的神经元状态;
c)为更新的神经元(420)输出达到至少一个预设阈值(502)的输出脉冲事件(150)。
6.根据前述权利要求任一所述的事件驱动脉冲卷积神经网络,其中所述内存映射器(130)被配置为对于每个接收的输入脉冲事件(140)确定至少一个输出特征图(430),所述输出特征图(430)由分配给所述输出特征图(430)的神经元组成,其中输出特征图(430)的数量等于当前层(10)中卷积核(410)的数量。
7.根据前述权利要求任一所述的事件驱动脉冲卷积神经网络,其中每一层(10,10')还包括偏置模块(160),其包括偏置存储器(162)和尤其是,连接到偏置存储器(162)的偏置接口(161);其中所述偏置存储器(162),被配置为在偏置地址中存储偏置值;其中所述偏置模块(160),连接到神经元模块(120);且其中偏置模块(160)被配置为尤其是,向神经元模块(120)提供预定义时间间隔的偏置值;其中神经元模块(120)被配置为基于接收到的偏置值更新至少一个输出特征图(430)中所有神经元的神经元状态。
8.根据前述权利要求任一所述的事件驱动脉冲卷积神经网络,其中所述神经元模块(120)包括多个并行操作的神经元子接口(121s),其被配置为处理接收到的神经元地址(142n)、内核值(142k)和接收偏置值(142b),并尤其是生成(501,502)更新的神经元状态和输出脉冲事件(150);其中,每个神经元子接口(121s)具有关联的神经元存储器(506),所述神经元存储器(506)用于读取接收到的神经元地址的神经元状态,并且将更新的神经元状态写入相关联的神经元存储器(506)中的接收神经元地址,以通过神经元子接口及其相关联的神经元存储器(506)实现神经元状态的并行处理。
9.根据权利要求10所述的事件驱动脉冲卷积神经网络,其中所述神经元模块(120)包括路由器模块(601),其被配置为尤其是从内核模块(110)和/或偏置模块(160)中接收确定的神经元地址(142n)、内核值(142k)和尤其是偏置值(142b),并将接收到的神经元地址(142n)、内核值(142k)和尤其是偏置值(142b)传输到多个并行操作的神经元子接口(121s),所述神经元子接口被配置为并行处理接收到的神经元地址(142n)、内核值(142k)和尤其是偏置值(142b),其中所述神经元模块还包括合并模块(603),其被配置为接收来自所述多个神经元子接口(121s)生成的输出脉冲事件(150),并集中所述输出脉冲事件,以尤其是在通道数量少于神经元子接口的总线中进行串行处理,尤其是其中所述总线只有一个传输通道。
10.根据前述权利要求任一所述的事件驱动脉冲卷积神经网络,其中所述神经元模块(120)被配置为
尤其是路由器模块,尤其是从内核模块(110)和/或从偏置模块(160),接收神经元地址(142n)、内核值(142k)和尤其是偏置值(142b);
尤其是从神经元子接口之一(121s)的关联神经元存储器(506),读取(500)接收到的神经元地址(142n)的神经元状态;
尤其是通过神经元子接口(121s),用接收到的内核值(142k)和/或尤其是接收到的偏置值(142b),更新(501)读取的神经元状态;
将更新的神经元状态与至少一个阈值(502)进行比较,所述阈值尤其是存储在阈值寄存器(504)中,并尤其是通过神经元子接口(121s),访问阈值寄存器;
当达到至少一个阈值(502),生成尤其是提供给目的地映射器(170)的脉冲事件(503),并将更新后的神经元状态重置为重置神经元状态;
将更新后的神经元状态写入(505)相关联的神经元存储器(506)接收到的神经元地址(142n)。
11.根据前述权利要求任一所述的事件驱动脉冲卷积神经网络,其中,内存映射器(130)被配置为执行以下操作,以为了确定适用内核值(142k)的内核地址和对应待更新神经元地址(142n)的神经元坐标(421),当内存映射器(130)接收到脉冲事件(140)时,脉冲事件(140)包括或由关于尤其是已在源特征图(440)中生成的脉冲事件(140)的神经元(423),的坐标(x,y),和尤其是通道标识符(c),的信息,组成,其中,坐标(x,y)包括x标识符和y标识符:
使用预设偏移量(px,py)尤其是零填充(x+px,y+py)脉冲事件(140)的坐标(x,y),所述预设偏移量由寄存器提供并存储在寄存器中;
根据坐标(x,y),尤其是根据零填充坐标(x+px,y+py),计算脉冲事件投射到的神经元锚点坐标(x0,y0),以及至少一个内核(f)对应的内核锚点坐标(x0 k,y0 k),其中,内核锚点坐标(x0 k,y0 k)表示所述至少一个内核(f)中的每一个内核的内核坐标(f,x0 k,y0 k),尤其是其中神经元锚点坐标(x0,y0)与输出特征图(430)相关联;
从神经元锚点坐标和内核锚点坐标开始,尤其是通过寄存器提供的输出特征图(430)尺寸(H,W)和步长(sx,sy)和/或内核尺寸(Hk,Wk)的信息,确定所有待更新的神经元坐标(f,x,y)和适用内核值(142k)的所有内核坐标(c,f,xk,yk);
从确定的所有神经元坐标(f,x,y)和适用内核值(142k)的所有内核坐标(c,f,xk,yk)中确定尤其是压缩后的神经元地址和压缩后的内核地址;
将确定的压缩神经元地址和压缩内核地址提供给内核模块(110)和/或神经元模块(120)。
12.根据权利要求8所述的事件驱动脉冲卷积神经网络,其中所述关联的神经元存储器(506)被组织成使得所有神经元状态存储在连续的神经元地址中,其中所述内存映射器(130)被配置为针对所有神经元生成坐标(f,x,y)在连续的神经元地址中以便生成压缩的神经元地址,并且其中内存映射器(130)被配置为将压缩的神经元地址提供给神经元模块(120)。
13.根据前述权利要求任一所述的事件驱动脉冲卷积神经网络,其特征在于,所述事件驱动脉冲卷积网络(1)包括与脉冲事件路由器(20)相连的多个层(10,10',10”),所述路由器(20)被配置为将从源层接收的输出脉冲事件路由到至少一个目的地层,尤其是其中路由器(20)访问与输出脉冲事件(150)相关联的目的地信息。
14.一种计算机程序,包括指令,当在前述权利要求任一所述的事件驱动脉冲卷积神经网络(1)的组件,诸如内存映射器(130),神经元模块(120),内核模块(110),目的地映射和/或脉冲事件路由器(20),上执行所述计算机程序时,使得相应的组件(130,120,110,20)执行该组件被配置和布置的步骤,以处理输入的脉冲事件(140)。
15.一种用于事件驱动脉冲卷积神经网络的内存映射器(130)装置,被配置为当脉冲事件(140)被内存映射器(130)接收时,以事件驱动方式确定内核地址和待更新的神经元地址(142n),脉冲事件(140)包括或由脉冲事件(140)的坐标(x,y)和尤其是信道标识符(c)的信息组成,该坐标包括x标识符和y标识符;其中,当内存映射器(130)接收到脉冲事件(140)时,内存映射器(130)执行以下操作:
使用预设偏移量(px,py)尤其是零填充(x+px,y+py)脉冲事件(140)的坐标(x,y),所述预设偏移量由寄存器提供并存储在寄存器中;
根据坐标(x,y),尤其是根据零填充坐标(x+px,y+py),计算(301)脉冲事件投射到的神经元锚点坐标(x0,y0)和至少一个内核(410,f)的对应内核锚点坐标(x0 k,y0 k),其中内核锚点坐标(x0 k,y0 k)指示至少一个内核(410,f)中的每一个内核的内核坐标(f,x0 k,y0 k),尤其是其中神经元锚点坐标与输出特征图(430)相关联;
从神经元锚点坐标和内核锚点坐标开始(302),尤其是通过寄存器提供的输出特征图(430)尺寸和步长和/或内核尺寸的信息,确定所有待更新的神经元坐标(f,x,y)和适用内核值(142k)的所有内核坐标(c,f,xk,yk);
根据所确定的所有神经元坐标(f,x,y)和适用内核值的所有内核坐标(c,f,xk,yk),确定(303)尤其是压缩神经元地址和压缩内核地址;
将确定的压缩神经元地址和压缩内核地址提供给内核模块(110)和/或神经元模块(120)以用于处理压缩神经元地址和压缩内核地址。
CN202080028125.9A 2019-04-09 2020-04-06 事件驱动脉冲卷积神经网络 Pending CN114041140A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202311221064.XA CN117094374A (zh) 2019-04-09 2020-04-06 电子电路及内存映射器
CN202311221063.5A CN117151181A (zh) 2019-04-09 2020-04-06 神经形态芯片

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP19168271.5 2019-04-09
EP19168271 2019-04-09
EP19180569.6 2019-06-17
EP19180569 2019-06-17
PCT/EP2020/059798 WO2020207982A1 (en) 2019-04-09 2020-04-06 Event-driven spiking convolutional neural network

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202311221064.XA Division CN117094374A (zh) 2019-04-09 2020-04-06 电子电路及内存映射器
CN202311221063.5A Division CN117151181A (zh) 2019-04-09 2020-04-06 神经形态芯片

Publications (1)

Publication Number Publication Date
CN114041140A true CN114041140A (zh) 2022-02-11

Family

ID=70050138

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202311221064.XA Pending CN117094374A (zh) 2019-04-09 2020-04-06 电子电路及内存映射器
CN202080028125.9A Pending CN114041140A (zh) 2019-04-09 2020-04-06 事件驱动脉冲卷积神经网络
CN202311221063.5A Pending CN117151181A (zh) 2019-04-09 2020-04-06 神经形态芯片

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311221064.XA Pending CN117094374A (zh) 2019-04-09 2020-04-06 电子电路及内存映射器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311221063.5A Pending CN117151181A (zh) 2019-04-09 2020-04-06 神经形态芯片

Country Status (7)

Country Link
US (1) US20220188597A1 (zh)
EP (1) EP3953866A1 (zh)
JP (1) JP2022536579A (zh)
KR (1) KR20220022893A (zh)
CN (3) CN117094374A (zh)
SG (1) SG11202110721XA (zh)
WO (1) WO2020207982A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114372568A (zh) * 2022-03-21 2022-04-19 深圳时识科技有限公司 类脑芯片及电子设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113537449B (zh) * 2020-04-22 2024-02-02 北京灵汐科技有限公司 基于脉冲神经网络的数据处理方法、计算核电路和芯片
US20220156549A1 (en) * 2020-11-18 2022-05-19 Micron Technology, Inc. Search and match operations in spiking neural networks
KR20230134548A (ko) 2021-04-19 2023-09-21 청두 신센스 테크놀로지 씨오., 엘티디. 인터페이스 시스템을 갖는 이벤트 구동 집적 회로
CN113516676B (zh) * 2021-09-14 2021-12-28 成都时识科技有限公司 角点检测方法、脉冲神经网络处理器、芯片及电子产品

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977583B2 (en) 2012-03-29 2015-03-10 International Business Machines Corporation Synaptic, dendritic, somatic, and axonal plasticity in a network of neural cores using a plastic multi-stage crossbar switching
FR3025344B1 (fr) * 2014-08-28 2017-11-24 Commissariat Energie Atomique Reseau de neurones convolutionnels
US10387770B2 (en) * 2015-06-10 2019-08-20 Samsung Electronics Co., Ltd. Spiking neural network with reduced memory access and reduced in-network bandwidth consumption

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114372568A (zh) * 2022-03-21 2022-04-19 深圳时识科技有限公司 类脑芯片及电子设备

Also Published As

Publication number Publication date
JP2022536579A (ja) 2022-08-18
EP3953866A1 (en) 2022-02-16
CN117151181A (zh) 2023-12-01
CN117094374A (zh) 2023-11-21
KR20220022893A (ko) 2022-02-28
US20220188597A1 (en) 2022-06-16
WO2020207982A1 (en) 2020-10-15
SG11202110721XA (en) 2021-10-28

Similar Documents

Publication Publication Date Title
CN114041140A (zh) 事件驱动脉冲卷积神经网络
JP7382925B2 (ja) ニューラルネットワークアクセラレーションのための機械学習ランタイムライブラリ
US20200234124A1 (en) Winograd transform convolution operations for neural networks
US9411726B2 (en) Low power computation architecture
US20190303741A1 (en) Defect resistant designs for location-sensitive neural network processor arrays
CN110296717B (zh) 一种事件数据流的处理方法及计算设备
US11562046B2 (en) Neural network processor using dyadic weight matrix and operation method thereof
US10362267B2 (en) Image processing apparatus and electronic device including the same
CN114970803A (zh) 对数***中的机器学习训练
US20220113944A1 (en) Arithmetic processing device
CN111914989A (zh) 神经网络***及其学习方法、以及迁移学习方法
CN110889498A (zh) 集成电路、神经网络处理器与装置以及数据处理方法
US11775809B2 (en) Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium
JP7308674B2 (ja) 演算処理装置及び演算処理方法
JP7299770B2 (ja) 演算処理装置及び演算処理方法
US11704535B1 (en) Hardware architecture for a neural network accelerator
US20220188612A1 (en) Npu device performing convolution operation based on the number of channels and operating method thereof
KR20200062014A (ko) 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법
WO2020155044A1 (zh) 卷积计算的装置、方法、处理器和可移动设备
KR20200129957A (ko) 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템
CN115242990A (zh) 图像传感器模块和操作图像传感器模块的方法
TWI834729B (zh) 神經網路處理器及其卷積操作方法
US20220345592A1 (en) Image sensor module, image processing system, and operating method of image sensor module
Weems Jr Real-time considerations in the design of the image understanding architecture
CN113408710A (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