CN109740732A - 神经网络处理器、卷积神经网络数据复用方法及相关设备 - Google Patents
神经网络处理器、卷积神经网络数据复用方法及相关设备 Download PDFInfo
- Publication number
- CN109740732A CN109740732A CN201811614780.3A CN201811614780A CN109740732A CN 109740732 A CN109740732 A CN 109740732A CN 201811614780 A CN201811614780 A CN 201811614780A CN 109740732 A CN109740732 A CN 109740732A
- Authority
- CN
- China
- Prior art keywords
- convolution
- data
- original input
- input data
- convolutional neural
- 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
Classifications
-
- 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
-
- 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
Abstract
一种神经网络处理器,包括:存储电路,存储进行卷积运算所需的初始输入数据和权重值;至少一个计算电路,包括:数据缓存器,缓存初始输入数据;权重缓存器,缓存权重值;卷积运算器,在当前层卷积神经网络中根据初始输入数据及权重值进行卷积运算得到多个第一卷积结果,并将具有对应关系的第一卷积结果进行累加后得到多个第二卷积结果;同时,删除所述多个第一卷积结果;结果缓存器,缓存多个第二卷积,作为下一层卷积神经网络的所述初始输入数据。本发明还提供一种卷积神经网络数据复用方法、装置、电子设备及存储介质。本发明通过多层次数据复用,提高了神经网络处理器的运算速度,并降低了功耗。
Description
技术领域
本发明涉及人工智能技术领域,具体涉及一种神经网络处理器、卷积神经网络数据复用方法、卷积神经网络数据复用装置、电子设备以及存储介质。
背景技术
神经网络处理器中最常用的一种模型为卷积神经网络模型,然而,卷积神经网络模型在进行运算时存在速度慢,功耗大等一系列问题。因此,如何提高神经网络处理器中卷积神经网络模型的运算速度并降低功耗,成为当前亟待解决的技术问题。
发明内容
鉴于以上内容,有必要提出一种神经网络处理器、卷积神经网络数据复用方法、卷积神经网络数据复用装置、电子设备及存储介质,通过复用数据来提高神经网络处理器的运算速度,并降低神经网络处理器的功耗。
本发明的第一方面提供一种神经网络处理器,所述神经网络处理器包括:
存储电路,用于存储进行卷积运算所需的初始输入数据和权重值;
至少一个计算电路,用于从所述存储电路中读取所述初始输入数据和所述权重值,并基于所述初始输入数据和所述权重值进行卷积运算,其中,所述至少一个计算电路包括:
数据缓存器,用于缓存所述计算电路读取的所述初始输入数据;
权重缓存器,用于缓存所述计算电路读取的所述权重值;
卷积运算器,用于在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果,并将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果;同时,当对所有具有对应关系的所述第一卷积结果进行累加后,删除所述多个第一卷积结果;
结果缓存器,用于缓存所述多个第二卷积结果,并根据预设存储规则将所述多个第二卷积结果发送至所述数据缓存器中,作为下一层卷积神经网络的所述初始输入数据;或者,发送至所述存储电路中进行存储。
优选的,所述预设存储规则包括:
当所述当前层卷积神经网络不为最后一层卷积神经网络时,所述结果缓存器将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述数据缓存器;
当所述当前层卷积神经网络为最后一层卷积神经网络时,所述结果缓存器将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路中。
优选的,所述卷积运算器在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果包括:
将所述初始输入数据的第Q行数据与预设卷积核的第L行数据进行卷积运算,对应得到的数据为第三卷积结果的第Q-L+1行的子数据;
将所有位于第Q-L+1行的子数据进行累加,得到第Q-L+1行的数据;
根据所述第三卷积结果与所述权重值进行卷积运算得到多个所述第一卷积结果;
其中,Q的取值范围为1至M,M为所述初始输入数据的总行数,L的取值范围为1至N,N为所述预设卷积核的总行数。
优选的,将所述初始输入数据的所述第Q行数据分别与所述预设卷积核的每行数据都进行卷积运算,并当所述第Q行数据与所述预设卷积核的所有行数据都进行了卷积运算之后,对所述初始输入数据的所述第Q行数据进行删除,直至将所述初始输入数据删除完毕。
本发明的第二方面提供一种卷积神经网络数据复用方法,应用于电子设备中,所述电子设备包括上述的神经网络处理器,所述方法包括:
通过所述存储电路存储进行卷积运算所需的初始输入数据和权重值;
控制所述至少一个计算电路在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果,将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果;
当对所有具有对应关系的所述第一卷积结果进行累加后,控制所述至少一个计算电路删除所述多个第一卷积结果;
当所述当前层卷积神经网络不为最后一层卷积神经网络时,将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述至少一个计算电路中进行缓存,作为下一层卷积神经网络的所述初始输入数据;
当所述当前层卷积神经网络为所述最后一层卷积神经网络时,将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路中。
优选的,控制所述至少一个计算电路在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果包括:
将所述初始输入数据的第Q行数据与预设卷积核的第L行数据进行卷积运算,对应得到的数据为第三卷积结果的第Q-L+1行的子数据;
将所有位于第Q-L+1行的子数据进行累加,得到第Q-L+1行的数据;
根据所述第三卷积结果与所述权重值进行卷积运算得到多个所述第一卷积结果;
其中,Q的取值范围为1至M,M为所述初始输入数据的总行数,L的取值范围为1至N,N为所述预设卷积核的总行数。
优选的,将所述初始输入数据的所述第Q行数据分别与所述预设卷积核的每行数据都进行卷积运算,并当所述第Q行数据与所述预设卷积核的所有行数据都进行了卷积运算之后,对所述初始输入数据的所述第Q行数据进行删除,直至将所述初始输入数据删除完毕。
本发明第三方面提供一种卷积神经网络数据复用装置,安装于电子设备中,所述电子设备包括上述的神经网络处理器,所述装置包括:
存储模块,用于通过所述存储电路存储进行卷积运算所需的初始输入数据和权重值;
卷积运算模块,用于控制所述至少一个计算电路在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果,将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果;
删除模块,用于当对所有具有对应关系的所述第一卷积结果进行累加后,控制所述至少一个计算电路删除所述多个第一卷积结果;
第一确定模块,用于当所述当前层卷积神经网络不为最后一层卷积神经网络时,将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述至少一个计算电路中进行缓存,作为下一层卷积神经网络的所述初始输入数据;
第二确定模块,用于当所述当前层卷积神经网络为所述最后一层卷积神经网络时,将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路中。
本发明的第四方面提供一种电子设备,所述电子设备包括处理器,所述处理器用于执行存储器中存储的运算机程序时实现所述卷积神经网络数据复用方法。
本发明的第五方面提供一种运算机可读存储介质,所述运算机可读存储介质上存储有运算机程序,所述运算机程序被处理器执行时实现所述卷积神经网络数据复用方法。
本发明通过至少一个计算电路第一次从存储电路中读出初始输入数据和权重值进行第一次卷积运算,实现了同一个初始输入数据和权重值在不同计算电路中的第一次数据复用;通过将第一卷积结果与多个具有对应关系的其他第一卷积结果进行累加,实现了同一个第一卷积结果在同一个计算电路中的第二次数据复用;通过将多个具有对应关系的第一卷积结果进行累加后得到第二卷积结果,作为下一层卷积神经网络的初始输入数据,实现了卷积神经网络层与层之间的第三次数据复用。即,通过三次数据复用,提高了数据的利用率,减少了数据访问的次数,从而提高了计算电路的运算速度,并降低了神经网络处理器的功耗。
其次,通过将初始输入数据中的每一行数据与整个卷积核进行卷积运算,实现了初始输入数据的每一行数据的第四次复用,能够进一步地提高数据的利用率,减少数据访问的次数,从而进一步地提高了计算电路的运算速度,并降低了神经网络处理器的功耗。
再次,在对所有具有对应关系的所述第一卷积结果进行累加后,删除第一卷积结果,节省了存储电路的存储空间;在初始输入数据的某行数据与卷积核完成了卷积运算后,将初始输入数据的该行数据进行删除,能够进一步节省存储电路的存储空间。
另外,在有多个计算电路并行运行的情况下,能够提高并行计算的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明较佳实施例提供的神经网络处理器的示意图。
图2是本发明实施例提供的另一神经网络处理器的示意图。
图3是本发明较佳实施例提供的进行卷积运算时数据复用的示意图。
图4是本发明较佳实施例提供的卷积神经网络数据复用方法的流程示意图。
图5是本发明较佳实施例提供的卷积神经网络数据复用装置的结构图。
图6是本发明较佳实施例提供的电子设备的示意图。
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
实施例一
请同时参阅图1和图2所示,为本发明实施例提供的神经网络处理器的示意图。
本实施例中,所述神经网络处理器1可以包括:存储电路10、至少一个计算电路20,其中,计算电路20连接至所述存储电路10。所述神经网络处理器1可以是可编程逻辑器件,例如现场可编程逻辑阵列(Field Programmable Gate Array,FPGA),还可以是专用神经网络处理器(Application Specific Integrated Circuits,ASIC)。
关于计算电路20的数量可以依据实际情况自行设定,可根据整个运算量及每一个计算电路所能处理的运算量综合考虑所需要的计算电路的数量,例如,图1中显示了两个并列的计算电路20。
本实施例中,所述神经网络处理器1用于将用户配置的进行卷积运算所需的初始输入数据和权重值存储于所述存储电路10中,通过至少一个计算电路20从所述存储电路10中读取所述初始输入数据和所述权重值并基于所述初始输入数据和所述权重值进行卷积运算。
由于进行卷积运算所需的初始输入数据和权重值统一存储于所述存储电路10中,当有多个计算电路20时,可以同步从所述存储电路10中读取初始输入数据和权重值。如此,可以实现初始输入数据和权重值的复用,达到减少数据访问次数,降低处理器功耗的目的。
本实施例中,所述多个计算电路20可以组成运算阵列,多个计算电路20同步从所述存储电路10中读取进行卷积运算所需的初始输入数据和权重值,并以并行处理的方式进行卷积运算。所述卷积神经网络模型采用全连接的方式进行运算。
本实施例中,所述计算电路20中还可以预先存储有进行卷积运算所需的通道数、图片大小等参数。
本实施例中,所述存储电路10可以包括:数据存储器100及权重存储器102。
所述数据存储器100用于存储进行卷积运算所需的初始输入数据。所述初始输入数据可以为输入特征图,作为初始数据参与运算。所述数据存储器100还可以用于存储所述至少一个计算电路20运算得到的最终的卷积结果。
所述权重存储器102用于存储进行卷积运算所需的权重值。
本实施例中,所述计算电路20可以包括:数据缓存器200、权重缓存器202、卷积运算器204及结果缓存器206,其中,所述结果缓存器206还分别连接至所述存储电路10中的数据存储器100和计算电路20中的数据缓存器200。
所述数据缓存器200用于缓存所述计算电路20从所述数据存储器中读取的所述初始输入数据。所述初始输入数据有两方面的来源:一是计算电路20从所述数据存储器100中读取的,二是计算电路20运算得到的中间的卷积结果,所述中间的卷积结果由所述结果缓存器206回传至所述数据缓存器200中,作为下一层卷积神经网络的初始输入数据。每一个数据缓存器200中可以同时存储多个初始输入数据。在其他实施例中,每一个数据缓存器200中还可以仅能存储一个初始输入数据。当所述一个初始输入数据进行卷积运算得到所有的卷积结果之后,可以删除掉。所述所有的卷积结果进行累加后再作为新的初始输入数据缓存入所述数据缓存器200中,因而,所述数据缓存器200是一个类似先入先出(First InFirst Out,FIFO)的缓存器。
所述权重缓存器202用于缓存所述计算电路20从所述权重存储器102中读取的所述权重值。
所述卷积运算器204用于根据所述数据缓存器200中的所述初始输入数据及所述权重缓存器202中的所述权重值,在当前层卷积神经网络中进行卷积运算得到多个第一卷积结果,并将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果;同时,当对所有具有对应关系的所述第一卷积结果进行累加后,删除所述多个第一卷积结果。
关于卷积运算器204进行卷积运算的过程参见图3及其相关描述。
所述结果缓存器206用于缓存所述多个第二卷积结果,并根据预设存储规则将所述多个第二卷积结果发送至所述数据缓存器200中,作为下一层卷积神经网络的所述初始输入数据;或者,发送至所述存储电路10中进行存储。不同的计算电路20使用相同的初始输入数据进行卷积运算得到的卷积结果不同。因而,不同的计算电路20的结果缓存器206中存放的是不同的卷积结果。每一个计算电路20的结果缓存器206中也可以同时存放多个卷积结果。
本实施例中,所述预设存储规则为预先设置的存储规则,所述预设存储规则可以包括:
当所述当前层卷积神经网络不为最后一层卷积神经网络时,所述结果缓存器206将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述数据缓存器200;
当所述当前层卷积神经网络为最后一层卷积神经网络时,所述结果缓存器206将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路10中。
由于在进行卷积运算的过程中,通常是上一层卷积神经网络的输出作为下一层卷积神经网络的输入,即第一层卷积神经网络的输出作为第二层卷积神经网络的输入,第二层卷积神经网络的输出作为第三层卷积神经网络的输入,以此类推,直到最后一层卷积神经网络输出卷积结果为止。如果不是最后一层卷积神经网络,所述结果缓存器206将中间的卷积结果直接缓存到对应所述计算电路20的数据缓存器200中,作为下一层卷积神经网络的初始输入数据进行卷积运算。如果是最后一层卷积神经网络,所述结果缓存器206将最终的卷积结果发送至存储电路10中的数据存储器100中进行存储。
下面结合图2所示的示意图举例说明本发明实施例提供的所述神经网络处理器1的数据处理过程。
示例性的,假设存储电路10中存储的进行卷积运算所需的所述初始输入数据以Ci0表示,权重值以Weight表示,其中,所述初始输入数据Ci0存储于所述数据存储器100中,所述权重值Weight存储于所述权重存储器102中。
第一步,所述存储电路10向所有计算电路20(图中用PE表示)进行广播。每一个计算电路20接收到广播信号后,同步从所述数据存储器100中读取所述初始输入数据Ci0并缓存至所述数据缓存器200;同时,每一个计算电路20还同步从所述权重存储器102中读取所述权重值Weight并缓存至所述权重缓存器202中。
每一个计算电路20的卷积运算器204(图中用MAC表示)根据对应的数据缓存器200(图中用IBUF表示)中的初始输入数据Ci0及对应的权重存储器102中的权重值Weight进行第一层卷积神经网络的卷积运算,得到第一层的卷积结果Co0,并将所述第一层的卷积结果Co0缓存至所述结果缓存器206中。由于第一步运算得到的卷积运算结果Co0并不是最后层的卷积运算结果,因而,结果缓存器206(图中用OBUF表示)将所述第一层的卷积运算结果Co0回传至所述计算电路20的数据缓存器200中进行缓存,作为第二层卷积神经网络的初始输入数据Ci1。
第二步,计算电路20同步从数据缓存器200中读取初始输入数据Ci1;卷积运算器204根据对应的数据缓存器200中的初始输入数据Ci1及对应的权重缓存器202中的权重值进行第二层卷积神经网络的卷积运算,得到第二层的卷积结果Co1,并将所述第一层的卷积结果Co1缓存至所述结果缓存器206中。结果缓存器206将所述第二层的卷积运算结果Co1回传至所述计算电路20的数据缓存器200中进行缓存,作为第三层卷积神经网络的初始输入数据Ci2。
以此类推。
最后一步,每一个计算电路20根据倒数第二步运算得到的卷积结果和权重值进行最后层卷积神经网络的卷积运算,得到最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路10中的数据存储器100中进行存储。
需要说明的是,由于本实施例中的卷积神经网络模型采用的是全连接的方式,则每一个计算电路20在进行卷积运算的过程中,数据缓存器200中的一个初始输入数据,在当前层卷积神经网络中进行卷积运算后,会得到多个第一卷积结果,具有对应关系(例如,同一个神经元)的所述第一卷积结果进行累加后得到多个第二卷积结果。当对所有具有对应关系的所述第一卷积结果进行累加后,该初始输入数据可以被删掉。直到最后一层卷积神经网络完成卷积运算之后,就得到了最终的卷积结果。
本实施例中,为便于与作为输入特征图的所述初始输入数据相对应,所述卷积结果也称之为输出特征图。上述实施例阐述了所述神经网络处理器1的数据处理过程,其中有三个层次的数据复用过程。通过这三个层次的数据复用可以大大提升神经网络处理器的运算并行度,有效的降低整个处理器的功耗。
下面具体说明三个层次的数据复用:
第一层次数据复用:每个计算电路20第一次同步从存储电路10中读取初始输入数据和权重值,完成第一层卷积神经网络中的卷积运算,如此实现了同一个初始输入数据和权重值在不同计算电路20中的第一次数据复用。
第二层次数据复用:每个计算电路20的结果缓存器206中可以同时存放多个第一卷积结果,将第一卷积结果与多个具有对应关系的其他第一卷积结果进行累加,实现了同一个第一卷积结果在同一个计算电路20中的第二次数据复用。
第三层次数据复用:所述所有卷积结果(包括中间的卷积结果和最终的卷积结果)可以全部缓存于所述结果缓存器206中,如果第二卷积结果为中间的卷积结果,则结果缓存器206将中间的卷积结果直接回传到所述数据缓存器200中进行缓存且作为下一层卷积神经网络的初始输入数据。即,通过将多个具有对应关系的第一卷积结果进行累加后得到第二卷积结果,作为下一层卷积神经网络的初始输入数据,实现了卷积神经网络层与层之间的第三次数据复用。
上述三个层次的数据复用可以从图1和图2中体现出,本发明实施例还提出了第四层次数据复用的方案,通过第四层次数据复用,进一步优化了运算的并行度、提高了卷积运算器的运算效率和数据利用率。第四层次数据复用的过程详情参见如下图3所示的示意图。
图3为卷积运算器使用某个初始输入数据运算对应的卷积结果的过程的示意图。图3左边的为卷积核,图3中间的为初始输入数据,图3右边的为对应得到的卷积结果。
所述卷积运算器在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果包括:
将所述初始输入数据的第Q行数据与预设卷积核的第L行数据进行卷积运算,对应得到的数据为第三卷积结果的第Q-L+1行的子数据;
将所有位于第Q-L+1行的子数据进行累加,得到第Q-L+1行的数据;
根据所述第三卷积结果与所述权重值进行卷积运算得到多个所述第一卷积结果;
其中,Q的取值范围为1至M,M为所述初始输入数据的总行数,L的取值范围为1至N,N为所述预设卷积核的总行数。
将所述初始输入数据的所述第Q行数据分别与所述预设卷积核的每行数据都进行卷积运算,并当所述第Q行数据与所述预设卷积核的所有行数据都进行了卷积运算之后,对所述初始输入数据的所述第Q行数据进行删除,直至将所述初始输入数据删除完毕。
示例性的,每一个计算电路20的卷积运算器204采用3*3的卷积核。卷积核依次从初始输入数据的左边滑到右边,从初始输入数据的上边滑到下边,在滑动的过程中进行累乘加运算,得到对应位置的卷积结果。
当所述卷积核滑到如图3所示的位置1(即卷积核滑到初始输入数据的第m-2行、第m-1行和第m行)的时候,其中卷积核中的w6、w7、w8需要与第m行的数据进行卷积运算,得到的数据对应的是卷积结果的第m-2的结果。
当所述卷积核滑到如图3所示的位置2(即卷积核滑到初始输入数据的第m-1行、第m行和第m+1行)的时候,其中卷积核中的w3、w4、w6需要与第m行的数据进行卷积运算,得到的数据对应的是卷积结果的第m-1行的结果。
当所述卷积核滑到如图3所示的位置3(即卷积核滑到初始输入数据的第m行、第m+1行和第m+2行的时候,其中卷积核中的w1、w2、w3需要与第m行的数据进行卷积运算,得到的数据对应的是卷积结果的第m行的结果。
由上述可以看到,第四层次数据复用:在所述卷积运算器204运算一个卷积结果过程中,初始输入数据的同一行,例如,初始输入数据的第m行数据,可以进行L*卷积结果的个数(L为卷积核的行数)次复用。即,通过将初始输入数据中的一行数据与整个卷积核进行卷积运算,实现了初始输入数据的一行数据的第四次复用。
综上所述,本本发明通过至少一个计算电路第一次从存储电路中读出初始输入数据和权重值进行第一次卷积运算,实现了同一个初始输入数据和权重值在不同计算电路中的第一次数据复用;通过将第一卷积结果与多个具有对应关系的其他第一卷积结果进行累加,实现了同一个第一卷积结果在同一个计算电路中的第二次数据复用;通过将多个具有对应关系的第一卷积结果进行累加后得到第二卷积结果,作为下一层卷积神经网络的初始输入数据,实现了卷积神经网络层与层之间的第三次数据复用。即,通过三次数据复用,提高了数据的利用率,减少了数据访问的次数,从而提高了计算电路的运算速度,并降低了神经网络处理器的功耗。
其次,通过将初始输入数据中的每一行数据与整个卷积核进行卷积运算,实现了初始输入数据的每一行数据的第四次复用,能够进一步地提高数据的利用率,减少数据访问的次数,从而进一步地提高了计算电路的运算速度,并降低了神经网络处理器的功耗。
再次,在对所有具有对应关系的所述第一卷积结果进行累加后,删除第一卷积结果,节省了存储电路的存储空间;在初始输入数据的某行数据与卷积核完成了卷积运算后,将初始输入数据的该行数据进行删除,能够进一步节省存储电路的存储空间。
另外,在有多个计算电路并行运行的情况下,能够提高并行计算的效率。
实施例二
图4是本发明实施例二提供的卷积神经网络数据复用方法的流程图。
所述卷积神经网络数据复用方法可以应用于移动电子设备或者固定电子设备中,所述电子设备并不限定于个人电脑、智能手机、平板电脑、安装有摄像头的台式机或一体机等。电子设备将用户配置的进行卷积运算所需的初始输入数据和权重值存储于存储电路10中,通过控制至少一个计算电路20从所述存储电路10中读取所述初始输入数据和权重值并基于所述初始输入数据和所述权重值进行卷积运算。由于进行卷积运算所需的初始输入数据和权重值统一存储于所述存储电路10中,当有多个计算电路20时,多个计算电路可以同步从所述存储电路10中读取初始输入数据和权重值。如此,可以实现初始输入数据和权重值的复用,达到减少数据访问次数,降低处理器功耗的目的。
对于需要进行卷积神经网络数据复用的电子设备,可以直接在电子设备上集成本发明的方法所提供的卷积神经网络数据复用功能。或者以软件开发工具包(SoftwareDevelopment Kit,SDK)的形式提供卷积神经网络数据复用的功能的接口,电子设备通过所提供的接口实现卷积神经网络数据的复用。
所述卷积神经网络数据复用方法也可以应用于由终端和通过网络与所述终端进行连接的服务器所构成的硬件环境中。网络包括但不限于:广域网、城域网或局域网。本发明实施例的图像特征提取方法可以由服务器来执行,也可以由终端来执行,还可以是由服务器和终端共同执行。
在上下文中所称的终端或者服务器,是指可以通过运行预定程序或指令来执行数值运算和/或逻辑运算等预定处理过程的智能终端,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。运算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或运算机可读介质(比如存储介质)中。一个或多个处理器可以实施必要的任务。
如图4所示,所述卷积神经网络数据复用方法具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
S41:通过所述存储电路存储进行卷积运算所需的初始输入数据和权重值。
本实施例中,用户可以事先配置进行卷积运算所需的初始输入数据及权重值,并存储于电子设备中。
所述电子设备获取进行卷积运算所需的初始输入数据及权重值后存储于存储电路10中。其中,所述初始输入数据可以存储于所述存储电路10的数据存储器100中,所述初始输入数据可以为输入特征图,作为初始数据参与运算。所述权重值可以存储于所述存储电路10的权重存储器102中。
S42:控制所述至少一个计算电路在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果,将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果。
本实施例中,可以设置多个计算电路20组成运算阵列,多个计算电路20同步从所述存储电路10中读取进行卷积运算所需的初始输入数据和权重值,并以并行处理的方式进行卷积运算。所述卷积神经网络模型采用全连接的方式进行运算。
关于计算电路20的数量可以依据实际情况自行设定,可根据整个运算量及每一个计算电路所能处理的运算量综合考虑所需要的计算电路的数量,例如,图1中显示了两个并列的计算电路20。
具体的,控制每一个计算电路20从对应的数据存储器100中读取所述初始输入数据并缓存至对应的数据缓存器200中,同时,控制每一个计算电路20从对应的权重存储器102中读取所述权重值并缓存至对应的权重缓存器202中。
所述初始输入数据有两方面的来源:一是计算电路20从所述数据存储器100中读取的,二是计算电路20运算得到的中间的卷积结果,所述中间的卷积结果由所述结果缓存器206回传至所述数据缓存器200中,作为下一层卷积神经网络的初始输入数据。每一个数据缓存器200中可以同时存储多个初始输入数据。在其他实施例中,每一个数据缓存器200中还可以仅能存储一个初始输入数据。当所述一个初始输入数据进行卷积运算得到所有的卷积结果之后,可以删除掉。所述所有的卷积结果进行累加后再作为新的初始输入数据缓存入所述数据缓存器200中,因而,所述数据缓存器200是一个类似先入先出(First InFirst Out,FIFO)的缓存器。
具体的,所述卷积运算器204根据所述数据缓存器200中的所述初始输入数据及所述权重缓存器202中的所述权重值,在当前层卷积神经网络中进行卷积运算得到多个第一卷积结果,并将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果。
不同的计算电路20进行卷积运算得到的卷积结果均不相同。关于卷积运算器204进行卷积运算的过程参见图3及其相关描述。
S43:当对所有具有对应关系的所述第一卷积结果进行累加后,控制所述至少一个计算电路删除所述多个第一卷积结果。
计算电路20的卷积运算器204当对所有具有对应关系的所述第一卷积结果进行累加后,删除所述多个第一卷积结果。
S44:判断所述当前层卷积神经网络是否为最后一层卷积神经网络。
结果缓存器206得到卷积结果之后,判断该得到的卷积结果是否为最终的卷积结果。
当确定所述当前层卷积神经网络不为最后一层卷积神经网络时,执行S45;否则,确定所述当前层卷积神经网络为最后一层卷积神经网络时,执行S46。
S45:将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述至少一个计算电路中进行缓存,作为下一层卷积神经网络的所述初始输入数据。
当所述当前层卷积神经网络不为最后一层卷积神经网络时,所述结果缓存器206将所述当前层的多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述计算电路20中的数据缓存器200进行缓存,作为下一层卷积神经网络的初始输入数据。
S46:将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路中。
当所述当前层卷积神经网络为最后一层卷积神经网络时,所述结果缓存器206将所述当前层的多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路10中的数据存储器100进行存储。
由于在进行卷积运算的过程中,通常是上一层卷积神经网络的输出作为下一层卷积神经网络的输入,即第一层卷积神经网络的输出作为第二层卷积神经网络的输入,第二层卷积神经网络的输出作为第三层卷积神经网络的输入,以此类推,直到最后一层卷积神经网络输出卷积结果为止。如果不是最后一层卷积神经网络,所述结果缓存器206将中间的卷积结果直接缓存到对应所述计算电路20的数据缓存器200中,作为下一层卷积神经网络的初始输入数据进行卷积运算。如果是最后一层卷积神经网络,所述结果缓存器206将最终的卷积结果发送至存储电路10中的数据存储器100中进行存储。
下面结合图2所示的示意图举例说明本发明实施例提供的所述神经网络处理器1的数据处理过程。
示例性的,假设存储电路10中存储的进行卷积运算所需的所述初始输入数据以Ci0表示,权重值以Weight表示,其中,所述初始输入数据Ci0存储于所述数据存储器100中,所述权重值Weight存储于所述权重存储器102中。
第一步,所述存储电路10向所有计算电路20(图中用PE表示)进行广播。每一个计算电路20接收到广播信号后,同步从所述数据存储器100中读取所述初始输入数据Ci0并缓存至所述数据缓存器200;同时,每一个计算电路20还同步从所述权重存储器102中读取所述权重值Weight并缓存至所述权重缓存器202中。
每一个计算电路20的卷积运算器204(图中用MAC表示)根据对应的数据缓存器200(图中用IBUF表示)中的初始输入数据Ci0及对应的权重缓存器202中的权重值Weight进行第一层卷积神经网络的卷积运算,得到第一层的卷积结果Co0,并将所述第一层的卷积结果Co0缓存至所述结果缓存器206中。由于第一步运算得到的卷积运算结果Co0并不是最后层的卷积运算结果,因而,结果缓存器206(图中用OBUF表示)将所述第一层的卷积运算结果Co0回传至所述计算电路20的数据缓存器200中进行缓存,作为第二层卷积神经网络的初始输入数据Ci1。
第二步,计算电路20同步从数据缓存器200中读取初始输入数据Ci1;卷积运算器204根据对应的数据缓存器200中的初始输入数据Ci1及对应的权重缓存器202中的权重值进行第二层卷积神经网络的卷积运算,得到第二层的卷积结果Co1,并将所述第一层的卷积结果Co1缓存至所述结果缓存器206中。结果缓存器206将所述第二层的卷积运算结果Co1回传至所述计算电路20的数据缓存器200中进行缓存,作为第三层卷积神经网络的初始输入数据Ci2。
以此类推。
最后一步,每一个计算电路20根据倒数第二步运算得到的卷积结果和权重值进行最后层卷积神经网络的卷积运算,得到最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路10中的数据存储器100中进行存储。
需要说明的是,由于本实施例中的卷积神经网络模型采用的是全连接的方式,则每一个计算电路20在进行卷积运算的过程中,数据缓存器200中的一个初始输入数据,在当前层卷积神经网络中进行卷积运算后,会得到多个第一卷积结果,具有对应关系(例如,同一个神经元)的所述第一卷积结果进行累加后得到多个第二卷积结果。当对所有具有对应关系的所述第一卷积结果进行累加后,该初始输入数据可以被删掉。直到最后一层卷积神经网络完成卷积运算之后,就得到了最终的卷积结果。
本实施例中,为便于与作为输入特征图的所述初始输入数据相对应,所述卷积结果也称之为输出特征图。上述实施例阐述了所述神经网络处理器1的数据处理过程,其中有三个层次的数据复用过程。通过这三层的数据复用可以大大提升神经网络处理器的运算并行度,有效的降低整个处理器的功耗。
下面具体说明三层的数据复用:
第一层次数据复用:每个计算电路20第一次同步从存储电路10中读取初始输入数据和权重值,完成第一层卷积神经网络中的卷积运算,如此实现了同一个初始输入数据和权重值在不同计算电路20中的第一次数据复用。
第二层次数据复用:每个计算电路20的结果缓存器206中可以同时存放多个第一卷积结果,将第一卷积结果与多个具有对应关系的其他第一卷积结果进行累加,实现了同一个第一卷积结果在同一个计算电路20中的第二次数据复用。
第三层次数据复用:所述所有卷积结果(包括中间的卷积结果和最终的卷积结果)可以全部缓存于所述结果缓存器206中,如果第二卷积结果为中间的卷积结果,则结果缓存器206将中间的卷积结果直接回传到所述数据缓存器200中进行缓存且作为下一层卷积神经网络的初始输入数据。即,通过将多个具有对应关系的第一卷积结果进行累加后得到第二卷积结果,作为下一层卷积神经网络的初始输入数据,实现了卷积神经网络层与层之间的第三次数据复用。
上述三个层次的数据复用可以从图1和图2中体现出,本发明实施例还提出了第四层次数据复用的方案,通过第四层次数据复用,进一步优化了运算的并行度、提高了卷积运算器的运算效率和数据利用率。第四层次数据复用的过程详情参见如下图3所示的示意图。
图3为卷积运算器使用某个初始输入数据运算对应的卷积结果的过程的示意图。图3左边的为卷积核,图3中间的为初始输入数据,图3右边的为对应得到的卷积结果。
所述卷积运算器在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果包括:
将所述初始输入数据的第Q行数据与预设卷积核的第L行数据进行卷积运算,对应得到的数据为第三卷积结果的第Q-L+1行的子数据;
将所有位于第Q-L+1行的子数据进行累加,得到第Q-L+1行的数据;
根据所述第三卷积结果与所述权重值进行卷积运算得到多个所述第一卷积结果;
其中,Q的取值范围为1至M,M为所述初始输入数据的总行数,L的取值范围为1至N,N为所述预设卷积核的总行数。
将所述初始输入数据的所述第Q行数据分别与所述预设卷积核的每行数据都进行卷积运算,并当所述第Q行数据与所述预设卷积核的所有行数据都进行了卷积运算之后,对所述初始输入数据的所述第Q行数据进行删除,直至将所述初始输入数据删除完毕。
示例性的,每一个计算电路20的卷积运算器204采用3*3的卷积核。卷积核依次从初始输入数据的左边滑到右边,从初始输入数据的上边滑到下边,在滑动的过程中进行累乘加运算,得到对应位置的卷积结果。
当所述卷积核滑到如图3所示的位置1(即卷积核滑到初始输入数据的第m-2行、第m-1行和第m行)的时候,其中卷积核中的w6、w7、w8需要与第m行的数据进行卷积运算,得到的数据对应的是卷积结果的第m-2的结果。
当所述卷积核滑到如图3所示的位置2(即卷积核滑到初始输入数据的第m-1行、第m行和第m+1行)的时候,其中卷积核中的w3、w4、w6需要与第m行的数据进行卷积运算,得到的数据对应的是卷积结果的第m-1行的结果。
当所述卷积核滑到如图3所示的位置3(即卷积核滑到初始输入数据的第m行、第m+1行和第m+2行的时候,其中卷积核中的w1、w2、w3需要与第m行的数据进行卷积运算,得到的数据对应的是卷积结果的第m行的结果。
由上述可以看到,第四层次数据复用:在所述卷积运算器204运算一个卷积结果过程中,初始输入数据的同一行,例如,初始输入数据的第m行数据,可以进行L*卷积结果的个数(L为卷积核的行数)次复用。即,通过将初始输入数据中的一行数据与整个卷积核进行卷积运算,实现了初始输入数据的一行数据的第四次复用。
综上所述,本发明通过至少一个计算电路第一次从存储电路中读出初始输入数据和权重值进行第一次卷积运算,实现了同一个初始输入数据和权重值在不同计算电路中的第一次数据复用;通过将第一卷积结果与多个具有对应关系的其他第一卷积结果进行累加,实现了同一个第一卷积结果在同一个计算电路中的第二次数据复用;通过将多个具有对应关系的第一卷积结果进行累加后得到第二卷积结果,作为下一层卷积神经网络的初始输入数据,实现了卷积神经网络层与层之间的第三次数据复用。即,通过三次数据复用,提高了数据的利用率,减少了数据访问的次数,从而提高了计算电路的运算速度,并降低了神经网络处理器的功耗。
其次,通过将初始输入数据中的每一行数据与整个卷积核进行卷积运算,实现了初始输入数据的每一行数据的第四次复用,能够进一步地提高数据的利用率,减少数据访问的次数,从而进一步地提高了计算电路的运算速度,并降低了神经网络处理器的功耗。
再次,在对所有具有对应关系的所述第一卷积结果进行累加后,删除第一卷积结果,节省了存储电路的存储空间;在初始输入数据的某行数据与卷积核完成了卷积运算后,将初始输入数据的该行数据进行删除,能够进一步节省存储电路的存储空间。
另外,在有多个计算电路并行运行的情况下,能够提高并行计算的效率。
上述图4详细介绍了本发明的卷积神经网络数据复用方法,下面结合图5和图6,分别对实现所述卷积神经网络数据复用方法的软件系统的功能模块以及实现所述卷积神经网络数据复用方法的硬件系统架构进行介绍。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
实施例三
参阅图5所示,是本发明卷积神经网络数据复用装置的较佳实施例中的功能模块图。
在一些实施例中,所述卷积神经网络数据复用装置50运行于电子设备中。所述卷积神经网络数据复用装置50可以包括多个由程序代码段所组成的功能模块。所述卷积神经网络数据复用装置50中的各个程序段的程序代码可以存储于所述电子设备的存储器中,并由至少一个处理器所执行,以执行(详见图4描述)卷积神经网络的数据复用。
本实施例中,所述卷积神经网络数据复用装置50根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:存储模块501、卷积运算模块502、删除模块503、判断模块504、第一确定模块505及第二确定模块506。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列运算机程序段,其存储在所述存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。
存储模块501,用于通过所述存储电路存储进行卷积运算所需的初始输入数据和权重值;
卷积运算模块502,用于控制所述至少一个计算电路在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果,将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果;
删除模块503,用于当对所有具有对应关系的所述第一卷积结果进行累加后,控制所述至少一个计算电路删除所述多个第一卷积结果;
判断模块504,用于判断所述当前层卷积神经网络是否为最后一层卷积神经网络。
第一确定模块505,用于当所述判断模块504确定所述当前层卷积神经网络不为最后一层卷积神经网络时,将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述至少一个计算电路中进行缓存,作为下一层卷积神经网络的所述初始输入数据;
第二确定模块506,用于当所述判断模块504确定所述当前层卷积神经网络为所述最后一层卷积神经网络时,将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路中。
关于上述模块(501-506)的具体描述,可参见实施例所述的卷积神经网络数据复用方法,本文不再详细阐述。
综上所述,本发明实施例提供的所述神经网络处理器,通过至少一个计算电路第一次从存储电路中读出初始输入数据和权重值进行第一次卷积运算,实现了同一个初始输入数据和权重值在不同计算电路中的第一次数据复用;通过将第一卷积结果与多个具有对应关系的其他第一卷积结果进行累加,实现了同一个第一卷积结果在同一个计算电路中的第二次数据复用;通过将多个具有对应关系的第一卷积结果进行累加后得到第二卷积结果,作为下一层卷积神经网络的初始输入数据,实现了卷积神经网络层与层之间的第三次数据复用;通过将初始输入数据中的一行数据与整个卷积核进行卷积运算,实现了初始输入数据的一行数据的第四次复用。即,通过四次数据复用,提高了数据的利用率,减少了数据访问的次数,有效的降低了处理器的功耗,而降低了处理器的功耗又能提高计算电路的运算并行度。
其次,在对所有具有对应关系的所述第一卷积结果进行累加后,删除第一卷积结果,节省了计算电路的存储空间;而在初始输入数据的某行数据与卷积核的每行数据完成了卷积运算后,将初始输入数据的该行数据进行删除,进一步节省了计算电路的存储空间,从而有效降低了整个神经网络处理器的功耗,提高了计算电路进行卷积运算的运算效率。
实施例四
参阅图6所示,在本发明较佳实施例中,所述电子设备6包括存储器61、至少一个处理器62、至少一条通信总线63、显示屏幕64及至少一个神经网络处理器66。
本领域技术人员应该了解,图6示出的电子设备的结构并不构成本发明实施例的限定,既可以是总线型结构,也可以是星形结构,所述电子设备6还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。
在一些实施例中,所述电子设备6包括一种能够按照事先设定或存储的指令,自动进行数值运算和/或者信息处理的设备。所述电子设备6的硬件包括但不限于:微处理器、专用神经网络处理器(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)及嵌入式设备等。所述电子设备6还可包括用户设备,所述用户设备包括但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人运算机、平板电脑、智能手机、数码相机等。
需要说明的是,所述电子设备6仅为举例,其他现有的或今后可能出现的电子产品如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。
在一些实施例中,所述存储器61用于存储程序代码和各种数据,例如安装在所述电子设备6中的卷积神经网络数据复用装置50,并在电子设备6的运行过程中实现高速、自动地完成程序或数据的存取。所述存储器61包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-OnlyMemory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的运算机可读的任何其他介质。
在一些实施例中,所述至少一个处理器62可以由神经网络处理器组成,例如可以由单个封装的神经网络处理器所组成,也可以是由多个相同功能或不同功能封装的神经网络处理器所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述至少一个处理器62是所述电子设备6的控制核心(Control Unit),利用各种接口和线路连接整个电子设备6的各个部件,通过运行或执行存储在所述存储器61内的程序或者模块,以及调用存储在所述存储器61内的数据,以执行电子设备6的各种功能和处理数据,例如执行卷积神经网络数据复用的功能。
在一些实施例中,所述至少一条通信总线63被设置为实现所述存储器61、所述至少一个处理器62、所述显示屏幕64以及所述至少一个神经网络处理器66等之间的连接通信。
在一些实施例中,所述显示屏幕64可用于显示由观看者输入的信息或提供给观看者的信息以及电子设备6的各种图形观看者接口,这些图形观看者接口可以由图形、文本、图标、视频和其任意组合来构成。所述显示屏幕64可包括显示面板,可选的,可以采用液晶显示屏幕(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-EmittingDiode,OLED)等形式来配置显示面板。
所述显示屏幕64还可以包括触摸面板。如果所述显示屏幕64包括触摸面板,所述显示屏幕64可以被实现为触摸屏,以接收来自观看者的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。上述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与上述触摸或滑动操作相关的持续时间和压力。所述显示面板与所述触摸面板可以作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将所述显示面板与所述触摸面板进行集成而实现输入和输出功能。
尽管未示出,所述电子设备6还可以包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理系统与所述至少一个处理器62逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备6还可以包括多种传感器、蓝牙模块、通讯模块等。本发明在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个运算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台运算机设备(可以是个人运算机,客户端,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。
在进一步的实施例中,结合图1,所述至少一个处理器62可执行所述电子设备6的操作系统以及安装的各类应用程序(如所述的卷积神经网络数据复用装置50)、程序代码等。
所述存储器61中存储有程序代码,且所述至少一个处理器62可调用所述存储器61中存储的程序代码以执行相关的功能。例如,图5中所述的各个模块是存储在所述存储器61中的程序代码,并由所述至少一个处理器62所执行,从而实现所述各个模块的功能以达到根据用户需求生成神经网络模型的目的。
在本发明的一个实施例中,所述存储器61存储多个指令,所述多个指令被所述至少一个处理器62所执行以实现随机生成神经网络模型的功能。
具体地,所述至少一个处理器62对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种神经网络处理器,其特征在于,所述神经网络处理器包括:
存储电路,用于存储进行卷积运算所需的初始输入数据和权重值;
至少一个计算电路,用于从所述存储电路中读取所述初始输入数据和所述权重值,并基于所述初始输入数据和所述权重值进行卷积运算,其中,所述至少一个计算电路包括:
数据缓存器,用于缓存所述计算电路读取的所述初始输入数据;
权重缓存器,用于缓存所述计算电路读取的所述权重值;
卷积运算器,用于在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果,并将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果;同时,当对所有具有对应关系的所述第一卷积结果进行累加后,删除所述多个第一卷积结果;
结果缓存器,用于缓存所述多个第二卷积结果,并根据预设存储规则将所述多个第二卷积结果发送至所述数据缓存器中,作为下一层卷积神经网络的所述初始输入数据;或者,发送至所述存储电路中进行存储。
2.如权利要求1所述的神经网络处理器,其特征在于,所述预设存储规则包括:
当所述当前层卷积神经网络不为最后一层卷积神经网络时,所述结果缓存器将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述数据缓存器;
当所述当前层卷积神经网络为最后一层卷积神经网络时,所述结果缓存器将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路中。
3.如权利要求1或2所述的神经网络处理器,其特征在于,所述卷积运算器在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果包括:
将所述初始输入数据的第Q行数据与预设卷积核的第L行数据进行卷积运算,对应得到的数据为第三卷积结果的第Q-L+1行的子数据;
将所有位于第Q-L+1行的子数据进行累加,得到第Q-L+1行的数据;
根据所述第三卷积结果与所述权重值进行卷积运算得到多个所述第一卷积结果;
其中,Q的取值范围为1至M,M为所述初始输入数据的总行数,L的取值范围为1至N,N为所述预设卷积核的总行数。
4.如权利要求3所述的神经网络处理器,其特征在于,将所述初始输入数据的所述第Q行数据分别与所述预设卷积核的每行数据都进行卷积运算,并当所述第Q行数据与所述预设卷积核的所有行数据都进行了卷积运算之后,对所述初始输入数据的所述第Q行数据进行删除,直至将所述初始输入数据删除完毕。
5.一种卷积神经网络数据复用方法,应用于电子设备中,其特征在于,所述电子设备包括如权利要求1至4中任意一项所述的神经网络处理器,所述方法包括:
通过所述存储电路存储进行卷积运算所需的初始输入数据和权重值;
控制所述至少一个计算电路在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果,将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果;
当对所有具有对应关系的所述第一卷积结果进行累加后,控制所述至少一个计算电路删除所述多个第一卷积结果;
当所述当前层卷积神经网络不为最后一层卷积神经网络时,将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述至少一个计算电路中进行缓存,作为下一层卷积神经网络的所述初始输入数据;
当所述当前层卷积神经网络为所述最后一层卷积神经网络时,将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路中。
6.如权利要求5所述的方法,其特征在于,控制所述至少一个计算电路在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果包括:
将所述初始输入数据的第Q行数据与预设卷积核的第L行数据进行卷积运算,对应得到的数据为第三卷积结果的第Q-L+1行的子数据;
将所有位于第Q-L+1行的子数据进行累加,得到第Q-L+1行的数据;
根据所述第三卷积结果与所述权重值进行卷积运算得到多个所述第一卷积结果;
其中,Q的取值范围为1至M,M为所述初始输入数据的总行数,L的取值范围为1至N,N为所述预设卷积核的总行数。
7.如权利要求6所述的方法,其特征在于,将所述初始输入数据的所述第Q行数据分别与所述预设卷积核的每行数据都进行卷积运算,并当所述第Q行数据与所述预设卷积核的所有行数据都进行了卷积运算之后,对所述初始输入数据的所述第Q行数据进行删除,直至将所述初始输入数据删除完毕。
8.一种卷积神经网络数据复用装置,安装于电子设备中,其特征在于,所述电子设备包括如权利要求1至4中任意一项所述的神经网络处理器,所述装置包括:
存储模块,用于通过所述存储电路存储进行卷积运算所需的初始输入数据和权重值;
卷积运算模块,用于控制所述至少一个计算电路在当前层卷积神经网络中根据所述初始输入数据及所述权重值进行卷积运算得到多个第一卷积结果,将具有对应关系的所述第一卷积结果进行累加后得到多个第二卷积结果;
删除模块,用于当对所有具有对应关系的所述第一卷积结果进行累加后,控制所述至少一个计算电路删除所述多个第一卷积结果;
第一确定模块,用于当所述当前层卷积神经网络不为最后一层卷积神经网络时,将所述多个第二卷积结果确定为中间的卷积结果,并将所述中间的卷积结果发送至所述至少一个计算电路中进行缓存,作为下一层卷积神经网络的所述初始输入数据;
第二确定模块,用于当所述当前层卷积神经网络为所述最后一层卷积神经网络时,将所述多个第二卷积结果确定为最终的卷积结果,并将所述最终的卷积结果发送至所述存储电路中。
9.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于执行存储器中存储的运算机程序时实现如权利要求5至7中任意一项所述卷积神经网络数据复用方法。
10.一种运算机可读存储介质,其上存储有运算机程序,其特征在于,所述运算机程序被处理器执行时实现如权利要求5至7中任意一项所述卷积神经网络数据复用方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811614780.3A CN109740732B (zh) | 2018-12-27 | 2018-12-27 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
PCT/CN2019/114725 WO2020134546A1 (zh) | 2018-12-27 | 2019-10-31 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811614780.3A CN109740732B (zh) | 2018-12-27 | 2018-12-27 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109740732A true CN109740732A (zh) | 2019-05-10 |
CN109740732B CN109740732B (zh) | 2021-05-11 |
Family
ID=66361448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811614780.3A Active CN109740732B (zh) | 2018-12-27 | 2018-12-27 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109740732B (zh) |
WO (1) | WO2020134546A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110490313A (zh) * | 2019-08-14 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 一种内存复用方法及其相关产品 |
CN110737473A (zh) * | 2019-09-24 | 2020-01-31 | 北京小米移动软件有限公司 | 数据处理方法及装置、终端、存储介质 |
CN110930290A (zh) * | 2019-11-13 | 2020-03-27 | 东软睿驰汽车技术(沈阳)有限公司 | 一种数据处理方法及装置 |
CN110956258A (zh) * | 2019-12-17 | 2020-04-03 | 深圳鲲云信息科技有限公司 | 一种神经网络加速电路和方法 |
CN111027683A (zh) * | 2019-12-09 | 2020-04-17 | Oppo广东移动通信有限公司 | 数据处理方法、装置、存储介质及电子设备 |
CN111341306A (zh) * | 2020-02-14 | 2020-06-26 | 东南大学 | 基于语音特征复用的关键词唤醒cnn的存储和计算压缩方法 |
WO2020134546A1 (zh) * | 2018-12-27 | 2020-07-02 | 深圳云天励飞技术有限公司 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
CN111752879A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | 一种基于卷积神经网络的加速系统、方法及存储介质 |
WO2020238106A1 (zh) * | 2019-05-24 | 2020-12-03 | 深圳云天励飞技术有限公司 | 一种数据处理方法、电子装置及计算机可读存储介质 |
CN112308217A (zh) * | 2019-07-31 | 2021-02-02 | 北京欣奕华科技有限公司 | 一种卷积神经网络加速方法及系统 |
CN112396165A (zh) * | 2020-11-30 | 2021-02-23 | 珠海零边界集成电路有限公司 | 用于卷积神经网络的运算装置和方法 |
CN112819022A (zh) * | 2019-11-18 | 2021-05-18 | 同方威视技术股份有限公司 | 基于神经网络的图像识别装置和图像识别方法 |
CN113269298A (zh) * | 2020-02-15 | 2021-08-17 | 财团法人工业技术研究院 | 卷积神经网络运算装置及其运算的方法 |
CN113449852A (zh) * | 2021-08-05 | 2021-09-28 | 安谋科技(中国)有限公司 | 卷积神经网络的计算方法、片上系统和电子设备 |
WO2024067207A1 (zh) * | 2022-09-27 | 2024-04-04 | 北京有竹居网络技术有限公司 | 调度方法、调度装置、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN108133270A (zh) * | 2018-01-12 | 2018-06-08 | 清华大学 | 卷积神经网络加速方法及装置 |
CN108171317A (zh) * | 2017-11-27 | 2018-06-15 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
CN108241890A (zh) * | 2018-01-29 | 2018-07-03 | 清华大学 | 一种可重构神经网络加速方法及架构 |
CN108416422A (zh) * | 2017-12-29 | 2018-08-17 | 国民技术股份有限公司 | 一种基于fpga的卷积神经网络实现方法及装置 |
CN108573305A (zh) * | 2017-03-15 | 2018-09-25 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、设备及装置 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304922B (zh) * | 2017-01-13 | 2020-12-15 | 华为技术有限公司 | 用于神经网络计算的计算设备和计算方法 |
CN108229645B (zh) * | 2017-04-28 | 2021-08-06 | 北京市商汤科技开发有限公司 | 卷积加速和计算处理方法、装置、电子设备及存储介质 |
CN109740732B (zh) * | 2018-12-27 | 2021-05-11 | 深圳云天励飞技术有限公司 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
-
2018
- 2018-12-27 CN CN201811614780.3A patent/CN109740732B/zh active Active
-
2019
- 2019-10-31 WO PCT/CN2019/114725 patent/WO2020134546A1/zh active Application Filing
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN108573305A (zh) * | 2017-03-15 | 2018-09-25 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、设备及装置 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN108171317A (zh) * | 2017-11-27 | 2018-06-15 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
CN108416422A (zh) * | 2017-12-29 | 2018-08-17 | 国民技术股份有限公司 | 一种基于fpga的卷积神经网络实现方法及装置 |
CN108133270A (zh) * | 2018-01-12 | 2018-06-08 | 清华大学 | 卷积神经网络加速方法及装置 |
CN108241890A (zh) * | 2018-01-29 | 2018-07-03 | 清华大学 | 一种可重构神经网络加速方法及架构 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020134546A1 (zh) * | 2018-12-27 | 2020-07-02 | 深圳云天励飞技术有限公司 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
US11061621B2 (en) | 2019-05-24 | 2021-07-13 | Shenzhen Intellifusion Technologies Co., Ltd. | Data processing method, electronic apparatus, and computer-readable storage medium |
WO2020238106A1 (zh) * | 2019-05-24 | 2020-12-03 | 深圳云天励飞技术有限公司 | 一种数据处理方法、电子装置及计算机可读存储介质 |
CN112308217A (zh) * | 2019-07-31 | 2021-02-02 | 北京欣奕华科技有限公司 | 一种卷积神经网络加速方法及系统 |
CN110490313A (zh) * | 2019-08-14 | 2019-11-22 | 北京中科寒武纪科技有限公司 | 一种内存复用方法及其相关产品 |
CN110737473A (zh) * | 2019-09-24 | 2020-01-31 | 北京小米移动软件有限公司 | 数据处理方法及装置、终端、存储介质 |
CN110930290A (zh) * | 2019-11-13 | 2020-03-27 | 东软睿驰汽车技术(沈阳)有限公司 | 一种数据处理方法及装置 |
CN112819022A (zh) * | 2019-11-18 | 2021-05-18 | 同方威视技术股份有限公司 | 基于神经网络的图像识别装置和图像识别方法 |
CN112819022B (zh) * | 2019-11-18 | 2023-11-07 | 同方威视技术股份有限公司 | 基于神经网络的图像识别装置和图像识别方法 |
CN111027683A (zh) * | 2019-12-09 | 2020-04-17 | Oppo广东移动通信有限公司 | 数据处理方法、装置、存储介质及电子设备 |
CN110956258A (zh) * | 2019-12-17 | 2020-04-03 | 深圳鲲云信息科技有限公司 | 一种神经网络加速电路和方法 |
CN110956258B (zh) * | 2019-12-17 | 2023-05-16 | 深圳鲲云信息科技有限公司 | 一种神经网络加速电路和方法 |
CN111341306A (zh) * | 2020-02-14 | 2020-06-26 | 东南大学 | 基于语音特征复用的关键词唤醒cnn的存储和计算压缩方法 |
CN113269298A (zh) * | 2020-02-15 | 2021-08-17 | 财团法人工业技术研究院 | 卷积神经网络运算装置及其运算的方法 |
CN111752879A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | 一种基于卷积神经网络的加速系统、方法及存储介质 |
CN111752879B (zh) * | 2020-06-22 | 2022-02-22 | 深圳鲲云信息科技有限公司 | 一种基于卷积神经网络的加速系统、方法及存储介质 |
CN112396165A (zh) * | 2020-11-30 | 2021-02-23 | 珠海零边界集成电路有限公司 | 用于卷积神经网络的运算装置和方法 |
CN113449852A (zh) * | 2021-08-05 | 2021-09-28 | 安谋科技(中国)有限公司 | 卷积神经网络的计算方法、片上系统和电子设备 |
WO2024067207A1 (zh) * | 2022-09-27 | 2024-04-04 | 北京有竹居网络技术有限公司 | 调度方法、调度装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020134546A1 (zh) | 2020-07-02 |
CN109740732B (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109740732A (zh) | 神经网络处理器、卷积神经网络数据复用方法及相关设备 | |
CN111045814B (zh) | 资源调度方法和终端设备 | |
EP2775664B1 (en) | Resource information display method and apparatus | |
CN105589336A (zh) | 多处理器设备 | |
CN106681933A (zh) | 一种内存管理方法及终端 | |
CN110414370A (zh) | 人脸脸型识别方法、装置、电子设备及存储介质 | |
CN109522020A (zh) | 安卓系统安装包瘦身方法、装置、终端及存储介质 | |
CN109815007A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN105283844A (zh) | 电子设备和通过电子设备提供电池信息的方法 | |
CN109151337A (zh) | 人脸识别补光方法、人脸识别补光装置及移动终端 | |
CN110083450A (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN109215037A (zh) | 目标图像分割方法、装置及终端设备 | |
CN109947832A (zh) | 将excel数据表生成sql文件的方法、装置、终端及存储介质 | |
CN109409925A (zh) | 广告竞价投放方法、装置、终端及存储介质 | |
CN110276515A (zh) | 任务分配方法、装置、终端及存储介质 | |
CN110290058A (zh) | 一种在应用中呈现会话消息的方法与设备 | |
CN109783321A (zh) | 监控数据管理方法、装置、终端设备 | |
CN103076971B (zh) | 移动终端的进程管理方法和移动终端 | |
CN109214155A (zh) | 屏幕点亮方法、装置、终端及存储介质 | |
CN109460234A (zh) | 应用程序瘦身方法、装置、终端及存储介质 | |
CN105955633A (zh) | 快速查看计算结果的方法、装置及智能终端 | |
CN106603793A (zh) | 批量设置联系人头像的方法及系统 | |
CN110689922B (zh) | 一种自动并行化敲除策略gc含量分析的方法及系统 | |
CN110368683B (zh) | 一种游戏控制方法、装置及计算机可读存储介质 | |
CN110442241A (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 |