WO2019084788A1 - 用于神经网络的运算装置、电路及相关方法 - Google Patents

用于神经网络的运算装置、电路及相关方法 Download PDF

Info

Publication number
WO2019084788A1
WO2019084788A1 PCT/CN2017/108640 CN2017108640W WO2019084788A1 WO 2019084788 A1 WO2019084788 A1 WO 2019084788A1 CN 2017108640 W CN2017108640 W CN 2017108640W WO 2019084788 A1 WO2019084788 A1 WO 2019084788A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
input feature
window
processing
column
Prior art date
Application number
PCT/CN2017/108640
Other languages
English (en)
French (fr)
Inventor
谷骞
高明明
李涛
Original Assignee
深圳市大疆创新科技有限公司
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 深圳市大疆创新科技有限公司 filed Critical 深圳市大疆创新科技有限公司
Priority to CN201780013527.XA priority Critical patent/CN108780524A/zh
Priority to PCT/CN2017/108640 priority patent/WO2019084788A1/zh
Publication of WO2019084788A1 publication Critical patent/WO2019084788A1/zh
Priority to US16/727,677 priority patent/US20200134435A1/en

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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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/08Learning methods

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

Abstract

提供一种用于神经网络的运算装置、电路及相关方法,该运算装置包括:第一处理单元,用于根据计算窗口的大小对k1个输入特征数据进行第一运算操作,获得中间结果,该计算窗口的大小为k1×k2,k1与k2均为正整数;第二处理单元,用于根据该计算窗口的大小对该第一处理单元输出的k2个中间结果进行第二运算操作,获得计算结果。该运算装置可以有效节省缓存空间,从而节省硬件资源,同时可以减小数据处理的时延。

Description

用于神经网络的运算装置、电路及相关方法
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
本申请涉及神经网络领域,并且更为具体地,涉及一种用于神经网络的运算装置、电路及相关方法。
背景技术
卷积神经网络由多个层叠加在一起形成,上一层的结果为输出特征图(output feature maps,OFMs),作为下一层的输入特征图。通常中间层的输出特征图的通道非常多,图像也比较大。卷积神经网络的硬件加速器在处理特征图数据时,由于片上系统缓存大小和带宽的限制,通常将一张输出特征图分割成多个特征图片段(feature map segment),依次输出每个特征图片段,并且每个特征图片段按列并行输出。例如,一个完整的输出特征图被分割成3个特征图片段,每个特征图片段按列依次输出。
目前,在图像处理过程中,通常使用线缓冲器(line buffer)来实现卷积层运算或池化层运算的数据输入。线缓冲器的结构要求输入数据按照行(或列)优先以光栅化的顺序输入。以池化窗口的高度为k,输入特征矩阵的宽度为W为例,则线缓冲器需要缓存的深度k*W,即线缓冲器必须缓存大小为k*W的输入数据后,才可以进行数据运算,这样会增大数据处理的时延。
上述可知,现有的图像处理方案需要的缓存空间较大,同时数据处理的时延也较大。
发明内容
本申请提供一种用于神经网络的运算装置、电路及相关方法,可以有效节省缓存空间,同时可以减小数据处理的时延。
第一方面,提供一种用于神经网络的运算装置,所述运算装置包括:第一处理单元,用于根据计算窗口的大小对k1个输入特征数据进行第一运算 操作,获得中间结果,所述计算窗口的大小为k1×k2,k1与k2均为正整数;第二处理单元,用于根据所述计算窗口的大小对所述第一处理单元输出的k2个中间结果进行第二运算操作,获得计算结果。
在本申请提供的技术方案中,通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,换句话说,可以按行或按列缓存输入特征矩阵,并且可以同时进行运算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延,有效提高神经网络的数据处理效率,同时也可以节省存储资源,从而节省硬件资源。
结合第一方面,在第一方面的一种可能的实现方式中,所述运算装置包括M个所述第一处理单元与M个所述第二处理单元,且所述M个第一处理单元与所述M个第二处理单元一一对应,M为大于1的正整数;所述运算装置还包括:预处理单元,用于按列接收输入特征矩阵,并根据所述计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值,所述预处理单元还用于将所述M组数据一对一地输入到所述M个第一处理单元中。
在本申请提供的技术方案中,可以实现图像数据的并行处理,从而有效提高数据处理的效率。
第二方面,提供一种用于处理神经网络的电路,所述电路包括:第一处理电路,用于根据计算窗口的大小对k1个输入特征数据进行第一运算操作,获得中间结果,所述计算窗口的大小为k1×k2,k1与k2均为正整数;第二处理电路,用于根据所述计算窗口的大小对所述第一处理电路输出的k2个中间结果进行第二运算操作,获得计算结果。
在本申请提供的技术方案中,通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,换句话说,可以按行或按列缓存输入特征矩阵,并且可以同时进行运算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延,有效提高神经网络的数据处理效率,同时也可以节省存储资源,从而节省硬件资源。
结合第二方面,在第二方面的一种可能的实现方式中,所述电路包括M个所述第一处理电路与M个所述第二处理电路,且所述M个第一处理电路 与所述M个第二处理电路一一对应,M为大于1的正整数;所述电路还包括:预处理电路,用于按列接收输入特征矩阵,并根据所述计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值,所述预处理电路还用于将所述M组数据一对一地输入到所述M个第一处理电路中。
在本申请提供的技术方案中,可以实现图像数据的并行处理,从而有效提高数据处理的效率。
第三方面,提供一种用于处理神经网络的方法,所述方法包括:根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,所述计算窗口的大小为k1×k2,k1与k2均为正整数;根据所述计算窗口的大小,对所述第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果。
在本申请提供的技术方案中,通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,换句话说,可以按行或按列缓存输入特征矩阵,并且可以同时进行运算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延,有效提高神经网络的数据处理效率,同时也可以节省存储资源,从而节省硬件资源。
结合第三方面,在第三方面的一种可能的实现方式中,所述方法还包括:按列接收输入特征矩阵,并根据所述计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值;所述根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,包括:根据计算窗口的大小,分别对所述M组数据进行所述第一运算操作,获得对应的中间结果;所述根据所述计算窗口的大小,对所述第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果,包括:分别针对所述M组数据中的每一组数据对应的第一运算操作,每获得k2个中间结果,进行所述第二运算操作,获得对应的计算结果。
在本申请提供的技术方案中,可以实现图像数据的并行处理,从而有效提高数据处理的效率。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时用于实现:根据计算窗口的大小,对k1个输 入特征数据进行第一运算操作,获得中间结果,所述计算窗口的大小为k1×k2,k1与k2均为正整数;根据所述计算窗口的大小,对所述第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果。
结合第四方面,在第四方面的一种可能的实现方式中,所述计算机程序被计算机执行时还用于实现:按列接收输入特征矩阵,并根据所述计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值;所述计算机程序被计算机执行时用于实现:根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,包括:所述计算机程序被计算机执行时用于实现:根据计算窗口的大小,分别对所述M组数据进行所述第一运算操作,获得对应的中间结果;所述计算机程序被计算机执行时用于实现:根据所述计算窗口的大小,对所述第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果,包括:所述计算机程序被计算机执行时用于实现:分别针对所述M组数据中的每一组数据对应的第一运算操作,每获得k2个中间结果,进行所述第二运算操作,获得对应的计算结果。
在本申请提供的技术方案中,可以实现图像数据的并行处理,从而有效提高数据处理的效率。
综上所述,在本申请提供的技术方案中,通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,换句话说,可以按行或按列缓存输入特征矩阵,并且可以同时进行运算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延,有效提高神经网络的数据处理效率,同时也可以节省存储资源,从而节省硬件资源。
附图说明
图1为神经网络卷积层运算的示意图。
图2为神经网络池化层运算的示意图。
图3为本申请实施例提供的用于神经网络的运算装置的示意性框图。
图4为本申请另一实施例提供的用于神经网络的运算装置的示意性框图。
图5为本申请再一实施例提供的用于神经网络的运算装置的示意性框 图。
图6为本申请实施例提供的用于处理神经网络的电路的示意图。
图7为本申请另一实施例提供的用于神经网络的电路的示意性框图。
图8为本申请实施例提供的用于处理神经网络的方法的示意性流程图。
具体实施方式
为了便于理解本申请提供的技术方案,下面首先介绍卷积神经网络中的卷积层运算与池化层运算。
1)卷积层运算
卷积层运算的运算过程为,将一个固定大小的窗口滑动过整个图像平面,在每个时刻对窗口内覆盖的数据进行乘累加运算。卷积层运算中,窗口滑动的步长为1。
图1为卷积层运算的示意图。输入图像的高H1为3,宽W1为4;卷积窗口的高k1为2,宽k2为2。卷积层运算为一个2×2的卷积窗口在3×4的图像上以步长为1的间隔滑动,每个卷积窗口覆盖的4个数据进行乘累加运算,得到一个输出结果,所有输出结果构成输出图像。如图1所示,输出图像的高H2为2,宽W2为3。
图1中所示的输出结果o1是通过如下公式得到的:
o1=op{d1,d2,d3,d4},
其中,运算符op的运算方式为乘累加。
2)池化层运算
池化层运算的运算过程为,将一个固定大小的窗口滑动过整个图像平面,在每个时刻对窗口内覆盖的数据进行运算,求最大值或者求平均值作为输出。积层运算中,窗口滑动的步长等于窗口的高(或宽)。
图2为池化层运算的示意图。输入图像的高H1为6,宽W1为8;池化窗口的高k1为2,宽k2为2。池化层运算为一个2×2的池化窗口在6×8的图像上以步长为2的间隔滑动,每个窗口覆盖的4个数据得到一个输出结果,所有输出结果构成输出图像。如图2所示,输出图像的高H2为3,宽W2为4。
图2中所示的输出结果o1是通过如下公式得到的:
o1=op{d1,d2,d3,d4},
其中,根据配置不同,运算符op的运算方式为求最大值(max)或求平均值(avg)。
在现有的神经网络计算过程(卷积运算或池化运算)中,通常是“先取窗口,再进行计算”。以图2所示的池化运算为例,先获取池化窗口覆盖的4个输入数据,然后,再对4个输入数据进行计算。
在本申请中,将“先取窗口,再进行计算”的过程分解为列操作与行操作。
可选地,作为一种实现方式,将“先取窗口,再进行计算”的过程分解为先列操作,再行操作。
具体地,先对窗口内的同一列的数据进行计算,得到中间结果;然后对窗口内所有列的中间结果进行计算,得到计算结果。
以图1所示窗口2×2为例,d1,d2,d3,d4参与运算,得到结果o1=op{d1,d2,d3,d4}。在本申请中,将如图1所示的窗口2×2的操作o1=op{d1,d2,d3,d4}分解为:先对窗口内同一列的d1与d3进行列操作,得到中间结果p1=op1{d1,d3},以及窗口内同一列的d2与d4进行列操作,得到中间结果p2=op2{d2,d4};然后对所有列的中间结果p1与p2进行行操作,得到最终运算结果o1=op3{p1p2}。其中,运算符op1与op2的运算方式均为乘累加,op3的运算方式为累加。
以图2所示窗口2×2为例,d1,d2,d3,d4参与运算,得到结果o1=op{d1,d2,d3,d4}。在本申请中,将如图2所示的窗口2×2的操作o1=op{d1,d2,d3,d4}分解为:先对窗口内同一列的d1与d3进行列操作,得到中间结果p1=op1{d1,d3},以及窗口内同一列的d2与d4进行列操作,得到中间结果p2=op2{d2,d4};然后对所有列的中间结果p1与p2进行行操作,得到最终运算结果o1=op3{p1p2}。其中,运算符op1、op2、op3的运算方式均为求最大值或求平均值。
可选地,作为一种实现方式,将“先取窗口,再进行计算”的过程分解为先行操作,再列操作。
具体地,先对窗口内的同一行的数据进行计算,得到中间结果;然后对窗口内所有行的中间结果进行计算,得到计算结果。
上述可知,在本申请中,通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,无需像现有 技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延。同时,可以随输入数据的输入方式灵活设置数据缓存方式,例如,输入数据是按列输入的,则按列缓存,且对缓存的数据先进行列操作再进行行操作;再例如,输入数据是按行输入的,则按行缓存,且对缓存的数据先进行行操作再进行列操作。
下文对本申请提供的用于神经网络的运算装置、电路及相关方法进行详细描述。
图3为本申请提供的用于神经网络的运算装置300的示意性框图。该运算装置300包括:
第一处理单元310,用于根据计算窗口的大小对k1个输入特征数据进行第一运算操作,获得中间结果,该计算窗口的大小为k1×k2,k1与k2均为正整数。
第二处理单元320,用于根据该计算窗口的大小对该第一处理单元输出的k2个中间结果进行第二运算操作,获得计算结果。
可选地,第一处理单元310用于对输入特征矩阵中的列输入特征值中的k1个输入特征数据进行第一运算操作,其中,k1表示该计算窗口的高度,k2表示该计算窗口的宽度;第二处理单元320用于对第一处理单元输出的k2个中间结果进行第二运算操作,相当于是对不同列的中间结果做第二运算操作,获得计算结果。
在本实施例中,第一处理单元310可称为列处理单元,对应地,第一运算操作称为列操作;第二处理单元320可称为行处理单元,对应地,第二运算操作称为行操作。
可选地,第一处理单元310用于对输入特征矩阵中的行输入特征值中的k1个输入特征数据进行第一运算操作,其中,k1表示该计算窗口的宽度,k2表示该计算窗口的高度;第二处理单元320用于对第一处理单元输出的k2个中间结果进行第二运算操作,相当于是对不同行的中间结果做第二运算操作,获得计算结果。
在本实施例中,第一处理单元310可称为行处理单元,对应地,第一运算操作称为行操作;第二处理单元320可称为列处理单元,对应地,第二运算操作称为列操作。
在本申请提供的技术方案中,通过将神经网络的窗口操作分解为列操作 与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,换句话说,可以按行或按列缓存输入特征矩阵,并且可以同时进行运算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延,有效提高神经网络的数据处理效率,同时也可以节省存储资源,从而节省硬件资源。
下文主要以先列处理后行处理为例进行描述,但本申请实施例并非限定于此。根据实际需要,可以先处理再列处理。
可选地,作为一个实施例,该计算窗口为卷积窗口,该第一运算操作的运算方式为乘累加运算,该第二运算操作的运算方式为累加运算。
以图1所示的输入图像与卷积窗口为例,且以先列操作后行操作为例。先对窗口内同一列的d1与d3进行列操作,得到中间结果p1=op1{d1,d3},以及窗口内同一列的d2与d4进行列操作,得到中间结果p2=op2{d2,d4};然后对所有列的中间结果p1与p2进行行操作,得到最终运算结果o1=op3{p1p2}。其中,运算符op1与op2的运算方式均为乘累加,op3的运算方式为累加。
本实施例可以提高神经网络的卷积运算效率。
可选地,作为另一个实施例,该计算窗口为池化窗口,该第一运算操作的运算方式为求最大值或求平均值,该第二运算操作的运算方式与该第一运算操作的运算方式相同。
以图2所示的输入图像与卷积窗口为例,且以先列操作后行操作为例。先对窗口内同一列的d1与d3进行列操作,得到中间结果p1=op1{d1,d3},以及窗口内同一列的d2与d4进行列操作,得到中间结果p2=op2{d2,d4};然后对所有列的中间结果p1与p2进行行操作,得到最终运算结果o1=op3{p1p2}。其中,运算符op1、op2、op3的运算方式均为求最大值或求平均值。
本实施例可以提高神经网络的池化运算效率。
可选地,如图4所示,该运算装置包括M个该第一处理单元310与M个该第二处理单元320,且该M个第一处理单元310与该M个第二处理单元320一一对应,M为大于1的正整数;
该运算装置300还包括:
预处理单元330,用于按列接收输入特征矩阵,并根据该计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输 入特征值,该预处理单元还用于将该M组数据一对一地输入到该M个第一处理单元中。
具体地,预处理单元330接收到输入特征矩阵中的第一列输入特征值,将其处理为M组数据,分别输入M个第一处理单元310中进行列处理;M个第一处理单元310输出M个中间结果,并将该M个中间结果一对一地输入到M个第二处理单元320中。预处理单元330接收到输入特征矩阵中的第二列输入特征值,将其处理为M组数据,分别输入M个第一处理单元310中进行列处理;M个第一处理单元310输出M个中间结果,并将该M个中间结果一对一地输入到M个第二处理单元320中。以此类推,当预处理单元330接收到第k2列输入特征值时,将其处理为M组数据,分别输入M个第一处理单元310中进行列处理;M个第一处理单元310输出M个中间结果,并将该M个中间结果一对一地输入到M个第二处理单元320中,这时,M个第二处理单元320中的每个第二处理单元320已经接收到k2个中间结果了,第二处理单元320对接收到的k2个中间结果进行行操作,得到运算结果,即M个第二处理单元320得到M个运算结果。后续,预处理单元330可以继续接收列输入特征值,重复执行上文描述的流程,得到下一次的M个运算结果,这里不再赘述。
上文已述,当前技术中,通常将一张输出特征图分割成多个特征图片段,依次输出每个特征图片段,并且每个特征图片段按列并行输出。例如,一个完整的输出特征图被分割成3个特征图片段,每个特征图片段被按列依次输出。现有技术中,特征图片段的数据是按列输入,线缓冲器是按行输入,相当于特征图片段的数据是并行输入的,但是线缓冲器的方式是串行处理数据,会导致输入输出速率不匹配,吞吐数据的速率太低,会成为加速器的瓶颈,降低加速器的速率。
在本申请中,预处理单元310按列接收一个特征图片段,M个第一处理单元对该特征图片段的列输入特征值进行列操作,M个第二处理单元根据M个第一处理单元输出的中间结果进行行操作,从而得到该特征图片段的计算结果,即该特征图片段的神经网络处理结果。
在本申请提供的技术方案中,可以随输入数据的输入方式灵活设置数据缓存方式,例如,输入数据是按列输入的,则按列缓存,且对缓存的数据先进行列操作再进行行操作;再例如,输入数据是按行输入的,则按行缓存, 且对缓存的数据先进行行操作再进行列操作,从而可以提高数据吞吐率。同时,本实施例提供的运算装置可以实现图像数据的并行处理,从而有效提高数据处理的效率。
可选地,在本实施例中,运算装置300所包括的第一处理单元310以及第二处理单元320的数量M是根据输入特征矩阵的大小与计算窗口的大小确定的。
以计算窗口为卷积窗口为例,以第一处理单元310进行列处理,第二处理单元320进行行处理为例。假设输入特征矩阵的行为H,H为大于或等于k1的整数,卷积窗口的高为k1,宽为k2,则M=H-(k1-1)。
在本实施例中,该M组数据包括该列输入特征值中的所有数据,即本申请提供的运算装置300可以实现一列输入特征值的并行处理。
以计算窗口为池化窗口为例,以第一处理单元310进行列处理,第二处理单元320进行行处理为例。假设输入特征矩阵的行为H,H为大于或等于k1的整数,卷积窗口的高为k1,宽为k2,则M=mod(H/k1)。
当H可以被k1整除时,该M组数据包括该列输入特征值中的所有数据,即本申请提供的运算装置300可以实现一列输入特征值的并行处理。
当H不被k1整除时,该M组数据为该列输入特征值中的部分数据;该预处理单元330还包括缓冲器;该预处理单元330还用于,将该列输入特征值中除该M组数据之外的剩余数据存入该缓冲器。
这种场景下,需要将输入特征矩阵的最后几行的数据先缓存在缓冲器中,后续单独进行处理。
例如,在将一张输出特征图分割成多个特征图片段,每个特征图片段按列并行输出的场景中。假设将一张输出特征图分割成2个特征图片段,第一个特征图片段的高度不被池化窗口的高k1整除,则第一个特征图片段的最后几行数据先缓存在缓冲器中,等到第二个特征图片段输入有效时,从缓冲器中读出缓存的数据,与当前数据(第二个特征图片段的数据)拼接成一个新的特征图片段,重新映射到M个第一处理单元310中进行处理。
图5为本申请提供的用于神经网络的运算装置500的示意性框图。该运算装置500包括预处理单元510,M个列处理单元520,M个行处理单元530,M个列处理单元520与M个行处理单元530一一对应。
预处理单元510,用于接收输入数据,按照计算窗口对输入数据进行预 处理,得到M组数据,每组数据包括k2个输入特征值,将M组数据一对一地输入到M个列处理单元中,该计算窗口的高为k1,宽为k2。
具体地,预处理单元510,用于接收输入数据,具体包括:预处理单元510按列接收输入特征矩阵。
列处理单元520,用于对输入的k2个输入特征值进行列操作,得到中间结果,并将中间结果输入到对应的行处理单元530中。
具体地,对于池化层运算,列操作指的是求最大值或求平均值。对于卷积层运算,列操作指的是乘累加运算。
行处理单元530,用于缓存对应的列处理单元520输出的中间结果,每当接收到k2个中间结果时,对该k2个中间结果进行行操作,得到计算结果。
具体地,对于池化层运算,行操作对应的运算方式与列操作对应的运算方式相同。对于卷积层运算,行操作指的是累加运算。
如图5所示,M个行处理单元530的计算结果构成该运算装置500的输出数据。
可选地,在本实施例中,预处理单元510接收的输入数据为由待处理的输入特征图得到的特征图片段。
可选地,在某些实施例中,列处理单元520与行处理单元530的数量M由预处理单元510接收的输入特征矩阵的大小与计算窗口的大小确定。
具体地,该输入特征矩阵为特征图片段。
假设一个完整的输入特征图被分为若干个特征图片段。预处理单元510用于依次接收这若干个特征图片段。
在某些情况下,滑动窗口(即计算窗口)可能会同时覆盖上下两个特征图片段的部分数据。对于这种情况,预处理单元510用于,将窗口内的前一个特征图片段的最后几行数据缓存在预处理单元510的缓冲器(如图5中所示)中,等下一个特征图片段输入有效时,从缓冲器中读出缓存的数据,与当前数据(即当前输入的特征图片段)拼接成一个新的特征图片段,然后将新的数据重新映射到M个列处理单元520中。
在本实施例中,可以有效节省缓存空间,从而可以节省硬件资源。
作为一个示例,以图2中所示的高为6,宽为8的输入特征图,大小为2×2,步长为2的池化窗口为例,图5中每个列处理单元520可以处理同一列的2行数据,每个行处理单元530可以处理同一行的2列数据,图5所示 的运算装置中只需要设置3个列处理单元520和3个行处理单元530即可。
作为另一个示例,假设将输入特征图分为两个特征图片段segment1和segment2,且segment1和segment2的高度h为14,池化窗口大小为3×3,步长为2。预处理单元510在处理segment1时,需要将segment1的最后两行数据需要先缓存到缓冲器中,在接收到segment2后,和segment2的14行数据拼接成新的高度为16的特征图像段,然后重新映射到列处理单元520中。
本申请通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延,从而可以实现实时数据处理。同时,可以随输入数据的输入方式灵活设置数据缓存方式,例如,输入数据是按列输入的,则按列缓存,且对缓存的数据先进行列操作再进行行操作;再例如,输入数据是按行输入的,则按行缓存,且对缓存的数据先进行行操作再进行列操作。此外,本申请提供的运算装置相对于现有技术所需缓存空间较小,从而可以节省硬件开销。某些实施例提供的运算装置可以实现多个计算窗口并行处理,从而可以提高数据吞吐速率,克服神经网络加速器的瓶颈。
如图6所示,本申请实施例还提供一种用于处理神经网络的电路600。该电路600可以对应于上述实施例提供的运算装置300或500。如图6所述,该电路600包括:
第一处理电路610,用于根据计算窗口的大小对k1个输入特征数据进行第一运算操作,获得中间结果,该计算窗口的大小为k1×k2,k1与k2均为正整数;
第二处理电路620,用于根据该计算窗口的大小对该第一处理电路输出的k2个中间结果进行第二运算操作,获得计算结果。
可选地,第一处理电路610用于对输入特征矩阵中的列输入特征值中的k1个输入特征数据进行第一运算操作,其中,k1表示该计算窗口的高度,k2表示该计算窗口的宽度;第二处理电路620用于对第一处理电路610输出的k2个中间结果进行第二运算操作,相当于是对不同列的中间结果做第二运算操作,获得计算结果。
在本实施例中,第一处理电路610可称为列处理电路,对应地,第一运 算操作称为列操作;第二处理电路620可称为行处理电路,对应地,第二运算操作称为行操作。
可选地,第一处理电路610用于对输入特征矩阵中的行输入特征值中的k1个输入特征数据进行第一运算操作,其中,k1表示该计算窗口的宽度,k2表示该计算窗口的高度;第二处理电路620用于对第一处理电路输出的k2个中间结果进行第二运算操作,相当于是对不同行的中间结果做第二运算操作,获得计算结果。
在本实施例中,第一处理电路610可称为行处理电路,对应地,第一运算操作称为行操作;第二处理电路620可称为列处理电路,对应地,第二运算操作称为列操作。
在本申请提供的技术方案中,通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,换句话说,可以按行或按列缓存输入特征矩阵,并且可以同时进行运算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延,有效提高神经网络的数据处理效率,同时也可以节省存储资源,从而节省硬件资源。
可选地,在某些实施例中,该计算窗口为卷积窗口,该第一运算操作的运算方式为乘累加运算,该第二运算操作的运算方式为累加运算。
可选地,在某些实施例中,该计算窗口为池化窗口,该第一运算操作的运算方式为求最大值或求平均值,该第二运算操作的运算方式与该第一运算操作的运算方式相同。
可选地,如图7所示,作为一个实施例,该电路600包括M个该第一处理电路610与M个该第二处理电路620,且该M个第一处理电路610与该M个第二处理电路620一一对应,M为大于1的正整数;该电路600还包括:预处理电路630,用于按列接收输入特征矩阵,并根据该计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值,该预处理电路630还用于将该M组数据一对一地输入到该M个第一处理电路610中。
具体地,预处理电路630接收到输入特征矩阵中的第一列输入特征值,将其处理为M组数据,分别输入M个第一处理电路610中进行列处理;M个第一处理电路610输出M个中间结果,并将该M个中间结果一对一地输 入到M个第二处理电路620中。预处理电路630接收到输入特征矩阵中的第二列输入特征值,将其处理为M组数据,分别输入M个第一处理电路610中进行列处理;M个第一处理电路610输出M个中间结果,并将该M个中间结果一对一地输入到M个第二处理电路620中。以此类推,当预处理电路630接收到第k2列输入特征值时,将其处理为M组数据,分别输入M个第一处理电路610中进行列处理;M个第一处理电路610输出M个中间结果,并将该M个中间结果一对一地输入到M个第二处理电路620中,这时,M个第二处理电路620中的每个第二处理电路620已经接收到k2个中间结果了,第二处理电路620对接收到的k2个中间结果进行行操作,得到运算结果,即M个第二处理电路620得到M个运算结果。后续,预处理电路630可以继续接收列输入特征值,重复执行上文描述的流程,得到下一次的M个运算结果,这里不再赘述。
在本申请中,预处理电路610按列接收一个特征图片段,M个第一处理电路对该特征图片段的列输入特征值进行列操作,M个第二处理电路根据M个第一处理电路输出的中间结果进行行操作,从而得到该特征图片段的计算结果,即该特征图片段的神经网络处理结果。
在本申请提供的技术方案中,可以随输入数据的输入方式灵活设置数据缓存方式,例如,输入数据是按列输入的,则按列缓存,且对缓存的数据先进行列操作再进行行操作;再例如,输入数据是按行输入的,则按行缓存,且对缓存的数据先进行行操作再进行列操作,从而可以提高数据吞吐率。同时,本实施例提供的运算装置可以实现图像数据的并行处理,从而有效提高数据处理的效率。
可选地,在本实施例中,运算装置300所包括的第一处理电路610以及第二处理电路620的数量M是根据输入特征矩阵的大小与计算窗口的大小确定的。
以计算窗口为卷积窗口为例,以第一处理电路610进行列处理,第二处理电路620进行行处理为例。假设输入特征矩阵的行为H,H为大于或等于k1的整数,卷积窗口的高为k1,宽为k2,则M=H-(k1-1)。
在本实施例中,该M组数据包括该列输入特征值中的所有数据,即本申请提供的运算装置300可以实现一列输入特征值的并行处理。
以计算窗口为池化窗口为例,以第一处理电路610进行列处理,第二处 理电路620进行行处理为例。假设输入特征矩阵的行为H,H为大于或等于k1的整数,卷积窗口的高为k1,宽为k2,则M=mod(H/k1)。
当H可以被k1整除时,该M组数据包括该列输入特征值中的所有数据,即本申请提供的运算装置300可以实现一列输入特征值的并行处理。
在本实施例中,该M组数据包括该列输入特征值中的所有数据。
当H不被k1整除时,该M组数据为该列输入特征值中的部分数据;该预处理电路630还包括缓冲器;该预处理电路630还用于,将该列输入特征值中除该M组数据之外的剩余数据存入该缓冲器。
在本实施例中,该M组数据为该列输入特征值中的部分数据,这种场景下,需要将输入特征矩阵的最后几行的数据先缓存在缓冲器中,后续单独进行处理。
例如,在将一张输出特征图分割成多个特征图片段,每个特征图片段按列并行输出的场景中。假设将一张输出特征图分割成2个特征图片段,第一个特征图片段的高度不被池化窗口的高k1整除,则第一个特征图片段的最后几行数据先缓存在缓冲器中,等到第二个特征图片段输入有效时,从缓冲器中读出缓存的数据,与当前数据(第二个特征图片段的数据)拼接成一个新的特征图片段,重新映射到M个第一处理电路610中进行处理。
在本申请提供的技术方案中,可以随输入数据的输入方式灵活设置数据缓存方式,例如,输入数据是按列输入的,则按列缓存,且对缓存的数据先进行列操作再进行行操作;再例如,输入数据是按行输入的,则按行缓存,且对缓存的数据先进行行操作再进行列操作,从而可以提高数据吞吐率。同时,本实施例提供的运算装置可以实现图像数据的并行处理,从而有效提高数据处理的效率。
可选地,在某些实施例中,该输入特征矩阵表示待处理图像中的一个特征图片段;该预处理电路630具体用于,依次接收该待处理图像的各个特征图片段。
可选地,该电路600还包括通信接口,该通信接口用于接收待处理的图像数据,还用于输出第二处理电路的计算结果,即输出图像数据。
综上所述,本申请提供的技术方案,通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行 计算,因此,可以有效减小数据处理的时延,从而可以实现实时数据处理。同时,可以随输入数据的输入方式灵活设置数据缓存方式,例如,输入数据是按列输入的,则按列缓存,且对缓存的数据先进行列操作再进行行操作;再例如,输入数据是按行输入的,则按行缓存,且对缓存的数据先进行行操作再进行列操作。此外,本申请提供的运算装置相对于现有技术所需缓存空间较小,从而可以节省硬件开销。某些实施例提供的运算装置可以实现多个计算窗口并行处理,从而可以提高数据吞吐速率,克服神经网络加速器的瓶颈。
如图8所示,本申请实施例还提供一种用于处理神经网络的方法800。可选地,该方法800可以由上述实施例提供的运算装置执行,上述各个实施例中技术方案以及技术效果的描述均可应用于本实施例中,为了简洁,本实施不再赘述。如图8所示,该方法800包括如下步骤。
810,根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,该计算窗口的大小为k1×k2,k1与k2均为正整数。
具体地,步骤810可以由上述实施例中的第一处理单元310执行。
820,根据该计算窗口的大小,对该第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果。
具体地,步骤820可以由上述实施例中的第二处理单元320执行。
在本申请提供的技术方案中,通过将神经网络的窗口操作分解为列操作与行操作,使得只要接收到一行或一列输入数据,就可以开始计算,换句话说,可以按行或按列缓存输入特征矩阵,并且可以同时进行运算,无需像现有技术中必须先缓存够一定数量的二维输入数据之后,才可以进行计算,因此,可以有效减小数据处理的时延,有效提高神经网络的数据处理效率,同时也可以节省存储资源,从而节省硬件资源。
可选地,在本实施例中,该方法800还包括:按列接收输入特征矩阵,并根据该计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值。步骤810具体包括:根据计算窗口的大小,分别对该M组数据进行该第一运算操作,获得对应的中间结果。具体地,可以通过上述实施例中的M个第一处理单元310分别对该M组数据进行该第一运算操作,获得对应的中间结果。步骤820具体包括:分别针对该M组数据中的每一组数据对应的第一运算操作,每获得k2个中间结果,进行 该第二运算操作,获得对应的计算结果。具体地,可以通过上述实施例中的M个第二处理单元320分别对该M组数据进行该第一运算操作,获得对应的中间结果。
在本申请提供的技术方案中,可以实现图像数据的并行处理,从而有效提高数据处理的效率。
可选地,在本实施例中,M的数值与该输入特征矩阵的大小以及该计算窗口的大小有关。
可选地,在本实施例中,该M组数据包括该列输入特征值中的所有数据。
可选地,在本实施例中,该M组数据为该列输入特征值中的部分数据;该方法800还包括:将该列输入特征值中除该M组数据之外的剩余数据存入缓冲器。
可选地,在本实施例中,该计算窗口为卷积窗口,该第一运算操作的运算方式为乘累加运算,该第二运算操作的运算方式为累加运算。
可选地,在本实施例中,该计算窗口为池化窗口,该第一运算操作的运算方式为求最大值或求平均值,该第二运算操作的运算方式与该第一运算操作的运算方式相同。
可选地,在本实施例中,该输入特征矩阵表示待处理图像中的一个特征图片段;该按列接收输入特征矩阵,包括:依次接收该待处理图像的各个特征图片段。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时用于实现:根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,该计算窗口的大小为k1×k2,k1与k2均为正整数;根据该计算窗口的大小,对该第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果。
上述各个实施例中技术方案以及技术效果的描述均可应用于本实施例中,为了简洁,本实施不再赘述。
可选地,在本实施例中,该计算机程序被计算机执行时还用于实现:按列接收输入特征矩阵,并根据该计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值;该计算机程序被计算机执行时用于实现:根据计算窗口的大小,对k1个输入特征数据进行第 一运算操作,获得中间结果,包括:该计算机程序被计算机执行时用于实现:根据计算窗口的大小,分别对该M组数据进行该第一运算操作,获得对应的中间结果;该计算机程序被计算机执行时用于实现:根据该计算窗口的大小,对该第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果,包括:该计算机程序被计算机执行时用于实现:分别针对该M组数据中的每一组数据对应的第一运算操作,每获得k2个中间结果,进行该第二运算操作,获得对应的计算结果。
可选地,在本实施例中,M的数值与该输入特征矩阵的大小以及该计算窗口的大小有关。
可选地,在本实施例中,该M组数据包括该列输入特征值中的所有数据。
可选地,在本实施例中,该M组数据为该列输入特征值中的部分数据;该计算机程序被计算机执行时还用于实现:将该列输入特征值中除该M组数据之外的剩余数据存入缓冲器。
可选地,在本实施例中,该计算窗口为卷积窗口,该第一运算操作的运算方式为乘累加运算,该第二运算操作的运算方式为累加运算。
可选地,在本实施例中,该计算窗口为池化窗口,该第一运算操作的运算方式为求最大值或求平均值,该第二运算操作的运算方式与该第一运算操作的运算方式相同。
可选地,在本实施例中,该输入特征矩阵表示待处理图像中的一个特征图片段;该计算机程序被计算机执行时用于实现:按列接收输入特征矩阵,包括:该计算机程序被计算机执行时用于实现:依次接收该待处理图像的各个特征图片段。
本申请适用于卷积神经网络(convolution neural network,CNN)硬件加速器中,应用方式为IP核,也有可能应用在包含池化层的其他类型的神经网络加速器/处理器中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、 或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (32)

  1. 一种用于神经网络的运算装置,其特征在于,包括:
    第一处理单元,用于根据计算窗口的大小对k1个输入特征数据进行第一运算操作,获得中间结果,所述计算窗口的大小为k1×k2,k1与k2均为正整数;
    第二处理单元,用于根据所述计算窗口的大小对所述第一处理单元输出的k2个中间结果进行第二运算操作,获得计算结果。
  2. 根据权利要求1所述的运算装置,其特征在于,所述运算装置包括M个所述第一处理单元与M个所述第二处理单元,且所述M个第一处理单元与所述M个第二处理单元一一对应,M为大于1的正整数;
    所述运算装置还包括:
    预处理单元,用于按列接收输入特征矩阵,并根据所述计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值,所述预处理单元还用于将所述M组数据一对一地输入到所述M个第一处理单元中。
  3. 根据权利要求2所述的运算装置,其特征在于,M的数值与所述输入特征矩阵的大小以及所述计算窗口的大小有关。
  4. 根据权利要求2或3所述的运算装置,其特征在于,所述M组数据包括所述列输入特征值中的所有数据。
  5. 根据权利要求2或3所述的运算装置,其特征在于,所述M组数据为所述列输入特征值中的部分数据;
    所述预处理单元还包括缓冲器;
    所述预处理单元还用于,将所述列输入特征值中除所述M组数据之外的剩余数据存入所述缓冲器。
  6. 根据权利要求1至5中任一项所述的运算装置,其特征在于,所述计算窗口为卷积窗口,所述第一运算操作的运算方式为乘累加运算,所述第二运算操作的运算方式为累加运算。
  7. 根据权利要求1至5中任一项所述的运算装置,其特征在于,所述计算窗口为池化窗口,所述第一运算操作的运算方式为求最大值或求平均值,所述第二运算操作的运算方式与所述第一运算操作的运算方式相同。
  8. 根据权利要求2至5中任一项所述的运算装置,其特征在于,所述 输入特征矩阵表示待处理图像中的一个特征图片段;
    所述预处理单元具体用于,依次接收所述待处理图像的各个特征图片段。
  9. 一种用于处理神经网络的电路,其特征在于,包括:
    第一处理电路,用于根据计算窗口的大小对k1个输入特征数据进行第一运算操作,获得中间结果,所述计算窗口的大小为k1×k2,k1与k2均为正整数;
    第二处理电路,用于根据所述计算窗口的大小对所述第一处理电路输出的k2个中间结果进行第二运算操作,获得计算结果。
  10. 根据权利要求9所述的电路,其特征在于,所述电路包括M个所述第一处理电路与M个所述第二处理电路,且所述M个第一处理电路与所述M个第二处理电路一一对应,M为大于1的正整数;
    所述电路还包括:
    预处理电路,用于按列接收输入特征矩阵,并根据所述计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值,所述预处理电路还用于将所述M组数据一对一地输入到所述M个第一处理电路中。
  11. 根据权利要求10所述的电路,其特征在于,M的数值与所述输入特征矩阵的大小以及所述计算窗口的大小有关。
  12. 根据权利要求10或11所述的电路,其特征在于,所述M组数据包括所述列输入特征值中的所有数据。
  13. 根据权利要求10或11所述的电路,其特征在于,所述M组数据为所述列输入特征值中的部分数据;
    所述预处理电路中还包括缓冲器,所述预处理电路还用于,将所述列输入特征值中除所述M组数据之外的剩余数据存入所述缓冲器。
  14. 根据权利要求9至13中任一项所述的电路,其特征在于,所述计算窗口为卷积窗口,所述第一运算操作的运算方式为乘累加运算,所述第二运算操作的运算方式为累加运算。
  15. 根据权利要求9至13中任一项所述的电路,其特征在于,所述计算窗口为池化窗口,所述第一运算操作的运算方式为求最大值或求平均值,所述第二运算操作的运算方式与所述第一运算操作的运算方式相同。
  16. 根据权利要求10所述的电路,其特征在于,所述输入特征矩阵表示待处理图像中的一个特征图片段;
    所述预处理电路具体用于,依次接收所述待处理图像的各个特征图片段。
  17. 一种用于处理神经网络的方法,其特征在于,包括:
    根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,所述计算窗口的大小为k1×k2,k1与k2均为正整数;
    根据所述计算窗口的大小,对所述第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果。
  18. 根据权利要求17所述的方法,其特征在于,所述方法还包括:
    按列接收输入特征矩阵,并根据所述计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值;
    所述根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,包括:
    根据计算窗口的大小,分别对所述M组数据进行所述第一运算操作,获得对应的中间结果;
    所述根据所述计算窗口的大小,对所述第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果,包括:
    分别针对所述M组数据中的每一组数据对应的第一运算操作,每获得k2个中间结果,进行所述第二运算操作,获得对应的计算结果。
  19. 根据权利要求18所述的方法,其特征在于,M的数值与所述输入特征矩阵的大小以及所述计算窗口的大小有关。
  20. 根据权利要求18或19所述的方法,其特征在于,所述M组数据包括所述列输入特征值中的所有数据。
  21. 根据权利要求18或19所述的方法,其特征在于,所述M组数据为所述列输入特征值中的部分数据;
    所述方法还包括:将所述列输入特征值中除所述M组数据之外的剩余数据存入缓冲器。
  22. 根据权利要求17至21中任一项所述的方法,其特征在于,所述计算窗口为卷积窗口,所述第一运算操作的运算方式为乘累加运算,所述第二运算操作的运算方式为累加运算。
  23. 根据权利要求17至21中任一项所述的方法,其特征在于,所述计算窗口为池化窗口,所述第一运算操作的运算方式为求最大值或求平均值,所述第二运算操作的运算方式与所述第一运算操作的运算方式相同。
  24. 根据权利要求17至21中任一项所述的方法,其特征在于,所述输入特征矩阵表示待处理图像中的一个特征图片段;
    所述按列接收输入特征矩阵,包括:依次接收所述待处理图像的各个特征图片段。
  25. 一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被计算机执行时用于实现:
    根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,所述计算窗口的大小为k1×k2,k1与k2均为正整数;
    根据所述计算窗口的大小,对所述第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果。
  26. 根据权利要求25所述的计算机可读存储介质,其特征在于,所述计算机程序被计算机执行时还用于实现:
    按列接收输入特征矩阵,并根据所述计算窗口对接收的列输入特征值进行处理,得到M组数据,其中,每组数据包括k1个输入特征值;
    所述计算机程序被计算机执行时用于实现:根据计算窗口的大小,对k1个输入特征数据进行第一运算操作,获得中间结果,包括:
    所述计算机程序被计算机执行时用于实现:根据计算窗口的大小,分别对所述M组数据进行所述第一运算操作,获得对应的中间结果;
    所述计算机程序被计算机执行时用于实现:根据所述计算窗口的大小,对所述第一运算操作获得的k2个中间结果进行第二运算操作,获得计算结果,包括:
    所述计算机程序被计算机执行时用于实现:分别针对所述M组数据中的每一组数据对应的第一运算操作,每获得k2个中间结果,进行所述第二运算操作,获得对应的计算结果。
  27. 根据权利要求26所述的计算机可读存储介质,其特征在于,M的数值与所述输入特征矩阵的大小以及所述计算窗口的大小有关。
  28. 根据权利要求26或27所述的计算机可读存储介质,其特征在于,所述M组数据包括所述列输入特征值中的所有数据。
  29. 根据权利要求26或27所述的计算机可读存储介质,其特征在于,所述M组数据为所述列输入特征值中的部分数据;
    所述计算机程序被计算机执行时还用于实现:将所述列输入特征值中除所述M组数据之外的剩余数据存入缓冲器。
  30. 根据权利要求25至29中任一项所述的计算机可读存储介质,其特征在于,所述计算窗口为卷积窗口,所述第一运算操作的运算方式为乘累加运算,所述第二运算操作的运算方式为累加运算。
  31. 根据权利要求25至29中任一项所述的计算机可读存储介质,其特征在于,所述计算窗口为池化窗口,所述第一运算操作的运算方式为求最大值或求平均值,所述第二运算操作的运算方式与所述第一运算操作的运算方式相同。
  32. 根据权利要求26至29中任一项所述的计算机可读存储介质,其特征在于,所述输入特征矩阵表示待处理图像中的一个特征图片段;
    所述计算机程序被计算机执行时用于实现:按列接收输入特征矩阵,包括:
    所述计算机程序被计算机执行时用于实现:依次接收所述待处理图像的各个特征图片段。
PCT/CN2017/108640 2017-10-31 2017-10-31 用于神经网络的运算装置、电路及相关方法 WO2019084788A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201780013527.XA CN108780524A (zh) 2017-10-31 2017-10-31 用于神经网络的运算装置、电路及相关方法
PCT/CN2017/108640 WO2019084788A1 (zh) 2017-10-31 2017-10-31 用于神经网络的运算装置、电路及相关方法
US16/727,677 US20200134435A1 (en) 2017-10-31 2019-12-26 Computation apparatus, circuit and relevant method for neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/108640 WO2019084788A1 (zh) 2017-10-31 2017-10-31 用于神经网络的运算装置、电路及相关方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/727,677 Continuation US20200134435A1 (en) 2017-10-31 2019-12-26 Computation apparatus, circuit and relevant method for neural network

Publications (1)

Publication Number Publication Date
WO2019084788A1 true WO2019084788A1 (zh) 2019-05-09

Family

ID=64034073

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2017/108640 WO2019084788A1 (zh) 2017-10-31 2017-10-31 用于神经网络的运算装置、电路及相关方法

Country Status (3)

Country Link
US (1) US20200134435A1 (zh)
CN (1) CN108780524A (zh)
WO (1) WO2019084788A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111445420A (zh) * 2020-04-09 2020-07-24 北京爱芯科技有限公司 卷积神经网络的图像运算方法、装置和电子设备

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3089664A1 (fr) * 2018-12-05 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif pour réduire la charge de calcul d’un microprocesseur destiné à traiter des données par un réseau de neurones à convolution
CN110647978B (zh) * 2019-09-05 2020-11-03 北京三快在线科技有限公司 在卷积神经网络中提取卷积窗的系统和方法
CN110991609B (zh) * 2019-11-27 2023-12-26 天津大学 用于数据传输的行缓存器
CN110956258B (zh) * 2019-12-17 2023-05-16 深圳鲲云信息科技有限公司 一种神经网络加速电路和方法
US11507831B2 (en) * 2020-02-24 2022-11-22 Stmicroelectronics International N.V. Pooling unit for deep learning acceleration
CN113255897B (zh) * 2021-06-11 2023-07-07 西安微电子技术研究所 一种卷积神经网络的池化计算单元

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122551A1 (en) * 2012-10-31 2014-05-01 Mobileye Technologies Limited Arithmetic logic unit
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN106779060A (zh) * 2017-02-09 2017-05-31 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
CN107239823A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种用于实现稀疏神经网络的装置和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016154A (en) * 1991-07-10 2000-01-18 Fujitsu Limited Image forming apparatus
US9767565B2 (en) * 2015-08-26 2017-09-19 Digitalglobe, Inc. Synthesizing training data for broad area geospatial object detection
CN106951395B (zh) * 2017-02-13 2018-08-17 上海客鹭信息技术有限公司 面向压缩卷积神经网络的并行卷积运算方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122551A1 (en) * 2012-10-31 2014-05-01 Mobileye Technologies Limited Arithmetic logic unit
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107239823A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种用于实现稀疏神经网络的装置和方法
CN106779060A (zh) * 2017-02-09 2017-05-31 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111445420A (zh) * 2020-04-09 2020-07-24 北京爱芯科技有限公司 卷积神经网络的图像运算方法、装置和电子设备
CN111445420B (zh) * 2020-04-09 2023-06-06 北京爱芯科技有限公司 卷积神经网络的图像运算方法、装置和电子设备

Also Published As

Publication number Publication date
CN108780524A (zh) 2018-11-09
US20200134435A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
WO2019084788A1 (zh) 用于神经网络的运算装置、电路及相关方法
US20200285446A1 (en) Arithmetic device for neural network, chip, equipment and related method
US9367892B2 (en) Processing method and apparatus for single-channel convolution layer, and processing method and apparatus for multi-channel convolution layer
US20210073569A1 (en) Pooling device and pooling method
CN111199273B (zh) 卷积计算方法、装置、设备及存储介质
US9813502B1 (en) Data transfers in columnar data systems
WO2021109699A1 (zh) 人工智能加速器、设备、芯片及数据处理方法
US11734554B2 (en) Pooling processing method and system applied to convolutional neural network
CN110737401B (zh) 用于管理独立冗余磁盘阵列的方法、设备和计算机程序产品
WO2022041188A1 (zh) 用于神经网络的加速器、方法、装置及计算机存储介质
CN111210004B (zh) 卷积计算方法、卷积计算装置及终端设备
US9342564B2 (en) Distributed processing apparatus and method for processing large data through hardware acceleration
CN106227506A (zh) 一种内存压缩系统中的多通道并行压缩解压系统及方法
CN111178513B (zh) 神经网络的卷积实现方法、卷积实现装置及终端设备
CN113918120A (zh) 计算装置、神经网络处理设备、芯片及处理数据的方法
CN103902614B (zh) 一种数据处理方法、设备和系统
US11467973B1 (en) Fine-grained access memory controller
CN115034376B (zh) 神经网络处理器的批量标准化处理方法及存储介质
WO2023071566A1 (zh) 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品
US20160299800A1 (en) System and method for redundant database communication
KR100853912B1 (ko) 초기 메모리에 저장된 화상 데이타를 처리하는 방법, 컴퓨터 판독가능 기록매체 및 장치
US8473679B2 (en) System, data structure, and method for collapsing multi-dimensional data
TWI586144B (zh) 用於視頻分析與編碼之多重串流處理技術
US10841405B1 (en) Data compression of table rows
WO2021031154A1 (zh) 神经网络的特征图装载方法及设备

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17930644

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17930644

Country of ref document: EP

Kind code of ref document: A1