版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(19)国家知识产权局(12)发明专利(10)授权公告号CN111985602B(65)同一申请的已公布的文献号(73)专利权人华为技术有限公司为总部办公楼(74)专利代理机构北京三高永信知识产权代理有限责任公司11138专利代理师颜晶审查员朱青神经网络计算设备、方法以及计算设备第一存储阵列本申请公开了一种神经网络计算设备、方法以及计算设备,属于神经网络技术领域。该神经网络计算设备通过将卷积核和待执行卷积计算的输入数据存储在内存的第一存储阵列中,第一计算电路可以从第一存储阵列内读取卷积核和待执行卷积计算的输入数据,并完成卷积计算。本申请在内存中实现了神经网络计算,减少了神2第一存储阵列,包括多行多列动态随机存取存储器DRAM单元,所述存储阵列中的第一行DRAM单元用于存储卷积核,所述存储阵列中的至少两行DRAM单元用于存储待执行卷积计中一个子特征图上的数据,且,所述卷积核中的一个元素与所述子特征图上所述元素对应的元素存储在同一列DRAM单元,所述子特征图为所述卷积核的扫描窗口在所述特征图上所覆盖的区域;第一计算电路,连接所述存储阵列,用于将所述输入数据与所述卷积核执行多次卷积运算,每次卷积计算用于将所述卷积核与所述至少两行DRAM单元中的一行DRAM单元中存储的输入数据进行乘加计算。2.根据权利要求1所述的计算设备,其特征在于,所述第一计算电路包括:多个锁存器,每个锁存器的输入端连接一列DRAM单元,每个锁存器的输出端连接多个乘法器中的一个乘法器,每个锁存器用于缓存对应列的DRAM单元中存储的卷积核中的一个元素的一位数值,其中,所述第一行DRAM单元中的每一个DRAM单元分别用于存储所述卷积核中的一个元素的一位数值;多个乘法器,每个乘法器的第一输入端分别连接一列DRAM单元,每个乘法器的第二输入端分别连接一个锁存器的输出端;多个加法器,每个加法器的输入端分别连接至少两个乘法器;其中,在一次卷积计算过程中,所述多个乘法器分别用于将所述多个锁存器缓存的卷加法器分别用于将所述多个乘法器的输出结果进行加法运算,所述多个加法器的输出为一次卷积计算的结果。第二计算电路,所述第二计算电路连接所述第一计算电路,所述第二计算电路包括求和电路,用于在一次求和计算过程中,将所述第一计算电路中的多个加法器输出的所述一次卷积计算的结果进行求和。4.根据权利要求3所述的计算设备,其特征在于,所述第二计算电路用于执行多次求和缓存器,连接所述求和电路,用于缓存所述求和电路的在多次求和计算过程中的计算池化电路,所述池化电路连接所述缓存器,用于将所述缓存器中缓存的所述多次求和计算过程中的计算结果进行池化运算。5.根据权利要求4所述的计算设备,其特征在于,所述第二计算电路还包括:选择电路,所述选择电路的第一输入端用于连接所述池化电路的输出端,所述选择电路的第二输入端用于连接所述求和电路的输出端,所述选择电路用于选择输出所述池化电路的输出结果或所述求和电路的输出结果;激活电路,连接所述选择电路的输出端,用于对所述选择电路的输出结果执行激活操6.根据权利要求2所述的计算设备,其特征在于,所述每个乘法器包括:3至少一个异或单元,每个异或单元的第一输入端连接一个锁存器,每个异或单元的第二输入端连接一列DRAM单元,每个异或单元用于对一个锁存器缓存的卷积核中的一个元素的一位数值与所述至少两行DRAM单元中的一行DRAM单元中存储的输入数据中的一个元素的一位数值进行异或,其中,所述至少两行DRAM单元中的每一个DRAM单元分别用于存储所述待执行卷积计算的输入数据中的一个元素的一位数值;一个组合单元,所述组合单元的第一输入端连接所述至少一个异或单元的输出端,所述组合单元的第二输入端连接至少一个锁存器,所述组合单元用于将所述至少一个异或单元输出的数据与至少一个锁存器输出的数据进行组合。控制器,用于接收卷积核以及待执行卷积计算的输入数据,并将所述卷积核和所述输入数据发送给连接所述控制器的内存;所述内存包括:第一存储阵列,包括多行多列动态随机存取存储器DRAM单元,用于存储控制器发送的所述卷积核和输入数据,其中,所述存储阵列中的第一行DRAM单元用于存储卷积核,所述存的每行DRAM单元所存储的输入数据包括输入的特征图中一个子特征图上的数据,且,所述卷积核中的一个元素与所述子特征图上所述元素对应的元素存储在同一列DRAM单元,所述子特征图为所述卷积核的扫描窗口在所述特征图上所覆盖的区域;以及第一计算电路,连接所述存储阵列,用于将所述输入数据与所述卷积核执行多次卷积的输入数据进行乘加计算。8.根据权利要求7所述的计算设备,其特征在于,所述第一计算电路包括:多个锁存器,每个锁存器的输入端连接一列DRAM单元,每个锁存器的输出端连接多个乘法器中的一个乘法器,每个锁存器用于缓存对应列的DRAM单元中存储的卷积核中的一个元素的一位数值,其中,所述第一行DRAM单元中的每一个DRAM单元分别用于存储所述卷积核中的一个元素的一位数值;多个乘法器,每个乘法器的第一输入端分别连接一列DRAM单元,每个乘法器的第二输入端分别连接一个锁存器的输出端;多个加法器,每个加法器的输入端分别连接至少两个乘法器;其中,在一次卷积计算过程中,所述多个乘法器分别用于将所述多个锁存器缓存的卷加法器分别用于将所述多个乘法器的输出结果进行加法运算,所述多个加法器的输出为一次卷积计算的结果。9.根据权利要求8所述的计算设备,其特征在于,所述内存还包括:第二计算电路,所述第二计算电路连接所述第一计算电路,所述第二计算电路包括求和电路,用于在一次求和计算过程中,将所述第一计算电路中的多个加法器输出的所述一次卷积计算的结果进行求和。10.根据权利要求9所述的计算设备,其特征在于,所述第二计算电路用于执行多次求4缓存器,连接所述求和电路,用于缓存所述求和电路的在多次求和计算过程中的计算池化电路,所述池化电路连接所述缓存器,用于将所述缓存器中缓存的所述多次求和计算过程中的计算结果进行池化运算。11.根据权利要求10所述的计算设备,其特征在于,所述第二计算电路还包括:选择电路,所述选择电路的第一输入端用于连接所述池化电路的输出端,所述选择电路的第二输入端用于连接所述求和电路的输出端,所述选择电路用于选择输出所述池化电路的输出结果或所述求和电路的输出结果;激活电路,连接所述选择电路的输出端,用于对所述选择电路的输出结果执行激活操12.根据权利要求8所述的计算设备,其特征在于,所述每个乘法器包括:至少一个异或单元,每个异或单元的第一输入端连接一个锁存器,每个异或单元的第二输入端连接一列DRAM单元,每个异或单元用于对一个锁存器缓存的卷积核中的一个元素的一位数值与所述至少两行DRAM单元中的一行DRAM单元中存储的输入数据中的一个元素的一位数值进行异或,其中,所述至少两行DRAM单元中的每一个DRAM单元分别用于存储所述待执行卷积计算的输入数据中的一个元素的一位数值;一个组合单元,所述组合单元的第一输入端连接所述至少一个异或单元的输出端,所述组合单元的第二输入端连接至少一个锁存器,所述组合单元用于将所述至少一个异或单元输出的数据与至少一个锁存器输出的数据进行组合。接收卷积神经网络的任一网络层的卷积核以及待执行卷积计算的输入数据;将所述卷积核存储在第一存储阵列的第一行动态随机存取存储器DRAM单元中,其中,将所述输入数据存储到所述第一存储阵列中除所述第一行DRAM单元外的至少两行一个子特征图上的数据,且,所述卷积核中的一个元素与所述子特征图上所述元素对应的元素存储在同一列DRAM单元,所述子特征图为所述卷积核的扫描窗口在所述特征图上所覆盖的区域;基于连接所述第一存储阵列的第一计算电路,将所述输入数据与所述卷积核执行多次存储的输入数据进行乘加计算。14.根据权利要求13所述的方法,其特征在于,所述基于连接所述第一存储阵列的第一计算电路,将所述输入数据与所述卷积核执行多次卷积运算包括:将存储阵列中存储的所述卷积核存储在所述第一计算电路内的多个锁存器中,每个锁基于所述第一计算电路内的多个乘法器,将所述多个锁存器缓存的卷积核与所述多行基于所述第一计算电路内的多个加法器,将所述多个乘法器的输出结果进行加法运5在一次求和计算过程中,基于所述神经网络计算设备中第二计算电路内的求和电路,6技术领域[0001]本发明涉及神经网络技术领域,特别涉及一种神经网络计算设备、方法以及计算背景技术[0002]随着卷积神经网络的发展,通过卷积神经网络计算可以进行图像识别以及语音识别等,由于卷积神经网络计算是一种并行度高、数据密集型计算,当计算设备的处理器采用冯诺依曼计算架构进行卷积神经网络计算时,处理器会先将卷积神经网络的数据存储至内总线将DRAM中存储的数据转移至神经网络计算节点,在神经网络计算节点中完成卷积神经巨大且计算复杂,数据总线需要将数据在DRAM和神经网络计算节点之间来回传输,当处理器工作频率要求较高时,连接处理器和DRAM数据总线带宽将不足以传输处理器要求的数发明内容[0003]本发明实施例提供了一种神经网络计算设备、方法以及计算设备,能够在内存中完成神经网络计算,解决内存墙的问题。该[0005]第一存储阵列,包括多行多列动态随机存取存储器DRAM单元,所述存储阵列中的积计算的输入数据;[0006]第一计算电路,连接所述存储阵列,用于将所述输入数据与所述卷积核执行多次存储的输入数据进行乘加计算。[0007]本神经网络计算设备通过将卷积核和待执行卷积计算的输入数据存储在包括多行多列DRAM单元的第一存储阵列中,第一计算电路可以从第一存储阵列内读取卷积核和待执行卷积计算的输入数据,并完成卷积计算。从而在内存中实现了神经网络计算,减少了神经网络数据在内存和神经网络计算节点之间的传输,解决了内存墙的问题。[0008]在一种可能实现方式中,所述第一计算电路包括:[0009]多个锁存器,每个锁存器的输入端连接一列DRAM单元,每个锁存器的输出端连接多个乘法器中的一个乘法器,每个锁存器用于缓存对应列的DRAM单元中存储的卷积核中的卷积核中的一个元素的一位数值;[0010]多个乘法器,每个乘法器的第一输入端分别连接一列DRAM单元,每个乘法器的第二输入端分别连接一个锁存器的输出端;7[0011]多个加法器,每个加法器的输入端分别连接至少两个乘法器;[0012]其中,在一次卷积计算过程中,所述多个乘法器分别用于将所述多个锁存器缓存多个加法器分别用于将所述多个乘法器的输出结果进行加法运算,所述多个加法器的输出为一次卷积计算的结果。[0013]在一种可能实现方式中,该神经网络计算设备还包括:[0014]第二计算电路,所述第二计算电路连接所述第一计算电路,所述第二计算电路包括求和电路,用于在一次求和计算过程中,将所述第一计算电路中的多个加法器输出的所述一次卷积计算的结果进行求和。[0015]在一种可能实现方式中,所述第二计算电路用于执行多次求和计算,所述第二计算电路还包括:[0016]缓存器,连接所述求和电路,用于缓存所述求和电路的在多次求和计算过程中的计算结果;[0017]池化电路,所述池化电路连接所述缓存器,用于将所述缓存器中缓存的所述多次求和计算过程中的计算结果进行池化运算。[0018]在一种可能实现方式中,所述第二计算电路还包括:[0019]选择电路,所述选择电路的第一输入端用于连接所述池化电路的输出端,所述选择电路的第二输入端用于连接所述求和电路的输出端,所述选择电路用于选择输出所述池化电路的输出结果或所述求和电路的输出结果;[0020]激活电路,连接所述选择电路的输出端,用于对所述选择电路的输出结果执行激活操作,并将输出结果输入给第二存储阵列,所述第二存储阵列包括多行多列DRAM单元。[0022]至少一个异或单元,每个异或单元的第一输入端连接一个锁存器,每个异或单元的第二输入端连接一列DRAM单元,每个异或单元用于对一个锁存器缓存的卷积核中的一个元素的一位数值与所述至少两行DRAM单元中的一行DRAM单元中存储的输入数据中的一个元素的一位数值进行异或,其中,所述至少两行DRAM单元中的每一个DRAM单元分别用于存储所述待执行卷积计算的输入数据中的一个元素的一位数值;[0023]一个组合单元,所述组合单元的第一输入端连接所述至少一个异或单元的输出端,所述组合单元的第二输入端连接至少一个锁存器,所述组合单元用于将所述至少一个异或单元输出的数据与至少一个锁存器输出的数据进行组合。[0024]基于上述可能的实现方式,不仅内存中实现了神经网络计算,减少了神经网络数据在内存和神经网络计算节点之间的传输,解决了内存墙的问题,而且,在实现卷积计算时,将卷积计算拆分成异或运算,进而可以通过异或单元,获取卷积计算的结果,从而避免将卷积计算的过程拆分成许多个基本的计算逻辑,进一步降低了实现卷积计算时的功耗。[0025]第二方面,提供了一种计算设备,该计算设备包括:控制器,用于接收卷积核以及待执行卷积计算的输入数据,并将所述卷积核和所述输入数据发送给连接所述控制器的内[0026]所述内存包括:[0027]第一存储阵列,包括多行多列动态随机存取存储器DRAM单元,用于存储控制器发8送的所述卷积核和输入数据,其中,所述存储阵列中的第一行DRAM单元用于存储卷积核,所述存储阵列中的至少两行DRAM单元用于存储待执行卷积计算的输入数据;以及[0028]第一计算电路,连接所述存储阵列,用于将所述输入数据与所述卷积核执行多次存储的输入数据进行乘加计算。[0029]在一种可能实现方式中,所述第一计算电路包括:[0030]多个锁存器,每个锁存器的输入端连接一列DRAM单元,每个锁存器的输出端连接多个乘法器中的一个乘法器,每个锁存器用于缓存对应列的DRAM单元中存储的卷积核中的一个元素的一位数值,其中,所述第一行DRAM单元中的每一个DRAM单元分别用于存储所述卷积核中的一个元素的一位数值;[0031]多个乘法器,每个乘法器的第一输入端分别连接一列DRAM单元,每个乘法器的第二输入端分别连接一个锁存器的输出端;[0032]多个加法器,每个加法器的输入端分别连接至少两个乘法器;[0033]其中,在一次卷积计算过程中,所述多个乘法器分别用于将所述多个锁存器缓存的卷积核与所述多行DRAM单元中的一行DRAM单元存储的所述输入数据执行乘法运算,所述多个加法器分别用于将所述多个乘法器的输出结果进行加法运算,所述多个加法器的输出为一次卷积计算的结果。[0034]在一种可能实现方式中,所述内存还包括:[0035]第二计算电路,所述第二计算电路连接所述第一计算电路,所述第二计算电路包括求和电路,用于在一次求和计算过程中,将所述第一计算电路中的多个加法器输出的所述一次卷积计算的结果进行求和。[0036]在一种可能实现方式中,所述第二计算电路用于执行多次求和计算,所述第二计算电路还包括:[0037]缓存器,连接所述求和电路,用于缓存所述求和电路的在多次求和计算过程中的计算结果;[0038]池化电路,所述池化电路连接所述缓存器,用于将所述缓存器中缓存的所述多次求和计算过程中的计算结果进行池化运算。[0039]在一种可能实现方式中,所述第二计算电路还包括:[0040]选择电路,所述选择电路的第一输入端用于连接所述池化电路的输出端,所述选择电路的第二输入端用于连接所述求和电路的输出端,所述选择电路用于选择输出所述池化电路的输出结果或所述求和电路的输出结果;[0041]激活电路,连接所述选择电路的输出端,用于对所述选择电路的输出结果执行激活操作,并将输出结果输入给第二存储阵列,所述第二存储阵列包括多行多列DRAM单元。[0043]至少一个异或单元,每个异或单元的第一输入端连接一个锁存器,每个异或单元的第二输入端连接一列DRAM单元,每个异或单元用于对一个锁存器缓存的卷积核中的一个元素的一位数值与所述至少两行DRAM单元中的一行DRAM单元中存储的输入数据中的一个储所述待执行卷积计算的输入数据中的一个元素的一位数值;9[0044]一个组合单元,所述组合单元的第一输入端连接所述至少一个异或单元的输出端,所述组合单元的第二输入端连接至少一个锁存器,所述组合单元用于将所述至少一个异或单元输出的数据与至少一个锁存器输出的数据进行组合。[0045]第三方面,提供了一种神经网络计算方法,所述方法由神经网络计算设备执行,包[0046]接收卷积神经网络的任一网络层的卷积核以及待执行卷积计算的输入数据;[0047]将所述卷积核存储在第一存储阵列的第一行动态随机存取存储器DRAM单元中,其[0048]将所述输入数据存储到所述第一存储阵列中除所述第一行DRAM单元外的至少两[0049]基于连接所述第一存储阵列的第一计算电路,将所述输入数据与所述卷积核执行多次卷积运算,每次卷积计算用于将所述卷积核与所述至少两行DRAM单元中的一行DRAM单元中存储的输入数据进行乘加计算。[0050]在一种可能实现方式中,所述基于连接所述第一存储阵列的第一计算电路,将所述输入数据与所述卷积核执行多次卷积运算包括:[0051]将存储阵列中存储的所述卷积核存储在所述第一计算电路内的多个锁存器中,每[0052]基于所述第一计算电路内的多个乘法器,将所述多个锁存器缓存的卷积核与所述多行DRAM单元中的一行DRAM单元存储的所述输入数据执行乘法运算;[0053]基于所述第一计算电路内的多个加法器,将所述多个乘法器的输出结果进行加法运算,所述多个加法器的输出为一次卷积计算的结果。[0054]在一种可能实现方式中,所述基于所述第一计算电路内的多个乘法器,将所述多个锁存器缓存的卷积核与所述多行DRAM单元中的一行DRAM单元存储的所述输入数据执行乘法运算包括:[0055]基于所述乘法器内的至少一个异或单元,对一个锁存器缓存的卷积核中的一个元素的一位数值与所述至少两行DRAM单元中的一行DRAM单元中存储的输入数据中的一个元所述待执行卷积计算的输入数据中的一个元素的一位数值;[0056]基于所述乘法器内的组合单元,所述组合单元用于将所述至少一个异或单元输出的数据与至少一个锁存器输出的数据进行组合。[0058]在一次求和计算过程中,基于所述神经网络计算设备中第二计算电路内的求和电路,将所述多个加法器输出的所述一次卷积计算的结果进行求和。[0059]在一种可能实现方式中,所述方[0060]基于所述神经网络计算设备中的缓存器,缓存所述求和电路的在多次求和计算过程中的计算结果;[0061]基于所述神经网络计算设备中的池化电路,将所述缓存器中缓存的所述多次求和计算过程中的计算结果进行池化运算。[0062]在一种可能实现方式中,所述方法还包括:[0063]基于所述神经网络计算设备中的选择电路,选择输出所述池化电路的输出结果或所述求和电路的输出结果;[0064]基于所述神经网络计算设备中的激活电路,对所述选择电路的输出结果执行激活操作。附图说明[0065]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0066]图1是本发明实施例提供的一种基于卷积核对特征图进行卷积处理的示意图;[0067]图2是本发明实施例提供的一种卷积神经网络的层计算的示意图;[0068]图3是本发明实施例提供的一种神经网络计算设备的示意图;[0069]图4是本发明实施例提供的一种神经网络的计算过程的分解示意图;[0070]图5是本发明实施例提供的一种实现异或计算的电路示意图;[0071]图6是本发明实施例提供的一种加法器的示意图;[0072]图7是本发明实施例提供的一种神经网络计算设备中PSA附近的逻辑电路框图;[0073]图8是本发明实施例提供的一种第二计算电路的示意图;[0074]图9是本发明实施例提供的一种池化计算过程的示意图;[0075]图10是本发明实施例提供的一种神经网络计算设备中SSA附近的逻辑电路框图;[0076]图11是本发明实施例提供的一种计算设备的结构示意图;[0077]图12是本发明实施例提供的一种实施环境的示意图;[0078]图13是本发明实施例提供的一种计算机设备的结构示意图;[0079]图14是本发明实施例提供的一种神经网络计算方法的流程图;[0080]图15是本发明实施例提供的一种卷积计算过程的示意图;[0081]图16是本发明实施例提供的一种部署计算数据的示意图。具体实施方式[0082]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。[0083]为了便于理解本发明的技术过程,首先对卷积神经网络的基本原理进行阐述:[0084]卷积神经网络的整体结构:卷积神经网络由N个层构建而成(N为大于1的正整数),任一个层的输出可以作为下一个层的输入,例如第一个层输出的特征图可以作为第二个层输入的特征图,第二个层输出的特征图可以作为第三个层输入的特征图,依次类推,直至第N个层时,直接输出特征图。[0085]卷积神经网络的层:从层的位置的角度来说,卷积神经网络的层可以分为输入层、隐藏层和输出层,其中输入层(inputlayer)是指第一个层,输出层(outputlayer)是指最后一个层,隐藏层(hiddenlayer)是指输入层和输出层之间的每个层。从层的运算方式的11卷积层是卷积神经网络中核心的层,其它层可以看作卷积层的变种或者对卷积层输出的特征图进行进一步处理。[0086]特征图(featuremap):也可以称为特征映射、激活图(activationmap)、激活映射、卷积特征(convolvedfeature)等,特征图是卷积神经网络中每个层输入和输出的数据,特征图可以图像数据,也可以是语音数据,本发明实施例对特征图的数据类型不做具体限定。其中第1个层至第(N-1)个层输出的特征图包括多个特征点,特征图中的每个特征点表征特征图上的一个特征元素,当特征图为图像数据时,特征点表示像素值,当特征图为语音数据时,特征点表示语音值。第N个层输出的特征图可以仅是包括一个特征点,该特征点表征卷积神经网络识别的特征图所属的类别,或者第N个层输出的特征图可以包括多个特征点,每个特征点表征卷积神经网络识别的特征图可能所属的类别以及属于对应类别的概[0087]卷积核(kernel):也可以称为滤波器(filter)、过滤器、特征检测器、核函数、内核、权重核等。卷积核可以看作一个具有扫描窗口的权重矩阵,权重矩阵包括多个权重(weight),每个权重也可称为参数,不同卷积核对应的权重不同,从而能够检测特征图中不同的特征。卷积核的大小(filtersize,即权重矩阵的大小)可以根据实际业务需求确定,其中卷积层中每个卷积核的大小为L×M(L、M为大于1的正整数),例如2×2,全连接层中每个卷积核的大小为1×1。每个卷积核用于对特征图进行卷积,得到输出的特征图,每个层可以包括至少一个卷积核,通过至少一个卷积核可以输出至少一个特征图。[0088]扫描窗口:用于确定特征图中每次卷积处理时针对的区域,扫描窗口的大小和卷积核的大小(filtersize,即权重矩阵的大小)相等,扫描窗口的步长(stride)用于确定扫描窗口每次滑动的距离,扫描窗口的步长根据实际需求确定,可以为1。[0089]卷积核的计算原理:卷积处理可以理解为对应相乘再累加的过程。在卷积核进行卷积处理的过程中,卷积核的扫描窗口会在特征图上进行滑动,通过扫描特征图的每个区域,依次对特征图的每个区域进行计算。当卷积核的扫描窗口滑动至特征图的任一区域时,会读取该区域中的特征元素,并对该区域中的特征元素与卷积核进行点乘法运算,得到一个特征点。之后,扫描窗口会滑动一个步长,从而处于特征图中的下一个区域,并再次输出一个特征点,当滑动过程结束后,可以将输出的所有特征点组成一个特征图,输出至下一层[0090]示例性地,参见图1,其示出了一种基于卷积核对特征图进行卷积处理的示意图,该卷积核的大小为3×3,卷积核可以表示为[1,0,1;0,1,0;1,0,1]的矩阵,扫描窗口的步长为1。假设卷积核的扫描窗口处于图中所示的区域时,则特征图位于扫描窗口内的特征矩阵[1,1,1;0,1,1;0,0,1],对卷积核和特征矩阵进行点乘法运算,得到一个特征点,具体地,特征点=1*1+0*1+1*1+0*0+1*1+0*1+1*0+0*0+1*1=4。[0091]之后,扫描窗口会滑动一次,再对此时扫描窗口内的特征矩阵与卷积核进行点乘法运算,得到另一个特征点。以此类推,当扫描窗口滑动结束后,得到的所有特征点可以组成输出的特征图。[0092]为了便于理解卷积神经网络中每一次的计算过程,参见图2所示的本发明实施例提供的一种卷积神经网络的层计算的示意图。图2中的大长方体为卷积神经网络某一层待为3x3x2,其中,大长方体的高可以视为特征图的深度,也即是特征图的层数,图2中的该特征图由两层数据组成,小立方体的长、宽、高均为2,卷积核可以表示为2x2x2,其中,小立方体的高可以视为卷积核的深度,也可以视为卷积核的个数,也即是,该特征图需要2个卷积核进行卷积,每个卷积核用于对该特征图的1层进行卷积计算,当每个卷积核的卷积计算完成后,可以得到一个2x2的特征图,然后对2x2的特征图进行池化处理,然后输出池化后的特征图。[0093]在一些实施方式中,可以在一个神经网络计算设备内实现上述计算过程,为了进一步说明该神经网络计算设备的硬件结构,参见图3,图3是本发明实施例提供的一种神经网络计算设备的示意图,神经网络计算设备包括:第一存储阵列,包括多行多列动态随机存用于存储卷积核,该存储阵列中的至少两行DRAM单元用于存储待执行卷积计算的输入数据;第一计算电路,连接该存储阵列,用于将该输入数据与该卷积核执行多次卷积运算,每次卷积计算用于将该卷积核与该至少两行DRAM单元中的一行DRAM单元中存储的输入数据进行乘加计算。[0094]第一存储阵列可以是DRAM中的子阵列(subarry),DRAM单元可以是子阵列中的单选定该任一位线所连接的一列DRAM单元,当该神经网络计算设备选中任一条位线和任一条字线时,任一条位线和任一条字线相交于一个DRAM单元,进而该神经网络计算设备可以读[0095]每个DRAM单元可以包括一个电容和一个晶体管,电容可储存1位bit数据量,充放电后电荷的多少(电势高低)分别对应于二进制数据0和1,一个DRAM单元可以用于存储0或1,由于一个权重可以用至少一个二进制位的数值表示,因此,一个权重可以用至少一个理,一个DRAM单元也可以存储一个待执行卷积计算的输入数据的一个1bit二进制数值。[0096]为了向第一存储阵列存储数据或者从第一存储阵列中读取数据,该神经网络计算设备还可以包括行解码器以及列解码器,行解码器连接第一存储阵列中的每一条字线,从而可以通过字线连接第一存储阵列中每一行的DRAM单元;列解码器连接第一存储阵列中的每一条位线,从而可以通过位线连接第一存储阵列中每一列DRAM单元。该神经网络计算设备可以通过列解码器和行解码器激活任一字线上连接的DRAM单元和任一位线连接的DRAM单元,从而可以对相交的DRAM单元执行读操作和写操作,读操作用于读取相交的DRAM单元内存储的数据,写操作用于向相交的DRAM单元内存储数据,进而可以实现在第一存储阵列读取数据和存储数据。[0097]具体地,行解码器可以通过行地址缓存器中的行地址,选择对应的行地址(一个行地址对应一个字线),以激活特定的行地址,进而实现行地址的寻址,当特定的行地址被激活后,列解码器通过列地址缓存器中的列地址,选择对应的列地址(一个列地址对应一个位线),以激活特定的列地址,进而实现列地址的寻址,当特定的列地址也被激活后,激活的行[0098]在一些实施例中,第一存储阵列还可以包括至少一个初级感应放大器(primarysenseamplifier,PSA)以及至少一个二级感应放大器(secondarysenseamplifier,[0102]为了进一步说明对输入的特征图和卷积核进行拆分的原理,参见4,图4是本发明动子区间计算过程进一步分解为3*3的卷积核在4*4的扫描窗口上进行4次滑动。将每一次滑动后扫描窗口覆盖的区域视为一个子特征图,每个卷积核会对每一个子特征图进行卷卷积核中的一个元素的一位数值;多个乘法器,每个乘法器的第一输入端分别连接一列于将该多个锁存器缓存的卷积核与该多行DRAM单元中的一行DRAM单元存储的输入数据执高位,从而可以用一行中的两个DRAM单元存储权重3,相应地,也可以采用一行中的多个列的连接,打开一行DRAM单元(例如第一行DRAM单元,存储的是第一窗口的输入数据),从待执行卷积计算的输入数据中的一个元素的一位数值;一个组合单元,所述组合单元的第一输入端连接所述至少一个异或单元的输出端,所述组合单元的第二输入端连接至少一个锁存器,所述组合单元用于将所述至少一个异或单元输出的数据与至少一个锁存器输出的数据进行组合。为了便于叙述,将组合单元的输出数据称作第一数据,第一数据也即是卷积核中的一个元素与待执行卷积计算的输入数据中的一个元素的乘积。[0110]一个异或单元可以输出该第一数据的次高位,那么该组合单元可以将卷积核内的权重与该第一数据的次高位进行组合,得到第一数据。[0111]为了表明使用异或单元和组合单元的原因,以1bit权重WO和2bit的输入数据D0为乘积可以表示为:位等于D0与WO的异或,当WO=1时,D0和WO的乘积的最高位为“1D0_1D0_0+1”中所加的1,即D0和WO的乘积的最高位为WO,DO和WO的乘积的次高位为1D0_1D0_0次高位,而次高出第一数数据。[0114]由于在对权重量化时,若任一权重小于或等于第一预设数值,将该第一权重量化为0,当任一权重大于第一预设数值时,将该第一权重量化为1,那么,在一种可能的实现方式中,对于该至少一个锁存器中存储的任一权重,当该任一权重小于或等于第一预设数值时,将该任一权重作为该第一数据的最高位,将该任一权重与对应的输入数据的异或作为该第一数据的次高位,进而可以得到一个第一数据;当该任一权重大于该第一预设数值时,将该任一权重作为与第二数据的最高位,将该任一权重所对应的第一数据作为该第二数据的次高位,将该第二数据与第二预设数值相加,得到该第一数据。本发明实施例对该第一预设数值以及第二预设数值不做具体限定。[0115]为了进一步表明异或单元的输入和输出,以图4中的示例为基础,参见图5,图5是本发明实施例提供的一种实现异或计算的电路示意图。一个锁存器连接一个开关,这个开关连接一个PSA,在进行计算时,首先,该神经网络计算设备闭合开关,并通过读操作选中行关,断开数据总线与锁存器的连接,用读操作选中输入数入数据D0_1输入异或单元1的一个输入端,将锁存器中存储的权重WO输入至异或单元1中的输入端,以便组合单元组合成D0和WO的乘积。对于一个卷积核中的各个元素都执行上述的过程,就可以得到各个元素与各个输入数据的乘积,进而可以通过多个加法器将每个乘积相加,可以得到一个特征点,也即是一次卷积计算[0116]由于第一存储阵列中存储的卷积核为量化后的卷积核,存储的输入数据也是量化后的数据,每个卷积核中的每个权重量化后可能是1bit数据,也可能是多bit数据,同理每个输入数据量化后可能是1bit数据,也可能是多bit数据,因此,第一阵列中存储的数量比较多,可以通过多个加法器来实现分步求和,以获取一次卷积计算的结果。[0117]为了进一步说明分步求和的原理,参见图6,图6是本发明实施例提供的一种加法器的示意图,图6中的一个最多处理32个3bit数据,从而这个加法器(也可以称为加法树)可以对32个3bit数据进行相加,得到一个8bit的和,那么,当卷积核大小大于32时,一次卷积计算的结果是大于32个3bit数据的求和结果,这一个加法树得到的8bit的和不能作为一次卷积计算的结果,最少需要将多个的加法树输出的部分求和结果再次求和,才能得到一次卷积计算的结果。[0118]为了进一步说明神经网络计算设备实现卷积运算的过程,以图5中的示例为基础,参见图7,图7是本发明实施例提供的一种神经网络计算设备中PSA附近的逻辑电路框图。虚线框内为神经网络计算设备内新增的逻辑电路图,可见每个PSA连接第一存储阵列的一列,第一存储阵列中的第一行存储卷积核中的权重WO和W1,第一存储阵列中的第二行存储一组或,将WO与D0_0的异或、WO与D1_0的异或以及WO输入至组合单元,组合单元输出D0和W的乘积D0*WO,同理另一个组合单元可以得到D1和W1的乘积D1*W1,通过加法树(加法器)将D0*WOW1]一次卷积计算的结果。[0119]当卷积核大于32时需要将求和过程拆分,那么,一次卷积计算的结果不是最终的卷积结果,因此,还需要对多个卷积计算的结果进行累加处理,以获取最终的卷积结果。在一种可能的实现方式中,神经网络计算设备还包括:第二计算电路,该第二计算电路连接该第一计算电路,该第二计算电路包括求和电路,用于在一次求和计算过程中,将该第一计算电路中的多个加法器输出的该一次卷积计算的结果进行求和。[0120]求和电路可以通过循环累加得到最终的卷积结果,在一种可能的实现方式中,该求和电路的第一输入端连接该求和电路的输出端,该求和电路的第二输入端连接多个加法器,当任一加法器向求个电路输入一次卷积计算的结果后,求和电路对第二输入端输入的一次卷积计算的结果与第一输入端输入的N次卷积计算的求和结果进行相加处理,求和电输入端输入的数据为T0,其中TO=0为0次卷积计算的求和结果,求和电路的第二输入端输入的数据为S1,其中,S1为一个第一计算电路输出的第一次卷积计算的求和结果,求和电路输出端向求和电路的第一输入端输出T1=TO+S1,当求和电路的第二输入端再一次输入的数据为S2时,求和电路输出端向求和电路的第一输入端输出T2=T1+S2,其中S2为第一计算电路输出的第一次卷积计算的求和结果,T2为两次卷积计算的求和结果,当第一计算电路输出的一次卷积计算的结果为最后一次的卷积计算的结果时,求和电路的输出端就可以输出最终的卷积结果。[0121]需要说明的是,通过将卷积计算中的点乘法运算拆分成异或运算,从而避免将卷积计算的过程拆分成许多个基本的计算逻辑,进一步降低了实现卷积计算时的功耗。[0122]由于求和电路会对多次卷积计算的结果进行求和,所以求和电路在每进行一次累加时,还需要判断本次累加的一次卷积计算的结果是否为多次卷积计算的结果中的最后一次卷积计算的结果,如果本次累加的卷积计算的结果是最后一次卷积计算的结果时,则该8所示的本发明实施例提供的一种第二计算电路的示意图中的求和电路,图8中的求和电路的一个输入端口1输入的8bit数据为一个第一计算电路的输出数据,输入端口2输入的32bit数据为求和电路上一次求和的结果,求和电路在本次求和结束后,向输入端口2输入本次的求和结果,以便当输入端口1再一次接收到另一个8bit数据,再进行一次求和计算,直至获取最终的一个32bit的求和结果,最终的一个32bit的求和结果也即是最终的卷积结[0123]在一些实施例中,该计算设备可以对最终的卷积结果进行池化操作,以对最终的卷积结果进行降采样。在一种可能的实现方式中,该第二计算电路用于执行多次求和计算,该第二计算电路还包括:缓存器,连接该求和电路,用于缓存该求和电路在多次求和计算过程中的计算结果;池化电路,该池化电路连接该缓存器,用于将该缓存器中缓存的该多次求和计算过程中的计算结果进行池化运算。[0124]在对池化电路进行介绍之前,以图9所示的本发明实施例提供的一种池化计算过程的示意图为例,对池化操作进行如下描述:为了便于描述,将最终的卷积结果称为第一特征图,池化操作的目的是对第一特征图进行降采样处理,那么,可以从第一特征图中选取一些比较大的特征点,以实现降采样处理,具体地,对于一个4*4的第一特征图,可以采用4个2*2的池化核进行池化,2*2用于指示池化核的大小,该神经网络计算设备可以将4*4的第一特征图拆分成4个2*2的第一子特征图1-4,每个2*2的第一子特征图的大小和一个池化核的大小相同,再从每个第一子特征图中筛选出一个最大的特征点,例如第一子特征图1中的特征点包括1,1,5,6,那么可以从第一子特征图1中筛选出特征点6,从而从第一特征图中筛选出4个特征点,再将这4个特征点组合成一个第二特征图,则第二特征图也即是对第一特征图进行池化操作的结果。[0125]为了在池化电路内实现池化操作,该池化电路还包括多个比较器,每个比较器用于比较每个第一子特征图中的特征点。在一种可能的实现方式中,一个比较器包括两个输入接口和一个输出接口,两个输入接口为分别输入接口1和输入接口2,输入接口1与比较器的输出接口相连接,当输入接口2输入一个第一子特征图中的特征点时,若输入接口2接收到任一特征点后,比较器对输入接口1和2输入的特征点进行比较,从输出接口输出一个较大的特征点,当该任一特征点不是第一子特征图中的最后一个特征点时,输出接口向输入接口2输入该较大的特征点,以便将进行下次比较,当该任一特征点是第一子特征图中的最后一个特征点时,输入接口2向组合子单元输出该较大的特征点,进而每个比较器通过循环比较,可以分别输出一个特征点,从而池化电路可以输出一个第二特征图。再例如图8中的池化电路对缓存器中输出的数据16个32bit数据进行循环比较,可以得到一个32bit的数[0126]在一些实施例中,该神经网络计算设备还需要对池化结果进行激活操作,以得到网络层输出的特征图。激活操作是指采用激活函数对特征图进行计算,从而对特征图实现非线性变换的操作。激活函数可以是为线性整流(rectifiedlinearunit,ReLU)函数Relu函数,ReLU函数的数学表达式f(x)=max(0,x),会将池化结果小于0的特征点均转化为0,从而导致输出的特征图产生高稀疏性。在一些实施例中,也可以不对最终的卷积结果进行池化操作,而直接进行激活操作。在一种可能的实施方式中,该第二计算电路还包括:选择电路,该选择电路的第一输入端用于连接该池化电路的输出端,该选择电路的第二输入端用于连接该求和电路的输出端,该选择电路用于选择输出该池化电路的输出结果或该求和电路的输出结果;激活电路,连接该选择电路的输出端,用于对该选择电路的输出结果执行激活操作,并将输出结果输入给第二存储阵列,该第二存储阵列包括多行多列DRAM单元。例如,图7中的选择电路有输入接口0和1,其中输入接口0与求和电路相连接,输入接口1与池化电路相连接,当求和电路的输出结果满足预设条件时,选择电路输出求和电路的输出结果,当池化电路的输出结果满足预设条件时,选择电路输出池化电路的输出结果。[0127]该第二存储阵列可以是第一存储阵列,也可以是第一存储阵列以外的其他存储阵列。将输出结果输入给第二存储阵列,以便该神经网络计算设备可以通过第二存储阵列实现下一个网络层的计算过程,从而神经网络的每个网络层的计算过程都可以在该神经网络计算设备中实现,当该神经网络计算设备完成神经网络最后一个网络层中的计算过程时,那么,激活电路输出的结果也即是整个神经网络的计算结果。[0128]为了进一步说明神经网络计算设备中第二计算电路在进行计算时的过程,以图8中的示例为基础,参见图10,图10是本发明实施例提供的一种神经网络计算设备中SSA附近的逻辑电路框图加法器通过SSA将卷积核每一次卷积计算的结果输出至第二计算电路内的求和电路,在求和电路中对多次卷积计算的结果进行求和,得到最终的卷积结果,再将最终的卷积结果输入至缓存器中,将缓存器中的卷积结果输出至池化电路,通过池化电路对最终的卷积结果进行池化操作,最后将池化结果输入至激活单元,通过激活单元对池化结果进行激活操作,从而激活单元输出一个网络层的输出结果,再将激活单元的出结果输入至阵列回写电路,阵列回写电路将该输出结果重新写入第二存储阵列,以便对下一个网络层进行计算。[0129]当第一存储阵列的规模是1024x1024时,一个第一存储阵列内可以有16个加法树(加法器),同时支持计算16个卷积过程。神经网络计算设备可以包括多个部分bank,每个bank可以包括多个块block,每个block包括16个第一存储阵列,实际上经过布局布线发现若全部配置为计算电路,则神经网络计算设备面积开销过大,因此,将其中8个第一存储阵列配置成计算阵列(8乘积累加运算(multiplyaccumulate,MAC)行(Rows)),其余8个第一存储阵列保持不变,能够实现较好的面积性能平衡。在这种情况下,每个bank拥有64SSAs,所有第一存储阵列能够并行独立计算。多个bank有独立的控制和读写总线,也可以并行运行。本架构充分考虑到计算设备内部资源重复性和并行性,能够实现分布式计算操作资源最大程度的并行化。由于第一存储阵列设计重复性高,对于计算设备工艺制作可能会出现[0130]需要说明的是,该神经网络计算设备还可以包括数据输入/输出接口,其中,数据输入接口用于接收其他设备发送的卷积核、待进行卷积计算的输入数据等,数据输出接口用于向其他设备输出神经网络最后一个网络层输出的数据。[0131]本发明实施例提供的神经网络计算设备,通过将卷积核和待执行卷积计算的输入数据存储在包括多行多列DRAM单元的第一存储阵列中,第一计算电路可以从第一存储阵列内读取卷积核和待执行卷积计算的输入数据,并完成卷积计算,从而在内存中实现了神经网络计算,减少了神经网络数据在内存和神经网络计算节点之间的传输,解决了内存墙的问题。并且,在神经网络计算设备将卷积计算中的乘法运算拆分成异或运算,从而避免将卷积计算的过程拆分成许多个基本的计算逻辑,进一步降低了实现卷积计算时的功耗。该神经网络计算设备中可以包括多个第一存储阵列,从而可以实现并行运行,提高了内存中完成卷积神经网络计算过程的效率。并且,卷积神经网络的中的卷积、池化以及激活等计算过程都可以在神经网络计算设备内完成,从而可以在内存中实现了神经网络中所有的计算过程,可以进一步减少了神经网络数据在内存和神经网络计算节点之间的传输。[0132]该神经网络计算设备可以安装在一个计算机设备上,由计算机设备对该神经网络计算设备进行控制,使得计算机设备可以在该神经网络计算设备完成神经网络的整个计算过程。如图11所示,图11是本发明实施例提供的一种计算设备的结构示意图,该计算设备[0133]控制器1101,用于接收卷积核以及待执行卷积计算的输入数据,并将所述卷积核和所述输入数据发送给连接所述控制器的内存1102;[0135]第一存储阵列,包括多行多列动态随机存取存储器DRAM单元,用于存储控制器发送的所述卷积核和输入数据,其中,所述存储阵列中的第一行DRAM单元用于存储卷积核,所述存储阵列中的至少两行DRAM单元用于存储待执行卷积计[0136]第一计算电路,连接所述存储阵列,用于将所述输入数据与所述卷积核执行多次存储的输入数据进行乘加计算。[0138]多个锁存器,每个锁存器的输入端连接一列DRAM单元,每个锁存器的输出端连接多个乘法器中的一个乘法器,每个锁存器用于缓存对应列的DRAM单元中存储的卷积核中的一个元素的一位数值,其中,所述第一行DRAM单元中的每一个DRAM单元分别用于存储所述卷积核中的一个元素的一位数值;[0139]多个乘法器,每个乘法器的第一输入端分别连接一列DRAM单元,每个乘法器的第二输入端分别连接一个锁存器的输出端;[0140]多个加法器,每个加法器的输入端分别连接至少两个乘法器;[0141]其中,在一次卷积计算过程中,所述多个乘法器分别用于将所述多个锁存器缓存的卷积核与所述多行DRAM单元中的一行DRAM单元存储的所述输入数据执行乘法运算,所述多个加法器分别用于将所述多个乘法器的输出结果进行加法运算,所述多个加法器的输出为一次卷积计算的结果。[0143]第二计算电路,所述第二计算电路连接所述第一计算电路,所述第二计算电路包括求和电路,用于在一次求和计算过程中,将所述第一计算电路中的多个加法器输出的所述一次卷积计算的结果进行求和。[0144]可选地,所述第二计算电路用于执行多次求和计算,所述第二计算电路还[0145]缓存器,连接所述求和电路,用于缓存所述求和电路的在多次求和计算过程中的计算结果;[0146]池化电路,所述池化电路连接所述缓存器,用于将所述缓存器中缓存的所述多次求和计算过程中的计算结果进行池化运算。[0148]选择电路,所述选择电路的第一输入端用于连接所述池化电路的输出端,所述选择电路的第二输入端用于连接所述求和电路的输出端,所述选择电路用于选择输出所述池化电路的输出结果或所述求和电路的输出结果;[0149]激活电路,连接所述选择电路的输出端,用于对所述选择电路的输出结果执行激活操作,并将输出结果输入给第二存储阵列,所述第二存储阵列包括多行多列DRAM单元。[0151]至少一个异或单元,每个异或单元的第一输入端连接一个锁存器,每个异或单元的第二输入端连接一列DRAM单元,每个异或单元用于对一个锁存器缓存的卷积核中的一个元素的一位数值与所述至少两行DRAM单元中的一行DRAM单元中存储的输入数据中的一个元素的一位数值进行异或,其中,所述至少两行DRAM单元中的每一个DRAM单元分别用于存储所述待执行卷积计算的输入数据中的一个元素的一位数值;[0152]一个组合单元,所述组合单元的第一输入端连接所述至少一个异或单元的输出端,所述组合单元的第二输入端连接至少一个锁存器,所述组合单元用于将所述至少一个异或单元输出的数据与至少一个锁存器输出的数据进行组合。[0153]本发明实施例提供的计算设备,通过将卷积核和待执行卷积计算的输入数据存储在包括内存的第一存储阵列中,第一计算电路可以从第一存储阵列内读取卷积核和待执行卷积计算的输入数据,并完成卷积计算,从而在内存中实现了神经网络计算,减少了神经网络数据在内存和神经网络计算节点之间的传输,解决了内存墙的问题。并且,在内存中,将卷积计算中的乘法运算拆分成异或运算,从而避免将卷积计算的过程拆分成许多个基本的计算逻辑,进一步降低了实现卷积计算时的功耗。内存中可以包括多个第一存储阵列,从而可以实现并行运行,提高了内存中完成卷积神经网络计算过程的效率。并且,卷积神经网络的中的卷积、池化以及激活等计算过程都可以在内存中完成,从而可以在内存中实现了神经网络中所有的计算过程,可以进一步减少了神经网络数据在内存和神经网络计算节点之间的传输。[0154]参见图12,图12是本发明实施例提供的一种实施环境的示意图,图12中的计算机列直插式存储模块(dualinlinememorymodules,DIMM),用户可以将神经网络计算设备安装在DIMM内。用户可以根据应用场景的需求来训练量化神经网络,得到符合准确率要求的网络结构和权重值,然后,计算机设备再用编译器(compiler)对应用场景原始数据(图片、音频等)、网络结构和权重进行处理后,当处理后分经网络计算设备会自动进行计算,计算完成后通过中断把消息发给计算机设备处理器(centralprocessingunits,CPU),CPU读回结果数据,完成整个神经网络计算操作。编译器在对原始数据进行编译时,需要调用函数库(library)中的函数来进行编译,编译器可以基于编程语言(language)对原始数据等进行编译,将编译的结果发送给计算设备的驱动(diver),再由驱动控制运行时(runtime)在计算机设备内运行编译结果。需要说明的是,用户界面(userinterface)中的应用程序编程接口(applicationprogramminginterface,API)也可以调用函数库中的函数,以实现API的功能。[0155]图13是本发明实施例提供的一种计算机设备的结构示意图,计算机设备1300包括可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上CPU401和一个或一个以上的存储器1302,其中,该存储器1302中存储有至少一条指令,该至少一条指令由该处理器1301加载并执行以实现下述各个方法实施例提供的方法。当然,该计算机设备1300还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备1300还可以包括其他用于实现设备功能的部件,在此不做赘述。[0156]在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成下述实施例中的神经网络计算方法。例如,该计算机可读存储介质可以是只读存储器(read-onlymemory,ROM)、随机存取存储器(random光数据存储设备等。[0157]为了进一步体现神经网络计算设备实现卷积神经网络内的计算的过程,参见如图14所示的本发明实施例提供的一种神经网络计算方法的流程图,该方法具体包括:[0158]1401、计算机设备向神经网络计算设备发送卷积核以及第一网络层待执行卷积计算的输入数据。[0159]该步骤可以通过计算机设备中的处理器来执行。本发明实施例中,神经网络计算络层可以是神经网络中的任意一层。待执行卷积计算的输入数据可以分为多组输入数据,每一组输入数据包括多个输入数据,每一组输入数据为一个卷积核的扫描窗口在任一网络层输入的特征图上进行一次滑动后,扫描窗口所覆盖的区域中的数据,由于输入的特征图的面积比卷积核的面积大,因此,一个卷积核的扫描窗口需要在输入的特征图上进行多次滑动,所以,一个卷积核可以对应多组输入数据。由于一个卷积核可以包括多个权重,那么,一个权重对应一组输入数据中的一个输入数据。每一组输入数据可以视为一个子特征图。[0160]为了进一步说明卷积核与子特征图之间的对应关系,参见图15所示的本发明实施例提供的一种卷积计算过程的示意图,图15中的输入的特征图由2层,卷积核有2个,卷积核1在输入的特征图的第一层进行4次滑动,进而可以得到卷积核1对应的4个子特征图,分别是子特征图1-4,卷积核2在特征图的第二层进行4次滑动,进而也可以得到卷积核2对应的4[0161]1402、神经网络计算设备接收卷积神经网络的第一网络层的卷积核以及待执行卷积计算的输入数据。[0162]第一网络层的输入数据可以是首次输入神经网络计算设备的待处理的数据,也可以是其他网络层的输出数据。其他网络层的输入数据可以是该其他网络层上一层输出的数据,也可以是首次输入神经网络计算设备的待处理的数据。[0163]由于神经网络计算设备中具有每一层的卷积核,神经网络计算设备可以直接根据每一层的卷积核与上一层的输出数据的位置关系,获取多组待执行卷积计算的输入数据,一个卷积核可以对应至少一组待执行卷积计算的输入数据。[0164]1403、神经网络计算设备将该卷积核存储在第一存储阵列的第一行动态随机存取[0165]1404、神经网络计算设备将该输入数据存储到该第一存储阵列中除所述第一行[0166]由于每个卷积核可以对应至少一个子特征图(即是一组输入数据),从而使得多个子特征图与至少一个卷积核之间存在对应关系,因此,神经网络计算设备可以直接根据这个对应关系,将该多个子特征图与该至少一个卷积核进行关联存储。[0167]为了保证卷积核与子特征图之间的对应关系,存储任一卷积核的DRAM单元和存储任一卷积核所对应的子特征图位于该第一存储阵列中的同一目标列,使得子特征图中的输入数据与卷积核中的权重可以对应。为了进一步说明DRAM单元之间的位置关系,参见图16,图16是本发明实施例提供的一种部署计算数据的示意图。从图16中的第一存储阵列可知,卷积核1存储第一存储阵列的第9行第A目标列,卷积核1在第一存储阵列上的坐标可以表示为(9,A),卷积核1的权重WO存储在第9行的A1子列上,也即是,权重WO在第一存储阵列上的坐标可以表示为(9,A1),卷积核2存储在第一存储阵列的第10行,卷积核1-2、子特征图1-4、子特征图A-D同时位于第一存储阵列的第A列,通过激活两行和一个目标列的数据,来实现卷积核和特征图之间的对应关系,例如,当激活第A目标列中第9行和第1行的数据时,卷积核1和子特征图1就会对应起来,也可以视为卷积核1的扫描窗口进行一次滑动后覆盖了子特征图1。那么神经网络计算设备可以基于第A目标列中第9行和第1行的数据,进行卷积计[0168]具体地,该神经网络计算设备可以通过对第一存储阵列中任一内存地址执行写操作,将任一数据存储至该内存地址中,例如,若将权重W存储在内存地址xxxx所对应的单元时,神经网络计算设备可以通过写操作向内存地址xxxx所对应的DRAM单元内的电容充电,电容中的电荷量可以表示权重W进而可以将权重W存储在内存地址xxxx所对应的单元。由于卷积核中的权重以及待执行卷积计算的输入数据均是用量化后的数据来表示,量化后的数据可能是1bit,也可能是多bit,而第一存储阵列中每个内存地址所对应的DRAM单元仅可以存储1bit的数据,因此,可以用第一存储阵列中的多个相邻的DRAM单元存储一个权重或者单元存储一个权重或者一个输入数据。[0169]需要说明的是,在使用第一存储阵列存储数据之前,需要先查询该神经网络计算设备中存储的目标列表,该目标列表用于存储该第一存储阵列中各个DRAM单元的故障情况,当该目标列表查询到任一DRAM单元被标记为故障时,则该任—DRAM单元不能用于存储数据。[0170]通过目标列表可以对第一存储阵列中的DRAM单元进行验证和标记,可以避免将权重或输入数据存储在有故障的DRAM单元内,以避免从第一存储阵列中无法读取权重或输入数据,进而可以避免后续计算过程中出现错误,从而可以保证神经网络计算设备输出的结果较为精确。[0171]1405、神经网络计算设备基于连接该第一存储阵列的第一计算电路,将该输入数据与该卷积核执行多次卷积运算,每次卷积计算用于将该卷积核与该至少两行DRAM单元中[0172]在一些实施例中,第一计算电路还可以通过锁存器、乘法器以及加法器实现一次卷积计算。在一种可能的实现方式中,本步骤1405可以通过下述步骤51-53所示的过程来实现。[0173]步骤51、神经网络计算设备将存储阵列中存储的卷积核存储在该第一计算电路内的多个锁存器中,每个锁存器用于缓存对应列的DRAM单元中存储的卷积核中的一个元素,[0174]具体地,可以通过打开第一存储阵列中存储卷积核的一行DRAM单元,由于每个锁值存储在每一列上的锁存器上。[0175]步骤52、神经网络计算设备基于该第一计算电路内的多个乘法器,将该多个锁存[0176]对应可以对卷积核内的元素以及一组输入数据执行异或操作,基于异或操作的结[0177]在一种可能的实现方式中,本步骤52可以通过下述步骤1-2该的过程来实现。[0178]步骤1、该神经网络计算设备基于该乘法器内的至少一个异或单元,对一个锁存器缓存的卷积核中的一个元素的一位数值与该至少两行DRAM单元中的一行DRAM单元中存储的输入数据中的一个元素的一位数值进行异或,其中,该至少两行DRAM单元中的每一个DRAM单元分别用于存储该待执行卷积计算的输入数据中的一个元素的一位数值。[0179]具体地,对于第一存储阵列中的任一列,将该任一列上的锁存器所存储的目标元素的1bit数值输入至乘法器的异或单元,并将该任一列上存储的与该目标元素对应的输入数据的1bit数值输入至乘法器的异或单元,该异或单元可以对目标元素的1bit数值以及输入数据的1bit数值进行异或,输出第一数据的次高位。由于卷积核中可能包括多个权重,对于每个权重都需要执行上述异或过程,因此,该神经网络计算设备需要对第一存储阵列存储的卷积核的每个权重执行上述操作,就可以得到多个第一数据的次高位。[0180]步骤2、该神经网络计算设备基于该乘法器内的组合单元,该组合单元用于将该至少一个异或单元输出的数据与至少一个锁存器输出的数据进行组合。[0181]异或单元输出的数据也即是第一数据的次高位,组合单元输出的数据也即是一个第一数据。具体地对于卷积核中的一个元素,该至少一个异或单元输出的数据输入至组合单元,将锁存器中存储的一个元素的各个1bit数据存储输入至组合单元,组合单元将这些输入数据组合成一个第一数据。[0182]由于每个卷积核对应多个输入数据,因此,会得到多个第一数据,基于图16中的数[0183]通过将卷积计算中的乘法运算拆分成异或运算,从而避免将卷积计算的过程拆分成许多个基本的计算逻辑,进一步降低了实现卷积计算时的功耗。[0184]步骤53、该神经网络计算设备基于该第一计算电路内的多个加法器,将该多个乘法器的输出结果进行加法运算,该多个加法器的输出为一次卷积计算的结果。次卷积计算的结果,也即是输出了一个特征点。[0186]多个加法器可以对多个第一数据进行的求和,可以视为多部分求和,P0也即是多部分求和的结果,由于一个卷积核对应多组输入数据,对卷积核对应的每组数据都执行步骤1405,从而可以得到多个多部分求和的结果,多个多部分求和的结果可以组成一个卷积特征图,当有多个卷积核时,该神经网络计算设备对这个多个卷积核都执行步骤1405,可以得到多个卷积特征图,例如,图15中部分求和的部分,基于卷积核1,得到一个卷积特征图1,基于卷积核2,得到一个卷积特征图2。[0187]对于一个卷积核对应的各组输入数据均执行步骤1405的过程,则可以得到多个特征点,这多个特征点也即是一个卷积核多次卷积的结果。当卷积核的数目大于1时,可以对每个卷积核执行上述步骤1405的过程,从而可以得到每个卷积核的多次卷积计算的结果。[0188]1406、在一次求和计算过程中,神经网络计算设备基于该神经网络计算设备中第二计算电路内的求和电路,将该多个加法器输出的该一次卷积计算的结果进行求和。[0189]该求和电路可以实现多次求和,可以将本一次的卷积计算的结果与以前多次的卷积计算的结果进行求和,具体地,神经网络计算设备将每一次的卷积计算的结果输入至求和电路,求和电路根据求和电路中上一层求和的结果进行累加,进而可以对多次卷积计算的结果进行求和,从而实现多次求和,以得到最终的卷积结果。以图15中的求和部分为例,神经网络计算设备对卷积特征图1和卷积特征图2进行求和,得到第一特征图[RO,R1;R2,R3]的矩阵。[0190]1407、神经网络计算设备基于该神经网络计算设备中的缓存器,缓存该求和电路的在多次求和计算过程中的计算结果。[0191]多次求和计算过程中的计算结果也即是最终的卷积结果。[0192]1408、神经网络计算设备基于该神经网络计算设备中的池化电路,将该缓存器中缓存的该多次求和计算过程中的计算结果进行池化运算。[0193]神经网络计算设备将最终的卷积结果输入至池化电路的多个比较器内,多个比较器进行循环比较,从而可以输出多个具有代表性的特征点,这多个具有代表性的特征点也即是池化运算的结果。例如,图15中的池化部分,神经网络设备将第一特征图[RO,R1;R2,R3]输入至池化电路,池化电路对第一特征图[RO,R1;R2,R3]进行池化操作,输出池化结果D0.比较器具体的比较过程在前文已经叙述,在此不再赘述。[0194]1409、神经网络计算设备基于该神经网络计算设备中的选择电路,选择输出该池化电路的输出结果或该求和电路的输出结果。[0195]在一些实施例中神经网络计算设备可以不执行步骤1407-1408所示的过程,而可以直接对最终的卷积结果进行激活操作(步骤1410),而有些实施例需要执行骤1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026应急管理大学招聘45人备考题库(北京)含答案详解(巩固)
- 2026山东济宁医学院附属医院招聘工作人员51人备考题库附答案详解(黄金题型)
- 2026国家生物信息中心应用发展部王前飞科研单元招聘1人备考题库(北京)含答案详解
- 2026安徽合肥国家实验室技术支撑岗位招聘备考题库及答案详解(历年真题)
- 2026江西萍乡武功山风景名胜区公办养老机构招聘护理员的招聘5人备考题库及答案详解(网校专用)
- 2026年甘肃省平凉工业园区管委会选聘15人备考题库附答案详解(预热题)
- 2026云南红河州建水滇南云水环境治理有限公司招聘2人备考题库及答案详解(夺冠系列)
- 2026云南省有色地质局三〇六队招聘12人备考题库附答案详解(综合题)
- 2026江苏无锡市宜兴市卫生健康系统研究生校园招聘7人备考题库(第二批)含答案详解
- 2026温州瓯海全域空间设计咨询有限公司面向社会招聘2人备考题库及答案详解参考
- 2026年国企中层干部公开遴选笔试试卷(附答案)
- 2026年小学生安全知识竞赛试题库及答案
- 2026年北京市东城区高三二模英语试卷(含答案)
- 武汉市2026届高三年级四月供题(武汉四调)语文+答案
- 2026年《碳达峰碳中和综合评价考核办法》培训课件
- 2026年春季学期周末托管服务实施方案
- 2026年及未来5年市场数据中国代驾服务行业市场深度评估及投资战略规划报告
- 云天化集团有限责任公司招聘笔试题库2026
- 汽车吊安全检查要点
- 【真题】2025年内蒙古自治区三支一扶考试《申论》试题及答案解析
- 物品紧急采购报销制度
评论
0/150
提交评论