处理脉冲神经网络中的信号饱和的制作方法

文档序号:15616498发布日期:2018-10-09 21:31阅读:245来源:国知局

本公开涉及神经网络。具体地,本公开涉及脉冲神经网络。

附图说明

图1是简图,展示了根据各个实施例的脉冲神经网络中的多个神经元。

图2、图3、图4、和图5是流程图,展示了根据各个实施例的用于处理脉冲神经网络中的信号饱和的方法。

图6是框图,展示了根据各个实施例的适合用于实践本公开的各方面的示例计算设备。

图7是框图,展示了根据各个实施例的具有用于实践参照图1至图6所描述的方法的指令的存储介质。

具体实施方式

在许多应用中,可能期望脉冲神经元的输出能够准确地反映其输入和扇入权重的点积。实现这种脉冲神经网络可能是困难的,因为脉冲神经元在单位时间窗口内就其可以产生的脉冲数量而言可能达到饱和。

如本文中所使用的,脉冲神经网络是由脉冲神经元和突触组成的网络。脉冲神经元可以是不在每个传播周期都激发而是仅当膜电势达到特定值时才激发的神经元。膜电势是生物细胞的内部与外部之间的电势之间的差。

在一些实施例中,脉冲神经元可以利用被称为节点的软件对象来实现。突触可以利用被称为链路的软件对象来实现。本文中所描述的示例还可以利用神经处理器被实现。

一种用于处理脉冲神经元的饱和的手段是前馈抑制网络。然而,前馈抑制网络可以利用o(n2)个突触(例如,神经元之间的连接)和2n个神经元。突触的状态维护可能是昂贵的(例如,成本和/或时间)硬件事件。替代方案是增加时间步长的数量并使用更大的膜时间常数,但这可能与硬件所允许的精度相冲突。

在本文中所描述的多个实施例中,提出了一种网络重构机制。实现网络重构机制的多个实施例可以结合缩放和深度来避免饱和效应。网络重构机制可以利用o(n.logn)个神经元(例如,节点)和o(n.logn)个附加突触(例如,链路)来实现。突触状态的数量(其对于硬件芯片维护是昂贵的)使得网络重组机制具有吸引力。突触的状态可以影响相关联神经元之间的信号传输。网络重构机制允许脉冲神经网络的设计者在各种设计常数之间作出权衡以便完成任务。

可以通过引入神经元和突触(例如,o(n.logn)个神经元和/或o(n.logn)个突触)的中间层来重构原始网络,以使得适当地管理脉冲神经网络的输出神经元处的扇入从而使输出神经元保持在低于神经元的饱和水平的状况。如本文中所使用的,饱和水平可以指神经元的激发率的饱和。如果神经元在给定时间窗口内接收到数量大于输入脉冲阈值的输入脉冲,则所述神经元饱和。当饱和时,神经元随其膜电势达到阈值(例如,膜电势阈值)而激发。不会以任何有意义的方式使用超过使神经元饱和所需的任何另外的输入脉冲,并且其所承载的信息简单地被丢弃。

与其他已知技术相比(如前馈抑制),重构网络所需的多个附加突触较少。多个实施例还描述了用于确定在给定网络的其他控制参数的情况下需要多少附加神经元层(例如,以及因此新的最大扇入尺寸)的导引方程。所述导引方程利用多个参数来获得所需结果。

一种可能的方式是通对层响应进行归一化来处理饱和。对层响应进行归一化包括:对层的集体响应进行求和,并且然后将每个单个响应除以这个总和,以使得总响应维持在特定水平。然而,这种机制很难以单个神经元范围内的硬件来实现,因为求和过程包括从神经元池的每个元素收集响应。因此,这个过程无法在单个神经元的活动内“本地”实现,并且神经元被授权以非常非本地的方式进行通信。

本文中所描述的多个实施例是完全本地的并且引入o(nlogn)个附加突触,这明显优于需要o(n2)个附加突触的前馈抑制技术的替代方案。

当神经元的输入扇入大于阈值时,可以通过引入附加神经元(例如,中间神经元)来分解扇入,所述附加神经元中的每一个吸收原始输入扇入的一部分。如本文中所使用的,扇入还可以被称为扇入宽度。扇入可以描述可以连接至神经元的输入的数量。附加神经元可以组合以形成中间层。附加神经元中的一些或全部可以馈送到原始神经元中。中间层的数量可以基于最初制作了多少分区以及允许多少最大扇入来选择。

在讨论神经网络的重构时,以下变量可能是相关的。令变量t表示大量脉冲被合成的时间窗口。变量x可以限定输入信号。变量y可以限定输出。变量n可以表示最大允许扇入宽度,其可以是可以利用期望深度和原始扇入来调整的控制变量。变量τ可以是假设膜时间常数在网络上是同质时神经元的膜时间常数。变量δv可以表示膜电压变化的阈值范围,在所述膜电压变化之后生成脉冲。变量w是神经元的权重矩阵。变量λ是对应用(例如,脉冲神经网络)而言可以唯一的比例常数。

神经元的输出可以大致与神经元的扇入权重和神经元的输入之间的点积成比例。为了实现这一点,可以通过引入辅助神经元和突触来重构原始网络。用于获得网络的结构参数的近似导引方程为:

其可以被称为方程1(例如,(1))。方程1可以使λ、n和δv的乘积与一减e的次幂和τ乘以w到l1的大小除以t的乘积相等。

在给定网络神经元的情况下(输出可能由于高扇入和/或高输入脉冲速率而变得饱和),网络可以被重构以使得没有神经元接收多于n的扇入。

重构神经网络可以包括将输入神经元分组成不同的组。不同组中的每个组可以扇入到至少一个新的中间神经元中。中间神经元层还可以被划分成扇入到下一个神经元层的相应组,以此类推。神经网络可以被重构为使得与原始神经网络相比输出神经元的扇入是减少的。

方程1可以推导如下。考虑具有n个扇入连接和输入连接中的每一个都具有速率k的神经元。即在t时间步长的窗口内在每个输入通道上存在个脉冲。给定连接权重的固定集合,可以以输出速率来反映总输入脉冲的总数(例如,输出脉冲~λnr的数量)。

输出响应y是输入神经元的非线性函数。对于简单的合成和激发神经元,输出响应的微分变化可以为任何时间的dy∝g(t)t.w,其中,g(t)是其输入脉冲的导电迹线并且w是输入连接权重。

平均为这里,δv是使得脉冲生成的阈值电压的范围。可能无法获得点积μ=g.w的确切值;脉冲可以是随机的并且因此可以是随机变量。最接近的估计值是对这个随机变量的期望。μ=g.w的点积可以是元素的向量。

e[μ]=e[g.w]。令σt测量输入脉冲的平均导电迹线,然后

这意味着,e[g]=σt1n,其中,1n表示长度为n的全部一个向量。因此,其可以被称为方程(2)(例如,假设+ve权重)。

σt=t可以近似为被称为方程(3)的积分

估计方程(3)中的上述积分并代入方程(2)可以导致方程(1)。

在以下详细描述中,参考形成其一部分并且通过图解示出可以实践的实施例的附图,其中,相同的标号指代相同的部件。应当理解,在不脱离本公开的范围的情况下,可以利用其他实施例并且可以做出结构改变或逻辑改变。因此,以下具体实施方式不应被认为具有限制意义,并且实施例的范围由所附权利要求书及其等效物来限定。

在所附的说明中公开了本公开的方面。可以在不脱离本公开的精神或范围的情况下设计本公开的替代性实施例及其等效物。应注意的是,在附图中由相似的参考号来指代在下文中公开的相似元素。

可以采用对理解所要求保护的主题最有帮助的方式将各个操作依次描述为多个分立的动作或操作。然而,描述的顺序不应被解释为暗示这些操作必需依赖于顺序。特别地,这些操作可以不按所呈现的顺序来执行。可以按照与所描述的实施例不同的顺序来执行所描述的操作。可以执行和/或描述各种附加操作。可以在附加实施例中省略操作。

出于本公开的目的,短语“a和/或b”意指a、b、或者a和b。出于本公开的目的,短语“a、b和/或c”意指a、b、c、a和b、a和c、b和c或者a、b和c。

本说明可能使用短语“在实施例中(inanembodiment)”或“在实施例中(inembodiments)”,这些短语可以各自是指相同或不同的实施例中的一个或多个。此外,如关于本公开的实施例所使用的术语“包括(comprising)”、“包括(including)”、“具有(having)”等是同义的。

图1是简图,展示了根据各个实施例的脉冲神经网络中的多个神经元。图1包括原始脉冲神经网络100-1和重构脉冲神经网络100-2,通常分别被称为网络100-1和网络100-2。

网络100-1可以是在网络100-1上运行网络重构机制之前的原始网络。网络100-2可以是网络重构机制的结果。即网络100-1可以变换成网络100-2。在一些实施例中,网络100-2可以独立于网络100-1而生成。即网络100-2可以是在无需重配置不同网络(例如,网络100-1)的情况下利用方程(1)配置的原始网络。

网络100-1可以包括输入神经元102-1、102-2、102-3和102-4,被称为输入神经元102。网络100-1还可以包括输出神经元104-1、104-2、104-3和104-4,被称为输出神经元104。在一些实施例中,输入神经元102和/或输出神经元104可以包括整个网络100-1。在一些实施例中,输入神经元102和/或输出神经元104可以包括网络100-1的一部分。即整个网络100-1可以被重构或者仅网络100-1的一部分可以被重构。

输入神经元102中的每一个可以利用多个突触耦合至输出神经元104。例如,输入神经元102中的每一个可以耦合至输出神经元104中的每一个。在其他实施例中,输入神经元102中的每一个可以耦合至输出神经元104的一部分。

在网络100-1中,输出神经元104中的每一个可以具有四个输入扇入连接。这四个输入扇入连接可以大于扇入连接的阈值数,这可以对输出神经元104的饱和做出贡献。如此,网络100-1的重构可以旨在减少到网络100-1的输出神经元104的输入扇入连接。

为了重构网络100-1,输入神经元102可以与输出神经元104解耦。中间神经元106-1、106-2、106-3、106-4、106-5、106-6、106-7和106-8(被称为中间神经元106)的中间层可以添加至网络100-2。尽管提供了单个中间层,但网络100-1可以被重配置为包括多个中间层。

聚焦于网络100-2,网络100-2的输入神经元102可以是与网络100-1的输入神经元102相同的神经元。网络100-2的输出神经元104可以是与网络100-1的输出神经元104相同的神经元。

在重构网络100-1时,可以对网络100-2的输入神经元102-1进行分组。例如,输入神经元102-1和102-2被分组到第一组中,并且输入神经元102-3和102-4被分组到第二组中。

也可以对中间神经元106进行分组。例如,中间神经元106-1、106-2、106-3和106-4被分组到第三组中,并且中间神经元106-5、106-6、106-7和106-8被分组到第四组中。所述第一组可以对应于所述第三组,并且所述第二组可以对应于所述第四组。

在一些实施例中,第一组中的输入神经元102-1和102-2中的每一个可以耦合至第三组中的中间神经元106-1、106-2、106-3和106-4中的每一个。第二组中的输入神经元102-3和102-4可以耦合至第四组中的中间神经元106-5、106-6、106-7和106-8中的每一个。中间神经元106中的每一个可以具有两个输入扇入连接。

中间神经元106中的每一个可以耦合至来自输出神经元104的相应神经元。例如,中间神经元106-1和106-5耦合至输出神经元104-1。中间神经元106-2和106-6耦合至输出神经元104-2。中间神经元106-3和106-7耦合至输出神经元104-3。中间神经元106-4和106-8耦合至输出神经元104-4。如此,输出神经元104中的每一个可以具有将中间神经元106耦合至输出神经元104的两个输入扇入连接。如此,网络100-2中的输出神经元104可以具有少于网络100-1中的输出神经元104的输入扇入连接。

在一些实施例中,中间神经元106的分组中的每个组可以具有与输出神经元104的数量相同的神经元数量。此外,网络100-2中的中间神经元106的输入扇入连接可以等于网络100-1中的输出神经元104的输入扇入连接。参照可能与网络100-1中的输出神经元104相关联的权重,所述权重可以在网络100-2的输出神经元104中被重新实现。

图2是流程图,展示了根据各个实施例的用于处理脉冲神经网络中的信号饱和的方法200。方法200包括:确定从多个输入神经元到多个输出神经元中的每个输出神经元的第一输入扇入大于阈值270;基于确定所述第一输入扇入大于所述阈值而生成多个中间神经元272;以及将所述多个中间神经元耦合至所述多个输入神经元和所述多个输出神经元274,其中,所述多个中间神经元中的每一个都具有小于所述第一输入扇入的第二输入扇入,并且所述多个输出神经元中的每一个都具有小于所述第一输入扇入的第三输入扇入。

在一些实施例中,方法200可以经由神经处理器来实现。将所述多个中间神经元耦合至所述多个输入神经元和所述多个输出神经元可以进一步包括耦合所述多个中间神经元以使得所述第二输入扇入和所述第三输入扇入之和等于所述第一输入扇入。将所述多个中间神经元耦合至所述多个输入神经元和所述多个输出神经元可以进一步包括耦合所述多个中间神经元以使得所述第二输入扇入小于所述阈值。

将所述多个中间神经元耦合至所述多个输入神经元和所述多个输出神经元进一步包括耦合所述多个中间神经元以使得所述第三输入扇入小于所述阈值,其中,所述阈值可以表示所述多个输出神经元的饱和点,并且其中,所述饱和点可以基于所述多个输出神经元的扇入和所述多个输出神经元的多个输入脉冲速率。

图3是流程图,展示了根据各个实施例的用于处理脉冲神经网络中的信号饱和的方法300。方法300包括:将多个输入神经元划分成第一多个组370;将多个中间神经元划分成第二多个组372,其中,所述第二多个组中的每个组与所述第一多个组中的至少一个组相对应;将所述第一多个组的每个组中的所述多个输入神经元耦合至来自所述第二多个组的相应组中的所述多个中间神经元374;将所述第二多个组的每个组中的所述多个中间神经元耦合至多个输出神经元376;以及通过所述多个输入神经元、所述多个中间神经元和所述多个输出神经元来处理到脉冲神经网络的多个输入378。

生成被划分成所述第二多个组的所述多个中间神经元可以进一步包括将所述多个中间神经元中的每一个分配至所述第二多个组中的不同神经元。所述第二多个组的每个组中的神经元的数量可以等于所述多个输出神经元的数量。所述第二多个组的每个组中的神经元的数量可以少于所述多个输出神经元的数量。

将所述多个输入神经元划分成所述第一多个组可以进一步包括将所述多个输入神经元中的每一个分配至所述第一多个组中的不同神经元。所述第一多个组的每个组中的神经元的数量可以少于所述多个中间神经元的数量。所述第一多个组的每个组中的神经元的数量可以是所述多个中间神经元的数量的一半。

图4是流程图,展示了根据各个实施例的用于处理脉冲神经网络中的信号饱和的方法400。方法400包括:在脉冲神经网络中将多个输入神经元与多个输出神经元解耦470;将所述多个输入神经元分组成第一多个组472;生成被划分成第二多个组的多个中间神经元474,其中,所述第一多个组中的每个组与来自所述第二多个组的不同组相对应;将在所述第一多个组的每个组中的来自所述多个输入神经元的每个神经元耦合至来自所述第二多个组的相应组中的多个相应神经元476;以及将所述第二多个组的每个组中的来自所述多个中间神经元的每个神经元耦合至来自所述多个输出神经元的相应神经元478。

生成被划分成所述第二多个组的所述多个中间神经元可以进一步包括基于神经元的膜时间常数、所述多个中间神经元、所述中间神经元的层数、和所述多个输出神经元来确定所述多个中间神经元的数量。生成被划分成所述第二多个组的所述多个中间神经元可以进一步包括基于使神经元产生脉冲的所述阈值电压、所述多个中间神经元、和所述多个输出神经元来确定所述多个中间神经元的数量。

生成被划分成所述第二多个组的所述多个中间神经元可以进一步包括基于所述多个输出神经元的最大允许扇入宽度来确定所述多个中间神经元的数量。生成被划分成所述第二多个组的所述多个中间神经元可以进一步包括基于与所述多个中间神经元相关联的权重矩阵来确定所述多个中间神经元的数量。生成被划分成所述第二多个组的所述多个中间神经元可以进一步包括:基于膜电压变化的阈值范围来确定所述多个中间神经元的数量,在所述膜电压变化之后,在所述多个输出神经元中生成脉冲。所述多个输出神经元的输出可以与所述多个输出神经元的扇入权重和所述多个输出神经元的输入的点积成比例。所述多个输出神经元的输出可以处于所述多个输出神经元的扇入权重和所述多个输出神经元的输入的点积的阈值内。

图5是流程图,展示了根据各个实施例的用于处理脉冲神经网络中的信号饱和的方法500。方法500包括:通过被划分成第一多个组的所述多个输入神经元来处理多个输入以便在所述多个输入神经元中生成第一多个脉冲570;以及将所述第一多个脉冲传送至被划分成第二多个组的所述多个中间神经元572,其中,所述第一多个组中的每个组向来自所述第二多个组的不同组提供脉冲。方法500还包括:通过所述多个中间神经元来处理所述第一多个脉冲以便生成第二多个脉冲574;将所述第二多个脉冲传送至所述多个输出神经元576,其中,来自所述第二多个组中的每个组的每个神经元向所述多个输出神经元之一提供脉冲;以及通过所述多个输出神经元来处理所述第二多个脉冲以便生成第三多个脉冲578。

所述多个输入神经元包括所述脉冲神经网络的第一层,所述多个中间神经元包括所述脉冲神经网络的第二层,并且所述多个输出神经元包括所述脉冲神经网络的第三层。在此示例中,所述第二多个组的每个组中的神经元的数量等于所述多个输出神经元中的神经元数量。

所述第一多个脉冲可以小于所述第二多个脉冲,并且所述第二多个脉冲可以小于所述第三多个脉冲。在一些示例中,生成所述第一多个脉冲的速率可以大于生成所述第二多个脉冲的速率。生成所述第三多个脉冲的速率可以小于生成所述第二多个脉冲的速率。

在一些示例中,所述第一多个组可以包括两个组,并且所述第二多个组也可以包括两个组。所述第一多个组中的每个组可以包括两个神经元。所述第二多个组中的每个组可以包括四个神经元。

来自所述第一多个组的第一组中的神经元可以向来自所述第二多个组的第一组中的神经元提供脉冲。来自所述第二多个组的第二组中的神经元可以向输出神经元提供脉冲。

图6展示了根据各个实施例的适合用于实践本公开的各方面的计算设备600的示例。如所示出的,计算设备600可以包括一个或多个处理器602(每个处理器具有一个或多个处理器核)、系统存储器604、和存储器控制器603。系统存储器604可以是任何易失性或非易失性存储器。另外,计算设备600可以包括大容量存储设备606。大容量存储设备606的示例可以包括但不限于磁带驱动器、硬盘驱动器、致密盘只读存储器(cd-rom)等。进一步地,计算设备600可以包括输入/输出设备608(诸如显示器、键盘、光标控制设备等)和通信接口610(诸如无线和/或有线通信网络接口卡、调制解调器等)。所述元件可以经由可以表示一条或多条总线的系统总线612耦合至彼此。在多条总线的情况下,它们可由一个或多个总线桥接器(未示出)桥接。

系统存储器604和大容量存储设备606可以用于存储实现被称为计算逻辑622的多个操作的编程指令的工作副本和永久副本。存储器控制器603可以包括内部存储器,所述内部存储器用于存储实现与重构脉冲神经网络相关联的多个操作的编程指令的工作副本和永久副本。计算逻辑622可以由(多个)处理器602所支持的汇编指令或可以编译成这类指令的高级语言(如例如,c)来实现。

元件610和612的数量、能力和/或容量可以根据计算设备600是用作移动设备(诸如可穿戴设备、智能电话、计算机平板、膝上型计算机等)还是静止设备(诸如,台式计算机、服务器、游戏控制台、机顶盒、信息娱乐控制台等)而发生改变。否则,元件610和612的构成是已知的,并因此将不再进一步描述。

如本领域技术人员将认识到的,本公开可以被具体化为方法或计算机程序产品。相应地,除体现在如之前所描述的硬件之外,本公开可以采取完全软件实施例(包括固件、驻留软件、微代码等)或结合硬件与软件方面的实施例的形式,所有所述形式在本文中一般都称为“电路”、“模块”或“系统”。此外,本公开可以采取体现在任何有形的或非暂态表达介质(所述介质具有在介质中具体化的计算机可用程序代码)中的计算机程序产品的形式。

图7展示了示例非暂态计算机可读存储介质,所述示例非暂态计算机可读存储介质可以适合用于存储响应于装置对指令的执行而使所述装置实践本公开的所选方面的所述指令。如所示出的,非暂态计算机可读存储介质702可以包括多个编程指令704。编程指令704可以被配置成使得设备(例如,图6中的计算设备600)能够响应于编程指令704的执行而实现图1中的经重构网络100-1(的多个方面),如较早所描述的。在替代性实施例中,编程指令704反而可以布置在多个非暂态计算机可读存储介质702上。在又其他实施例中,编程指令704可以布置在多个非暂态计算机可读存储介质702(比如信号)上。

可以利用一种或多种计算机可用或计算机可读介质的任意组合。计算机可用或计算机可读介质可以是例如但不限于电的、磁的、光的、电磁的、红外线的或半导体系统、设备、装置或传播介质。计算机可读介质的更具体的示例(非穷举列表)将包括以下各项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦写可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、诸如那些支持互联网或内联网的传输介质或磁存储设备。注意,计算机可使用或者计算机可读介质甚至可以是在其上印刷了程序的纸或另一种适合的介质,因为程序可以经由例如对纸或者其他介质进行光学扫描而被电子地捕捉,然后如果必要的话,被编译、被解释或被以适合的方式进行处理,然后被存储在计算机存储器内。在本文档的上下文中,计算机可使用或者计算机可读介质可以是任何包含、存储、传达、传播或传输由指令执行系统、装置或装置使用或者与其结合使用的程序的介质。计算机可使用介质可以包括在基带中或者作为载波的一部分体现在其中的计算机可使用程序代码的所传播的数据信号。计算机可用程序代码可以使用任何适当的介质(包括但不限于无线、电线、光缆、rf等)进行传输。

用于执行本公开的操作的计算机程序代码可以以包括面向对象的编程语言(比如java、smalltalk,c++等)以及常规的过程式编程语言(比如“c”编程语言或类似的编程语言)的一种或多种编程语言的任何组合来编写。程序代码可以完全地在用户的计算机上执行、部分地在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者,可以(例如,使用互联网服务提供商来通过互联网)连接到外部计算机。

参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本公开。应当理解的是,可以由计算机程序指令来实现流程图和/或框图的每个框以及流程图和/或框图中的框的组合。这些计算机程序指令可提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生一种机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现一个或多个流程图和/或框图框中指定的功能/动作的手段。

这些计算机程序指令还可被存储在计算机可读介质内,所述计算机可读介质可以指挥计算机或其他可编程的数据处理装置,以便以特定方式发挥作用,使得存储在计算机可读介质内的指令产生包括实现流程图和/或方框图方框或多个方框中指定的功能/动作的指令手段的制造品。

计算机程序指令也可加载到计算机或其他可编程数据处理设备上,以促使一系列操作步骤在所述计算机或其他可编程设备上执行,从而产生计算机实现的过程,使得在所述计算机或其他可编程设备上执行的这些指令能够提供用于实现一个或多个流程图和/或框图框中指定的功能/动作的过程。

附图中的流程图和框图展示了根据本公开的各实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个方框都可以表示模块、片段或代码的一部分,其包含用于实现特定逻辑功能的一条或多条可执行指令。还应当指出的是,在一些替代实现中,框中标明的功能可以不按图中标记的顺序发生。例如,取决于所涉及的功能,连续示出的两个框事实上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将指出的是,可以通过执行特定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现框图和/或流程图的每个框以及框图和/或流程图中的框的组合。

本文所使用的术语只是为了描述特定实施例的目的,而不是要对本公开做出限制。本文所使用的单数形式的“一个(a)”、“一个(an)”和“所述(the)”也旨在包括多数形式,除非上下文另有清楚的规定。将进一步理解的是,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,其指定陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组的存在或添加。

实施例可被实现为计算机进程、计算系统或者制品(比如计算机可读介质的计算机程序产品)。计算机程序产品可以是可由计算机系统读取并编码了用于执行计算机进程的计算机程序指令的计算机存储介质。

权利要求中的所有装置或步骤加功能元件的相应的结构、材料、动作和等同物旨在包括用于结合在权利要求中特意声明的其他元件而执行功能的任何结构、材料或动作。已经出于示例的目的而呈现本公开内容的描述,但是该描述并不旨在穷举公开或者使公开内容限于所公开的形式。对于本技术领域的普通技术人员来说,在不偏离本公开的范围和精神的情况下,许多修改和变更都是显而易见的。实施例的选择和描述是为了最佳地解释本公开的原理和实际应用,并且当适合于所构想的特定使用时,使得所属技术领域的其他普通技术人员能够理解本公开的具有各种经修改各种实施例。

返回参照图6,对于一个实施例,处理器602中的至少一个可以与存储器一起被封装,如较早所描述的。对于一个实施例,处理器602中的至少一个可以与存储器一起封装以形成系统级封装(sip)。对于一个实施例,处理器602中的至少一个可以与存储器集成在同一裸片上。对于一个实施例,处理器602中的至少一个可以与存储器一起封装以形成soc。对于至少一个实施例,可以在(但不限于)可穿戴设备、智能电话或计算平板机中利用soc。因此,已描述的本公开的各示例性实施例包括但不限于:

示例1是一种用于生成脉冲神经网络的设备的装置。所述设备包括电子存储器,所述电子存储器用于存储脉冲神经网络的各个输入神经元和各个输出神经元。所述设备包括一个或多个处理器,所述一个或多个处理器被设计用于:确定从所述各个输入神经元到所述各个输出神经元中的每个输出神经元的第一输入扇入大于阈值;并且基于确定所述第一输入扇入大于所述阈值而生成各个中间神经元。所述设备包括一个或多个处理器,所述一个或多个处理器被设计用于:将所述各个中间神经元附接至所述各个输入神经元和所述各个输出神经元,其中,所述各个中间神经元中的每一个都具有小于所述第一输入扇入的第二输入扇入,并且所述各个输出神经元中的每一个都具有小于所述第一输入扇入的第三输入扇入。

示例2是如示例1所述的装置,其中,所述电子存储器是神经处理器的一部分。

示例3是如示例1所述的装置,其中,被设计用于将所述各个中间神经元附接至所述各个输入神经元和所述各个输出神经元的所述一个或多个处理器进一步被设计用于附接所述各个中间神经元,以使得所述第二输入扇入和所述第三输入扇入之和等于所述第一输入扇入。

示例4是如示例1所述的装置,其中,被设计用于将所述各个中间神经元附接至所述各个输入神经元和所述各个输出神经元的所述一个或多个处理器进一步被设计用于附接所述各个中间神经元,以使得所述第二输入扇入小于所述阈值。

示例5是如示例1所述的装置,其中,被设计用于将所述各个中间神经元附接至所述各个输入神经元和所述各个输出神经元的所述一个或多个处理器进一步被设计用于附接所述各个中间神经元,以使得所述第三输入扇入小于所述阈值。

示例6是如示例1所述的装置,其中,所述阈值表示所述各个输出神经元的饱和点,并且其中,所述饱和点基于所述各个输出神经元的扇入和所述各个输出神经元的各个输入脉冲速率。

示例7是一种计算机可读存储介质。所述计算机可读存储介质具有存储在其上的指令,所述指令当由计算设备实现时使所述计算设备:将各个输入神经元划分成第一各个组并将各个中间神经元划分成第二各个组,其中,所述第二各个组中的每个组与所述第一各个组中的至少一个组相对应。所述计算机可读存储介质具有存储在其上的指令,所述指令当由计算设备实现时使所述计算设备:将所述第一各个组的每个组中的所述各个输入神经元附接至来自所述第二各个组的相应组中的所述各个中间神经元,并且将所述第二各个组的每个组中的所述中间神经元附接至各个输出神经元。所述计算机可读存储介质具有存储在其上的指令,所述指令当由计算设备实现时使所述计算设备:通过所述各个输入神经元、所述各个中间神经元和所述各个输出神经元来处理到脉冲神经网络的各个输入。

示例8是如示例7所述的计算机可读存储介质,其中,用于生成被划分成所述第二各个组的所述各个中间神经元的所述指令进一步包括用于将所述各个中间神经元中的每一个分配至所述第二各个组中的不同的一个组的指令。

示例9是如示例8所述的计算机可读存储介质,其中,所述第二各个组的每个组中的神经元的数量等于所述各个输出神经元的数量。

示例10是如示例8所述的计算机可读存储介质,其中,所述第二各个组的每个组中的神经元的数量少于所述各个输出神经元的数量。

示例11是如示例7所述的计算机可读存储介质,其中,用于将所述各个输入神经元划分成所述第一各个组的所述指令进一步包括用于将所述各个输入神经元中的每一个分配至所述第一各个组中的不同的一个组的指令。

示例12是如示例11所述的计算机可读存储介质,其中,所述第一各个组的每个组中的神经元的数量少于所述各个中间神经元的数量。

示例13是如示例11所述的计算机可读存储介质,其中,所述第一各个组的每个组中的神经元的数量是所述各个中间神经元的数量的一半。

示例14是一种用于生成脉冲神经网络的方法。所述方法包括:在脉冲神经元网络中将各个输入神经元与各个输出神经元解耦;将所述各个输入神经元分组成第一各个组;以及生成被划分成第二各个组的各个中间神经元,其中,所述第一各个组中的每个组与来自所述第二各个组的不同组相对应。所述方法包括:将所述第一各个组的每个组中的来自所述各个输入神经元的每个神经元附接至来自所述第二各个组的相应组中的各个相应神经元,并且将所述第二各个组的每个组中的来自所述各个中间神经元的每个神经元附接至来自所述各个输出神经元的相应神经元。

示例15是如示例14所述的方法,其中,生成被划分成所述第二各个组的所述各个中间神经元进一步包括:基于神经元的膜时间常数、所述各个中间神经元、所述中间神经元的层数、和所述各个输出神经元来确定所述各个中间神经元的数量。

示例16是如示例14所述的方法,其中,生成被划分成所述第二各个组的所述各个中间神经元进一步包括:基于神经元产生脉冲的所述阈值电压、所述各个中间神经元、和所述各个输出神经元来确定所述各个中间神经元的数量。

示例17是如示例14所述的方法,其中,生成被划分成所述第二各个组的所述各个中间神经元进一步包括:基于所述各个输出神经元的最大允许扇入宽度来确定所述各个中间神经元的数量。

示例18是如示例14所述的方法,其中,生成被划分成所述第二各个组的所述各个中间神经元进一步包括:基于与所述各个中间神经元相关联的权重矩阵来确定所述各个中间神经元的数量。

示例19是如示例14所述的方法,其中,生成被划分成所述第二各个组的所述各个中间神经元进一步包括:基于膜电压变化的阈值范围来确定所述各个中间神经元的数量,在所述膜电压变化之后,脉冲在所述各个输出神经元中被生成。

示例20是如示例14所述的方法,其中,所述各个输出神经元的输出与所述各个输出神经元的扇入权重和所述各个输出神经元的输入的点积成比例。

示例21是如示例14所述的方法,其中,所述各个输出神经元的输出在所述各个输出神经元的扇入权重和所述各个输出神经元的输入的点积的阈值内。

示例22是一种用于通过脉冲神经网络处理数据的设备的装置。所述装置包括电子存储器,所述电子存储器用于存储脉冲神经网络的各个输入神经元、各个中间神经元、和各个输出神经元。所述装置包括一个或多个处理器,所述一个或多个处理器被设计用于:通过被划分成第一各个组的所述各个输入神经元来处理各个输入以便在所述各个输入神经元中生成第一各个脉冲;并且将所述第一各个脉冲传送至被划分成第二各个组的所述各个中间神经元,其中,所述第一各个组中的每个组向来自所述第二各个组的不同组提供脉冲。所述装置包括一个或多个处理器,所述一个或多个处理器被设计用于:通过所述各个中间神经元来处理所述第一各个脉冲以便生成第二各个脉冲;将所述第二各个脉冲传送至所述各个输出神经元,其中,来自所述第二各个组中的每个组的每个神经元向所述各个输出神经元之一提供脉冲;以及通过所述各个输出神经元来处理所述第二各个脉冲以便生成第三各个脉冲。

示例23是如示例22所述的装置,其中,所述各个输入神经元包括所述脉冲神经网络的第一层,所述各个中间神经元包括所述脉冲神经网络的第二层,并且所述各个输出神经元包括所述脉冲神经网络的第三层。

示例24是如示例22所述的装置,其中,所述第二各个组的每个组中的神经元的数量等于所述各个输出神经元的神经元数量。

示例25是如示例22所述的装置,其中,述第一各个脉冲小于所述第二各个脉冲,并且所述第二各个脉冲小于所述第三各个脉冲。

示例26是一种用于生成脉冲神经网络的方法。所述方法包括:确定从脉冲神经网络的各个输入神经元到所述脉冲神经网络的各个输出神经元中的每个输出神经元的第一输入扇入大于阈值;以及基于确定所述第一输入扇入大于所述阈值而生成各个中间神经元。所述方法包括:将所述各个中间神经元附接至所述各个输入神经元和所述各个输出神经元,其中,所述各个中间神经元中的每一个都具有小于所述第一输入扇入的第二输入扇入,并且所述各个输出神经元中的每一个都具有小于所述第一输入扇入的第三输入扇入。

示例27是如示例26所述的方法,其中,所述电子存储器是神经处理器的一部分。

示例28是如示例26所述的方法,其中,将所述各个中间神经元附接至所述各个输入神经元和所述各个输出神经元进一步包括附接所述各个中间神经元,以使得所述第二输入扇入和所述第三输入扇入之和等于所述第一输入扇入。

示例29是如示例26所述的方法,其中,将所述各个中间神经元附接至所述各个输入神经元和所述各个输出神经元进一步包括附接所述各个中间神经元以使得所述第二输入扇入小于所述阈值。

示例30是如示例26所述的方法,其中,将所述各个中间神经元附接至所述各个输入神经元和所述各个输出神经元进一步包括附接所述各个中间神经元以使得所述第三输入扇入小于所述阈值。

示例31是如示例26所述的方法,其中,所述阈值表示所述各个输出神经元的饱和点,并且其中,所述饱和点基于所述各个输出神经元的扇入和所述各个输出神经元的各个输入脉冲速率。

示例32是一种方法。所述方法包括:将各个输入神经元划分成第一各个组;将各个中间神经元划分成第二各个组,其中,所述第二各个组中的每个组与所述第一各个组中的至少一个组相对应;以及将所述第一各个组的每个组中的所述各个输入神经元附接至来自所述第二各个组的相应组中的所述各个中间神经元。所述方法包括:将所述第二各个组的每个组中的所述各个中间神经元附接至各个输出神经元;以及通过所述各个输入神经元、所述各个中间神经元和所述各个输出神经元来处理到脉冲神经网络的各个输入。

示例33是如示例32所述的方法,其中,用于生成被划分成所述第二各个组的所述各个中间神经元的所述指令进一步包括用于将所述各个中间神经元中的每一个分配至所述第二各个组中的不同的一个组的指令。

示例34是如示例33所述的方法,其中,所述第二各个组的每个组中的神经元的数量等于所述各个输出神经元的数量。

示例35是如示例33所述的方法,其中,所述第二各个组的每个组中的神经元的数量少于所述各个输出神经元的数量。

示例36是如示例32所述的方法,其中,用于将所述各个输入神经元划分成所述第一各个组的所述指令进一步包括用于将所述各个输入神经元中的每一个分配至所述第一各个组中的不同的一个组的指令。

示例37是如示例36所述的方法,其中,所述第一各个组的每个组中的神经元的数量少于所述各个中间神经元的数量。

示例38是如示例36所述的方法,其中,所述第一各个组的每个组中的神经元的数量是所述各个中间神经元的数量的一半。

示例39是一种方法。所述方法包括:通过被划分成第一各个组的各个输入神经元来处理各个输入以便在所述各个输入神经元中生成第一各个脉冲;以及将所述第一各个脉冲传送至被划分成第二各个组的各个中间神经元,其中,所述第一各个组中的每个组向来自所述第二各个组的不同组提供脉冲。所述方法包括:通过所述各个中间神经元来处理所述第一各个脉冲以便生成第二各个脉冲;以及将所述第二各个脉冲传送至各个输出神经元,其中,来自所述第二各个组中的每个组的每个神经元向所述各个输出神经元之一提供脉冲。所述方法包括:通过所述各个输出神经元来处理所述第二各个脉冲以便生成第三各个脉冲。

示例40是如示例39所述的方法,其中,所述各个输入神经元包括所述脉冲神经网络的第一层,所述各个中间神经元包括所述脉冲神经网络的第二层,并且所述各个输出神经元包括所述脉冲神经网络的第三层。

示例41是如示例39所述的方法,其中,所述第二各个组的每个组中的神经元的数量等于所述各个输出神经元的神经元数量。

示例42是如示例39所述的方法,其中,所述第一各个脉冲小于所述第二各个脉冲,并且所述第二各个脉冲小于所述第三各个脉冲。

示例43是一种装置,所述装置包括用于执行如示例14至21和26至42中任一项所例示的方法的方式。

示例44是一种用于执行如示例14至21和26至42中任一项所例示的方法的方式。

如本文使用的,术语“模块”可以指代以下各项、是以下各项的一部分或包括以下各项:专用集成电路(asic)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路和/或提供所描述的功能的其他适合部件。

对于本领域技术人员将明显的是,在不脱离本发明的基本原理的情况下,可以对上述实施例的细节进行许多改变。因此,本发明的范围应当仅由以下权利要求书确定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1