用于执行人工神经网络自学习运算的装置和方法与流程

文档序号:12864236阅读:153来源:国知局
用于执行人工神经网络自学习运算的装置和方法与流程

本发明涉及人工神经网络技术,具体地涉及一种用于执行人工神经网络自学习运算的装置和方法。



背景技术:

多层人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。

典型的多层人工神经网络训练方法为反向传播(bp)算法。此方法是监督学习的代表类型,在训练过程中需要大量的带标签的训练样本,然而样本的收集所需的成本代价很高。同时,此方法的训练过程中,误差校正信号随着传播层数的增加而减小,训练容易收敛于局部最小值而且收敛速度较慢。因此,先采用收敛速度快且不需带标签训练样本的自学习算法对网络参数预训练,然后再采用反向传播训练进行微调多层神经网络成为一个新的热点。其中,作为预训练的自学习运算尤为重要。

一种支持多层人工神经网络自学习运算的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的多层人工神经网络运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把多层人工神经网络预训练运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销

另一种支持多层人工神经网络预训练的已知方法是使用图形处理器(gpu)。该方法通过使用通用寄存器堆和通用流处理单元执行通用simd指令来支持上述算法。由于gpu是专门用来执行图形图像运算以及科学计算的设备,没有对多层人工神经网络运算的专门支持,仍然需要大量的 前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外gpu只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。另外,gpu只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。



技术实现要素:

本发明所要解决的是现有技术中通用处理器(gpu、cpu)进行多层神经网络预训练需要一系列的简单运算以及访存运算,前端译码功耗开销较大以及现有的通用处理器数据访存开销大、单个通用处理器运算性能低等问题。

本发明提出一种用于执行人工神经网络自学习运算的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:所述指令存储单元用于通过数据访问单元读入指令并缓存读入的指令;所述控制器单元用于从指令存储单元读取指令,并将该指令译码成控制互连模块、主运算模块、以及从运算模块行为的控制信号,然后将各自的控制信号分发至各个模块;所述数据访问单元用于访问外部地址空间,完成数据的加载和存储;所述互连模块具有不同拓扑实现,用于将所述主运算模块的输入向量分发给所述多个从运算模块,以及将各从运算模块的计算结果合并后返回给主运算模块;所述主运算模块用于对所述互连模块返回的中间值进行激活函数、吉布斯采样,以及对激活函数的偏置的更新;所述从运算模块用于输入向量和相应权重矩阵的点积运算,输入向量中的相应分量标量和对应权重矩阵的乘积运算,以及权重矩阵的更新。

根据本发明的具体实施方式,所述主运算模块包括运算单元、数据依赖关系判断单元和存储单元,其中,所述存储单元用于缓存主运算模块在计算过程中用到的输入数据和输出数据,所述运算单元用于完成主运算模块的运算;所述数据依赖关系判断单元是所述运算单元和读写存储单元的端口,用于保证存储单元中数据的读写一致性。

根据本发明的具体实施方式,所述数据依赖关系判断单元用于判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该组控制信号立即发射,否则需要等到该组控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射。

根据本发明的具体实施方式,所述数据依赖关系判断单元还用于将读取数据通过互连模块发送给从计算模块。

根据本发明的具体实施方式,每个所述从运算模块包括运算单元、数据依赖关系判断单元、第一存储单元、第二存储单元和第三存储单元,其中,所述运算单元用于接收控制器单元发出的控制信号并进行算数逻辑运算;所述数据依赖关系判断单元用于对缓存单元的读写操作进行监控,以保证对缓存单元的读写不存在一致性冲突;所述第一存储单元用于缓存神经元的输入向量和计算结果;所述第二存储单元用于缓存所述从运算模块在计算过程中需要的权值数据;所述第三存储单元用于缓存相应从运算模块在更新权值过程中需要的权值梯度数据。

本发明还提出一种执行人工神经网络逐层自学习运算的方法,所述人工神经网络包括两层或者两层以上的多个神经元,人工神经网络的自学习预训练采用逐层训练,对于每一层来说,所述预训练分为四个阶段:

第一阶段,输入神经元向量和权值向量矩阵进行点积运算得到局部诱导域,局部诱导域经过激活函数非线性变换后再采用吉布斯(gibbs)采样计算得到一阶隐层中间值

第二阶段,先将权值向量矩阵的转置和一阶隐层中间值的转置进行点积运算,其局部诱导域经过激活函数非线性变换后再采用gibbs采样得到一阶可见层中间值

第三阶段,输入一阶可见层中间值和权值向量矩阵进行点积运算得到局部诱导域,局部诱导域经过激活函数非线性变换后得到第二隐层中间值

第四阶段,根据如下公式更新权重:

其中,向量为上述第一、三阶段进行激活函数之前向量和权重矩阵点积部分和加的偏置,向量则为第二阶段时的偏置;公式中“×”表示向量的叉乘,∈则是学习率。

相比于现有技术,本发明对多层神经网络预训练指令进行优化,处理器可仅用一条指令完成神经网络一层的预训练学习,精简了通用处理器指令的前端译码开销;同时,本发明包含一个主运算模块、多个从运算模块以及大量分布式片上存储缓解访存开销,可并行执行神经网络预训练运算而不需进行频繁的片外数据访存。总而言之,本发明的性能功耗比远高于通用处理器。

本发明可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、b超、心电图仪等各类医疗设备。

附图说明

为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:

图1示出了根据本发明实施例的用于执行人工神经网络自学习预训练的装置的整体结构的示例框图。

图2示意性示出了根据本发明实施例的用于执行人工神经网络自学习预训练的装置中互连模块的h树型结构实现。

图3示出了根据本发明实施例的用于执行人工神经网络自学习预训练的装置中主运算模块结构的示例框图。

图4示出了根据本发明实施例的用于执行人工神经网络自学习预训练的装置中从运算模块结构的示例框图。

图5示出了根据本发明实施例的神经网络自学习预训练过程第一、三阶段的示例框图。

图6示出了根据本发明实施例的神经网络自学习预训练过程第二阶段的示例框图。

图7示出了根据本发明实施例的神经网络自学习预训练过程第四阶段的实例流程图。

图8示出了根据本发明实施例的单层神经网络自学习预训练一次迭代的实例流程图。

在所有附图中,相同的装置、部件、单元等使用相同的附图标记来表示。

具体实施方式

根据结合附图对本发明示例性实施例的以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。

在本发明中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。

在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。

根据本发明实施例的多层人工神经网络的自学习预训练,人工神经网络包括两层或者两层以上的多个神经元。人工神经网络的自学习预训练采用逐层训练,从第一层开始训练直至最后一层。对于每一层来说,预训练分为四个阶段:

第一阶段,输入神经元向量首先和权值向量矩阵进行点积运算得到局部诱导域,局部诱导域经过激活函数非线性变换后再采用吉布斯(gibbs)采样计算得到一阶隐层中间值

第二阶段,先将权值向量矩阵的转置和一阶隐层中间值的转置进行点积运算,其局部诱导域经过激活函数非线性变换后再采用gibbs采样得到一阶可见层中间值

第三阶段和第一阶段类似,区别在于第三阶段输入为一阶可见层中间值计算第二隐层中间值之前不需经过gibbs采样;

第四阶段,根据如下公式更新权重:

其中,向量为上述第一、三阶段进行激活函数之前向量和权重矩阵点积部分和加的偏置,向量则为第二阶段时的偏置;公式中“×”表示向量的叉乘,∈则是学习率。

图1示出了根据本发明的用于执行人工神经网络自学习预训练的装置的整体结构的示例框图。如图1所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如专用集成电路asic)实现。

指令存储单元1通过数据访问单元3读入指令并缓存读入的指令。

控制器单元2从指令存储单元1中读取指令,将指令译成控制其他模块行为的控制信号并发送给其他模块如数据访问单元3、主运算模块5和从运算模块6等。

数据访问单元3能够访存外部地址空间,直接向装置内部的各个缓存单元读写数据,完成数据的加载和存储。

图2示意性示出了互连模块4的结构。互连模块4构成主运算模块5和多个从运算模块6之间的数据通路,并具有不同的结构。互连是由多个 节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在神经网络自学习运算第一、三阶段过程中,主运算模块5内的输入向量通过互连模块4发送给各个从运算模块6;运算模块6的计算过程完成后,当从运算模块的计算过程完成后,每个从运算模块输出的神经元的值会在互连模块中逐级拼成一个完整的由局部诱导域组成的向量,作为中间结果向量返回主运算模块5进行激活函数并根据需求进行gibbs采样。而在第二阶段过程中,主运算模块5内的一阶隐层中间值向量通过互连模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,下游两个节点返回的向量会在当前节点相加成一个向量并返回给上游节点,作为中间结果向量返回主运算模块5进行激活函数以及gibbs采样。

图3示出了根据本发明的用于执行人工神经网络预训练运算的装置中主运算模块5的结构的示例框图。如图3所示,主运算模块5包括运算单元51、数据依赖关系判断单元52和存储单元53。

存储单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据,运算单元51完成主运算模块5的各种运算功能,数据依赖关系判断单元52是运算单元51读写存储单元53的端口,同时能够保证存储单元中数据的读写一致性。具体地,数据依赖关系判断单元52判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该组控制信号立即发射,否则需要等到该组控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射。例如,所有发往数据依赖关系单元52的控制信号都会被存入数据依赖关系单元52内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。同时,数据依赖关系判断单元52也负责将读取数据通过互连模块4发送给从计算模块,而从计算模块6的输出数据通过互连模块4直接发送给运算单元51。控制器单元2输出的指令发送给计算单元51和数据依赖关系判断单元52,来控制其行为。

图4示出了根据本发明的用于执行人工神经网络预训练的装置中从运算模块6的结构的示例框图。如图4所示,每个从运算模块6包括运算单 元61、数据依赖关系判断单元62、第一存储单元63、第二存储单元64和第三存储单元65。

运算单元61接收控制器单元2发出的控制信号并进行算数逻辑运算。

数据依赖关系判断单元62负责计算过程中对缓存单元的读写操作。数据依赖关系判断单元62保证对缓存单元的读写不存在一致性冲突。例如,所有发往数据依赖关系单元62的控制信号都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。

第一存储单元63缓存各阶段过程中的输入神经元向量一阶隐层中间值一阶可见层中间值一阶隐层中间值以及各个阶段计算的输入向量和权重矩阵点积结果。

第二存储单元64缓存该从运算模块6在计算过程中需要的权值数据。对于每一个从运算模块,都只会存储权值矩阵中与该从运算模块6所存储的标量数据相对应的列。

第三存储单元65缓存相应从运算模块在更新权值过程中需要的权值梯度数据。每一个从运算模块6存储的权值梯度数据与其存储的权值数据相对应。

从运算模块6实现人工神经网络自学习预训练过程中前三阶段并行的前半部分以及最后一个阶段公式(1)权值的更新。

以人工神经网络深度信念网络(dbn)的预训练为例,将前三阶段的权值矩阵(或)和输入神经元向量的乘法可以划分为不相关的并行计算子任务。第一、三阶段中,每个从运算模块6利用相同的输入向量值,和输出向量不同分量相对应的权值进行点积乘法运算,分别得到输出向量中不同分量相应的部分和,多次累加后得到其各自对应输出分量的这些部分和在互连模块4中逐级拼成一个完整局部诱导域向量。每个从运算模块6只需要计算出本模块对应输出神经元值相应的局部诱导域即可。不同的局部诱导域分量在互连模块4中逐级拼成一个完整局部诱导域向量传输给主运算模块进行激活函数以及随后的采样。第二阶段中,每个从运算模块6只计算输入的一阶隐层中间值向量中相应的部分标量和权值矩阵对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在互连模块中逐级两两相加得到最后的结果。每个从运算模块6计算出输出一阶可见层向量局部诱导域的部分和,所有的部分和在互连模块4中完成求和运算得到最后局部诱导域。前三个阶段计算得到中间值用于更新权重,主运算模块5基于前三个阶段运算的输出进行后续运算得出权重更新值。在最后一阶段,从运算模块5按照公式(1)更新权重也可分为三个小步骤:

1.每个从运算模块6计算输入的一阶隐层中间值向量和输入神经元中相应的部分标量的乘积中间值;

2.每个从运算模块6计算输入的一阶隐层中间值向量和一阶可见层向量中相应的部分标量的乘积,并计算和第一小阶段中间值的向量差值;

3.每个从运算模块6计算第二小阶段的差值和学习率的乘积,得到权重更新值,之后和权重进行向量减法,得到更新后的权重。

值得注意的是,上述三个小阶段仅仅是对从计算模块6更新权重一个实例描述,应用者可以进行细节的微调,例如,可以将第一小阶段的乘积的计算和第二小阶段中乘积的计算互换;或者可以将第三小阶段乘以学习率提前到第二小阶段甚至是拆分至前两个小阶段。

根据本发明实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括config指令、compute指令、io指令、nop指令、jump指令和move指令,其中:

config指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;

compute指令完成每层人工神经网络的算术逻辑计算;

io指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;

nop指令负责清空当前装至内部所有控制信号缓存队列中的控制信号,保证nop指令之前的所有指令全部指令完毕。nop指令本身不包含任何操作;

jump指令负责控制器将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;

move指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。

图5示出了根据本发明实施例的神经网络自学习预训练过程第一、三阶段的示例框图。在不同从运算模块6中,互连模块4广播的输入向量分别与该从运算模块6的权值向量进行点积运算,得到对应的输出神经元值的局部诱导域部分和,所有这些输出局部诱导域值组成中间结果向量,该中间结果向量经过加偏置向量以及激活运算得到该层神经网络的最终输出神经元向量,公式描述为out=f(w*in+b),其中out输出向量、in是输入向量、b是偏置向量,w是权值矩阵,f是激活函数。每个从运算模块6的权值向量是权值矩阵中与该从运算模块6相对应的列向量。互连模块4将输入向量[i0,…,in]发送给所有的从运算单元,暂存在第一存储单元中。对于第i个从运算单元,计算其相应的权值向量[wi0,…,win]与输入向量的点积。从运算单元输出的结果经过互连模块4拼成完整的局部诱导域向量并返回给主运算单元5,在主运算单元5中进行激活函数运算以及其可能的gibbs采样,得到最后的输出向量[o0,o1,…,on]。

图6示出了根据本发明实施例的神经网络自学习预训练过程第二阶段的示例框图。计算输出一阶可见层向量的过程为互连模块4广播一阶隐层向量值,每个从运算模块6取中相应的部分标量h0i与权值矩阵对应的列[wi0,…,win]的乘积,得到的每个输出向量都是一阶可见层向量的局部诱导域的一个待累加的部分和,这些部分和在互连模块4中逐级两两相加得到最后的局部诱导域。计算得的局部诱导域返回给主运算单元5,在主运算单元5中进行激活函数运算以及其可能的gibbs采样,得到最后的输出一阶可见层向量

图7示出了根据本发明实施例的神经网络自学习预训练过程第四阶段的流程图。最后一阶段,从运算模块5按照公式(1)更新权重也可分为三个小步骤:

1.每个从运算模块6计算输入的一阶隐层中间值向量和输入神经元中相应的部分标量的乘积中间值缓存至图4所示的第三存储单元;此小阶段类似于图6所示的第二阶段的框图,不过其输入分别为一阶隐层中间值向量和输入神经元

2.每个从运算模块6计算输入的一阶隐层中间值向量和一阶可见层向量中相应的部分标量的乘积,并计算和第一小阶段中间值的向量差值并缓存至图4所示的第三存储单元;

3.每个从运算模块6计算第二小阶段的差值和学习率的乘积,得到权重更新值,之后和权重进行向量减法,得到更新后的权重。

值得注意的是,上述三个小阶段仅仅是对从计算模块6更新权重一个实例描述,应用者可以进行细节的微调,例如,可以将第一小阶段的乘积的计算和第二小阶段中乘积的计算互换;或者可以将第三小阶段乘以学习率提前到第二小阶段甚至是拆分至前两个小阶段。

图8示出根据一个实施例的一层人工神经网络自学习预训练运算流程图,由于多层人工神经网络自学习预训练可以采用逐层训练的方式,多层人工神经网络的预训练可以调用多次该流程实现。该流程图描述利用本发明的装置和指令集实现图4所示的一种单层神经网络自学习预训练运算的过程。

在步骤s1,在指令缓存单元1的首地址处预先存入一条io指令。

在步骤s2,运算开始,控制器单元2从指令缓存单元1的首地址读取该条io指令,根据译出的控制信号,数据访问单元3从外部地址空间读取相应的所有人工神经网络运算指令,并将其缓存在指令存储单元1中。

在步骤s3,控制器单元2接着从指令存储单元读入下一条io指令,根据译出的控制信号,数据访问单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入神经元向量激活函数插值表、学习率和偏置等)至主运算模块5的存储单元53。

在步骤s4,控制器单元2接着从指令存储单元读入下一条io指令,根据译出的控制信号,数据访问单元3从外部地址空间读取从运算模块6需要的权值矩阵数据。

在步骤s5,控制器单元2接着从指令存储单元读入下一条config指令,根据译出的控制信号,装置配置该层神经网络第一阶段计算需要的各种常数。例如,运算单元51、61根据控制信号里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据。

在步骤s6,控制器单元2接着从指令存储单元读入下一条compute指令,根据译出的控制信号,开始第一阶段的计算。主运算模块5首先通过互连模块4将输入神经元向量发给各从运算模块6,保存至从运算模块6的第一存储单元63。从运算模块6的运算单元61从第二存储单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向量),从第一存储单元读取输入神经元向量完成权值向量和输入神经元向量的点积运算,将中间结果通过互连模块返回。在互连模块4中,各从运算模块6返回的中间结果被逐级拼成完整的局部诱导域向量。主运算模块5得到互连模块4的返回值,根据compute指令译出的控制信号,从存储单元53读取偏置向量,与互连模块4返回的向量相加,然后再对相加结果做激活,并进行gibbs采样,并将最后的一阶隐层向量写回至存储单元53。

在步骤s7控制器单元2接着从指令存储单元读入下一条config指令,根据译出的控制信号,装置配置该层神经网络第二阶段计算需要的各种常数。

在步骤s8,控制器单元2接着从指令存储单元读入下一条compute指令,根据译出的控制信号,开始第二阶段的计算。主运算模块5首先通过互连模块4将一阶隐层向量发给各从运算模块6,保存至从运算模块6的第一存储单元63。从运算模块6的运算单元61从第二存储单元64读取权值向量(权值矩阵中对应于该从运算模块6的列向量),从第一存储单元选取一阶隐层向量的标量,完成权值向量和一阶隐层向量对应的标量的乘积运算,将中间结果通过互连模块返回。在互连模块4中,各从运算模块6返回的中间结果被逐级相加成完整的局部诱导域向量。主运算模块5得到互连模块4的返回值,根据compute指令译出的控制信号,从存储单元53读取偏置向量,与互连模块4返回的向量相加,然后再对相加结果做激活,并进行gibbs采样,并将最后的一阶可见层向量写回至存储单元53。

在步骤s9,控制器单元2接着从指令存储单元读入下一条config指令,根据译出的控制信号,装置配置该层神经网络第三阶段计算需要的各种常数。本层的配置基本和第一阶段相同,不过还需多配置一个学习率参数。

在步骤s10,控制器单元2接着从指令存储单元读入下一条compute指令,根据译出的控制信号,开始第三阶段的计算。主运算模块5首先通过互连模块4将一阶隐层向量发给各从运算模块6,保存至从运算模块6的第一存储单元63。从第一存储单元读取一阶可见层向量完成权值向量和一阶可见层向量的点积运算,将中间结果通过互连模块返回。在互连模块4中,各从运算模块6返回的中间结果被逐级拼成完整的局部诱导域向量。主运算模块5得到互连模块4的返回值,根据compute指令译出的控制信号,从存储单元53读取偏置向量,与互连模块4返回的向量相加,然后再对相加结果做激活,并将最后的一阶隐层向量写回至存储单元53。

在步骤s11,控制器单元2接着从指令存储单元读入下一条compute指令,根据译出的控制信号,开始第四阶段的计算。第一小阶段主运算模块5首先通过互连模块4将输入神经元向量和一阶隐层向量发给各从运算模块6,保存至从运算模块6的权重梯度缓存单元65。第二小阶段从运算模块6的运算单元61从第一存储单元读取一阶隐层向量和选取输入神经元向量对应的分量,完成一阶隐层向量和相应输入神经元向量的分量的乘积运算,将中间结果和从权重梯度缓存单元65读取的前一小阶段缓存的中间值进行向量减法运算,并将运算得的中间结果缓存至权重梯度缓存单元65。最后一小阶段从运算模块6的运算单元61从权重梯度缓存单元65读取上一小阶段的中间值和学习率相乘得到权重更新值,并从权重缓存单元64读取相应的权重和权重更新值进行向量减法得到更新后的权重,并将其缓存回权重缓存单元64。如此,单层神经网络的一次自学习预训练迭代完成,经过多次迭代学习,权重达到某种收敛评判标准则(权重更新值小于某个阈值)单层神经网络预训练结束,可以开始下一层神经网络的预训练。

通过采用用于执行人工神经网络自学习预训练运算的装置和指令集,解决了cpu和gpu运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络正向运算的支持。

通过采用针对多层人工神经网络正向运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络正向运算性能瓶颈的问题。

前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。

在前述的说明书中,参考其特定示例性实施例描述了本发明的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本发明的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。

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