一种卷积神经网络的基本计算单元及计算方法与流程

文档序号:16539148发布日期:2019-01-08 20:11阅读:471来源:国知局
一种卷积神经网络的基本计算单元及计算方法与流程

本发明涉及计算机技术领域,特别涉及一种卷积神经网络的基本计算单元及计算方法。



背景技术:

卷积神经网络(convolutionalneuralnetworks,cnn)是近年来发展迅速并引起广泛重视的一种高效识别方法。

目前,cnn算法可以基于cpu(centralprocessingunit,中央处理器)或gpu(graphicsprocessingunit,图形处理器)得以实现。其中,cpu和gpu均为软件实现算法。

由于现有实现方式是软件实现算法,故算法完成的时间不可控。



技术实现要素:

本发明提供了一种卷积神经网络的基本计算单元及计算方法,能够基于硬件实现算法,以使算法完成时间可控。

为了达到上述目的,本发明是通过如下技术方案实现的:

一方面,本发明提供了一种卷积神经网络的基本计算单元,包括:

控制器、加法树、输入端缓存器、至少一个计算单元、输出端缓存器;

所述计算单元包括块随机存储器、至少一个卷积运算单元、内部加法器、激活池化单元;所述块随机存储器和所述内部加法器均分别与每一个所述卷积运算单元相连,所述内部加法器和所述激活池化单元均与所述加法树相连;

所述输入端缓存器,用于针对每一个所述计算单元均执行:基于所述控制器的控制,将缓存的至少一个待处理特征图中的第一行数的图像数据加载至当前计算单元,所述当前计算单元对应有所述第一行数;

所述块随机存储器,用于缓存所述输入端缓存器加载来的每一行图像数据;针对每一个所述卷积运算单元均执行:基于所述控制器的控制,针对自身缓存的每一行图像数据,向当前卷积运算单元下发有效行数和起始行数;

所述卷积运算单元,用于根据下发来的有效行数和起始行数,从所述块随机存储器缓存的全部图像数据中,获取第二行数的图像数据,所述第二行数为自身执行基本卷积运算所需的行数;对所述第二行数的图像数据进行基本卷积运算后发送给所述内部加法器;

所述内部加法器,用于对所述卷积运算单元发来的图像数据进行处理后发送给所述加法树;

所述加法树,用于基于所述控制器的控制,对每一个所述内部加法器发来的图像数据进行处理后发送给一所述激活池化单元;

所述激活池化单元,用于基于所述控制器的控制,对所述加法树发来的图像数据进行处理后发送给所述输出端缓存器。

进一步地,所述激活池化单元包括:激活模块、第一选择器、池化模块、第二选择器、第三选择器;

所述第一选择器的一输入端与所述激活模块的输入端相连、另一输入端与所述激活模块的输出端相连、输出端与所述池化模块的输入端相连;

所述第二选择器的一输入端与所述池化模块的输入端相连、另一输入端与所述池化模块的输出端相连、输出端与所述第三选择器的第一输入端相连;

所述第三选择器的所述第一输入端与所述第二选择器的输出端相连、第二输入端与所述至少一个计算单元中的其他计算单元相连、第三输入端与所述输入端缓存器相连、第一输出端与所述输出端缓存器相连,第二输出端与所述激活模块的输入端相连;

所述激活池化单元,用于基于所述控制器的控制,控制所述激活模块和/或所述池化模块是否工作;

所述第三选择器,用于基于所述控制器的控制,控制所述第一输入端、所述第二输入端和所述第三输入端中的一个输入端工作,控制所述第一输出端或所述第二输出端工作。

进一步地,所述激活池化单元还包括:偏置量处理单元;

所述偏置量处理单元分别与所述加法树和所述激活模块相连;

所述第二输出端通过所述偏置量处理单元与所述激活模块的输入端相连。

进一步地,所述当前计算单元包括4个卷积运算单元;

所述4个卷积运算单元中任一卷积运算单元执行基本卷积运算所需的行数为3行,步长为1;

所述当前计算单元对应的第一行数为16行。

进一步地,所述输入端缓存器,还用于根据公式一、公式二和公式三,确定每一个所述计算单元对应的第一行数,其中,任一所述卷积运算单元执行基本卷积运算时的步长为1;

所述公式一包括:

所述公式二包括:

所述公式三包括

yi=max{yi}

其中,xij为所述至少一个计算单元中的第i个计算单元中的第j个卷积运算单元执行基本卷积运算所需的行数,ai为所述第i个计算单元对应的预设优化值,ai为整数,m为所述第i个计算单元中的卷积运算单元的个数,xi为所述第i个计算单元对应的优化变量,yi为所述第i个计算单元对应的中间值,d为一行图像数据的存储资源量且单位为字节,n为所述至少一个计算单元的个数,n为外部芯片所能提供的存储资源量且单位为字节,t为所述卷积神经网络的基本计算单元中其他模块所使用的存储资源量且单位为字节,yi为所述第i个计算单元对应的第一行数,max{}为取最大值。

进一步地,所述输入端缓存器,还用于根据公式四和公式五,确定每一个所述计算单元对应的第一行数,其中,不同所述卷积运算单元执行基本卷积运算时所需的行数相同且步长为1,不同计算单元包括的卷积运算单元个数相同;

所述公式四包括:

所述公式五包括:

y=max{2k}

其中,a为任一所述卷积运算单元执行基本卷积运算时所需的行数,x为任一所述计算单元包括的卷积运算单元个数,k为整数,n为外部芯片所能提供的存储资源量且单位为字节,t为所述卷积神经网络的基本计算单元中其他模块所使用的存储资源量且单位为字节,d为一行图像数据的存储资源量且单位为字节,n为所述至少一个计算单元的个数,y为每一个所述计算单元对应的第一行数,max{}为取最大值。

进一步地,所述外部芯片包括:fpga(field-programmablegatearray,现场可编程逻辑门阵列)芯片或定制芯片;

所述其他模块包括:所述激活池化单元中包括的池化模块、所述输出端缓存器、所述加法树中任意一种或多种。

进一步地,任一所述卷积运算单元执行基本卷积运算所需的行数为3行且步长为1时,对于任一所述块随机存储器:任意相邻两次缓存的图像数据中,在前缓存的末第2行图像数据与在后缓存的第1行图像数据相同,在前缓存的末第1行图像数据与在后缓存的第2行图像数据相同;

对于任一所述卷积运算单元:任意相邻两次获取的3行图像数据中,在前缓存的第2行图像数据与在后缓存的第1行图像数据相同,在前缓存的第3行图像数据与在后缓存的第2行图像数据相同。

进一步地,所述输入端缓存器,还用于针对每一个所述待处理特征图均执行:所述控制器控制当前待处理特征图的pad为1时,在所述当前待处理特征图的外围进行补零,以使所述当前待处理特征图的行数和列数均增加2;以及具体用于基于补零后的所述当前待处理特征图执行图像数据加载操作。

另一方面,本发明提供了一种基于上述任一所述卷积神经网络的基本计算单元的计算方法,包括:

通过所述输入端缓存器,针对每一个所述计算单元均执行:基于所述控制器的控制,将缓存的至少一个待处理特征图中的第一行数的图像数据加载至当前计算单元,所述第一行数与所述当前计算单元相对应;

通过所述块随机存储器,缓存所述输入端缓存器加载来的每一行图像数据;针对每一个所述卷积运算单元均执行:基于所述控制器的控制,针对自身缓存的每一行图像数据,向当前卷积运算单元下发有效行数和起始行数;

通过所述卷积运算单元,根据下发来的有效行数和起始行数,从所述块随机存储器缓存的全部图像数据中,获取第二行数的图像数据,所述第二行数为自身执行基本卷积运算所需的行数;对所述第二行数的图像数据进行基本卷积运算后发送给所述内部加法器;

通过所述内部加法器,对所述卷积运算单元发来的图像数据进行处理后发送给所述加法树;

通过所述加法树,基于所述控制器的控制,对每一个所述内部加法器发来的图像数据进行处理后发送给一所述激活池化单元;

通过所述激活池化单元,基于所述控制器的控制,对所述加法树发来的图像数据进行处理后发送给所述输出端缓存器。

本发明提供了一种卷积神经网络的基本计算单元及计算方法,该基本计算单元包括控制器、加法树、输入端缓存器、若干计算单元、输出端缓存器;计算单元包括块随机存储器、若干卷积运算单元、内部加法器、激活池化单元。基于控制器的控制,输入端缓存器向各个计算单元加载相应行数图像数据,块随机存储器向各个卷积运算单元下发有效行数和起始行数以使其获取相应行数图像数据;卷积运算单元处理图像数据后经内部加法器发送给加法树;加法树处理各内部加法器发来的图像数据后发送给一激活池化单元;激活池化单元处理图像数据后发送给输出端缓存器。本发明能够基于硬件实现算法,以使算法完成时间可控。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种卷积神经网络的基本计算单元的示意图;

图2是本发明一实施例提供的一种卷积神经网络中的计算单元的示意图;

图3是本发明一实施例提供的一种基于卷积神经网络的基本计算单元的计算方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种卷积神经网络的基本计算单元,可以包括:

控制器101、加法树102、输入端缓存器103、至少一个计算单元104、输出端缓存器105;

所述计算单元104包括块随机存储器1041、至少一个卷积运算单元1042、内部加法器1043、激活池化单元1044;

所述块随机存储器1041和所述内部加法器1043均分别与每一个所述卷积运算单元1042相连,所述内部加法器1043和所述激活池化单元1044均与所述加法树102相连;

所述输入端缓存器103,用于针对每一个所述计算单元104均执行:基于所述控制器101的控制,将缓存的至少一个待处理特征图中的第一行数的图像数据加载至当前计算单元,所述当前计算单元对应有所述第一行数;

所述块随机存储器1041,用于缓存所述输入端缓存器103加载来的每一行图像数据;针对每一个所述卷积运算单元1042均执行:基于所述控制器101的控制,针对自身缓存的每一行图像数据,向当前卷积运算单元下发有效行数和起始行数;

所述卷积运算单元1042,用于根据下发来的有效行数和起始行数,从所述块随机存储器1041缓存的全部图像数据中,获取第二行数的图像数据,所述第二行数为自身执行基本卷积运算所需的行数;对所述第二行数的图像数据进行基本卷积运算后发送给所述内部加法器1043;

所述内部加法器1043,用于对所述卷积运算单元1042发来的图像数据进行处理后发送给所述加法树102;

所述加法树102,用于基于所述控制器101的控制,对每一个所述内部加法器1043发来的图像数据进行处理后发送给一所述激活池化单元1044;

所述激活池化单元1044,用于基于所述控制器101的控制,对所述加法树102发来的图像数据进行处理后发送给所述输出端缓存器105。

本发明实施例提供了一种卷积神经网络的基本计算单元,包括控制器、加法树、输入端缓存器、若干计算单元、输出端缓存器;计算单元包括块随机存储器、若干卷积运算单元、内部加法器、激活池化单元。基于控制器的控制,输入端缓存器向各个计算单元加载相应行数图像数据,块随机存储器向各个卷积运算单元下发有效行数和起始行数以使其获取相应行数图像数据;卷积运算单元处理图像数据后经内部加法器发送给加法树;加法树处理各内部加法器发来的图像数据后发送给一激活池化单元;激活池化单元处理图像数据后发送给输出端缓存器。本发明实施例能够基于硬件实现算法,以使算法完成时间可控。

详细地,有效行数可以为块随机存储器当前实际加载的行数。

详细地,从输入端缓存器向块随机存储器加载图像数据,所需加载的行数,以及从哪一行加载至哪一行,可以由控制器根据上层命令进行控制。

详细地,控制器根据上层命令,可以对基本计算单元中的各个其他单元模块进行控制。比如,卷积运算完成后,通过加法树模块做加法,然后根据激活算法进行数据处理,然后做池化处理,这些过程都是由控制器调配完成的。比如,控制器控制是否可以做激活或池化。比如,控制器向其它单元模块下发数据加载、数据存储、数据计算的参数,并由其它单元模块反馈是否完成。

在本发明一个实施例中,控制器由xilinxfpga-pl实现,通过axi(advancedextensibleinterface)总线与arm(xilinxfpga-ps)相连。其中,对于arm(xilinxfpga-ps)来说,ps(processingsystem,处理系统)是与芯片中fpga无关的arm的soc(systemonchip,系统级芯片)的部分;pl(progarmmablelogic,可编程逻辑)是芯片中fpga的部分。

本发明实施例所提出的这一卷积神经网络基本计算单元的设计,通过将卷积、池化、加法树、数据存储及控制模块等合理结合,具有灵活通用的特点,以达到通用的目的,可以实现众多卷积神经网络算法,故具有广阔的应用前景。

本发明一个实施例中,控制器可以controller表示,输入端缓存器可以inbuffer表示,输出端缓存器可以outbuffer表示,加法树可以addertreemodule表示,至少一个计算单元可以cua(calculateunitarray,计算单元阵列)表示,计算单元即为cu,块随机存储器可以blockram表示,卷积运算单元可以conv表示,内部加法器可以interadder表示,激活模块可以relu(rectifiedlinearunit)表示,池化模块可以pool表示,选择器可以mux(multiplexer)表示。

在本发明一个实施例中,各个计算单元的内部加法器的处理结果,可以均输出至加法树,加法树将处理结果汇聚后,根据控制器发来的控制信息,将汇聚的全部处理结果发送给该控制信息所指定计算单元的激活池化单元,以进行后续的激活、池化等处理。

在本发明一个实施例中,请参考图2,所述激活池化单元1044包括:激活模块10441、第一选择器10442、池化模块10443、第二选择器10444、第三选择器10445;

所述第一选择器10442的一输入端与所述激活模块10441的输入端相连、另一输入端与所述激活模块10441的输出端相连、输出端与所述池化模块10443的输入端相连;

所述第二选择器10444的一输入端与所述池化模块10443的输入端相连、另一输入端与所述池化模块10443的输出端相连、输出端与所述第三选择器10445的第一输入端相连;

所述第三选择器10445的所述第一输入端与所述第二选择器10444的输出端相连、第二输入端与所述至少一个计算单元104中的其他计算单元104相连、第三输入端与所述输入端缓存器103相连、第一输出端与所述输出端缓存器105相连,第二输出端与所述激活模块10441的输入端相连;

所述激活池化单元1044,用于基于所述控制器101的控制,控制所述激活模块10441和/或所述池化模块10443是否工作;

所述第三选择器10445,用于基于所述控制器101的控制,控制所述第一输入端、所述第二输入端和所述第三输入端中的一个输入端工作,控制所述第一输出端或所述第二输出端工作。

详细地,请参考图2,可以确定图像数据在计算单元中的处理流向。

详细地,基于控制器的控制信息,可以确定第一选择器的哪一输入端工作,进行确定是否需要激活处理。同理,可以确定第二选择器的哪一输入端工作,进行确定是否需要池化处理。

详细地,基于控制器的控制信息,可以确定第三选择器的哪一输入端工作,以及哪一输出端工作。其中,第三选择器的第二输入端与其他计算单元相连,这一其他计算单元可以为上述至少一个计算单元中,除自身所在的计算单元之外的任意一个计算单元。

在本发明一个实施例中,所述激活池化单元1044还包括:偏置量处理单元10446;

所述偏置量处理单元10446分别与所述加法树102和所述激活模块10441相连;

所述第二输出端通过所述偏置量处理单元10446与所述激活模块10441的输入端相连。

举例来说,偏置量为1时,针对来自加法树的图像数据,将其中每一个数值均加上1。进行偏置量处理后,才进行后续的激活、池化操作。

本发明实施例中,块随机存储器负责缓存卷积运算过程中需要的输入数据,以保证所连接的各个卷积运算单元能够正常运行。比如,假设一个卷积运算单元采用3×3的卷积运算作为基本卷积单元来实现其它维度的卷积运算,则该卷积运算单元需要3行输入数据,如此,块随机存储器至少需要缓存这3行输入数据。

基于上述内容,在本发明一个实施例中,所述当前计算单元包括4个卷积运算单元1042;

所述4个卷积运算单元1042中任一卷积运算单元1042执行基本卷积运算所需的行数为3行,步长为1;

所述当前计算单元对应的第一行数为16行。

举例来说,请参考图2,假设当前计算单元包括4个相同的卷积运算单元,各卷积运算单元执行基本卷积运算所需的行数为3行。对于图像处理,可以存在下述两种情况:

情况1:同一计算单元中的各个卷积运算单元所处理的图像数据相同;

情况2:同一计算单元中的各个卷积运算单元所处理的图像数据均不相同。

其中,针对上述情况2,可以存在情况3:各个卷积运算单元所处理图像数据可以来自于不同的待处理特征图。如此,块随机存储器所缓存的数据可以来自同一特征图,也可以来自多个特征图,具体实现可根据控制器进行控制。

在情况1下,若各个卷积运算单元均处理相同的3行图像数据,则块随机存储器至少需要存储3行图像数据,即当前计算单元对应的第一行数不小于3。

在情况2下,若各个卷积运算单元同时处理不同的3行图像数据,则块随机存储器至少需要存储12行图像数据,即当前计算单元对应的第一行数不小于12。

考虑到待处理的特征图大多为128×128、256×256、512×512等,也会存在64×64、32×32、16×16的情况,使得行数通常为2的多次方。在无需对特征图进行外围补零处理的情况下,若块随机存储器每次加载12行,则最后一次加载通常不为12行,比如特征图为128×128时,需要加载11次,第11次仅加载8行,特征图为64×64时,需要加载6次,第6次仅加载4行。如此,末次加载时会存在资源浪费情况。

如此,可以使块随机存储器每次加载的行数同样为2的多次方,且不小于12。比如,可以选择为16行。

基于同样的实现原理,在本发明其他实施例中,当块随机存储器的可用资源较多时,同样可以选择为32行,甚至64行等。

通常情况下,在块随机存储器的可用资源较多的情况下,若待处理特征图的行数通常较大时,所选择的行数不宜过小;当待处理特征图的行数通常较小时,所选择的行数也不宜过大。

以块随机存储器每次加载16行为例,即使在上述情况2下,这16行至少可以保证各个卷积运算单元连续获取两次图像数据,从而相应减少从输入端缓存器加载图像数据的次数,对应的减少重复加载图像数据所造成的时间延迟。这个设计相当于批处理,当一行计算完成时自动换到下一行进行卷积运算,并消除行与行之间的时间冗余,消除卷积运算换行时造成的性能损耗。因此,可以提高运算效率,实现高速运算。

在本发明一个实施例中,所述输入端缓存器103,还用于根据下述公式(1)~公式(3),确定每一个所述计算单元104对应的第一行数,其中,任一所述卷积运算单元1042执行基本卷积运算时的步长为1;

yi=max{yi}(3)

其中,xij为所述至少一个计算单元中的第i个计算单元中的第j个卷积运算单元执行基本卷积运算所需的行数,ai为所述第i个计算单元对应的预设优化值,ai为整数,m为所述第i个计算单元中的卷积运算单元的个数,xi为所述第i个计算单元对应的优化变量,yi为所述第i个计算单元对应的中间值,d为一行图像数据的存储资源量且单位为字节,n为所述至少一个计算单元的个数,n为外部芯片所能提供的存储资源量且单位为字节,t为所述卷积神经网络的基本计算单元中其他模块所使用的存储资源量且单位为字节,yi为所述第i个计算单元对应的第一行数,max{}为取最大值。

详细地,这一设计尤其适用于待处理特征图的行数通常较大的应用场景。

详细地,可以根据控制器的控制信息,灵活设定ai的值。ai为0时,在上述情况3下,块随机存储器每次加载的行数,仅可支持各个卷积运算单元获取一次,如此将会导致块随机存储器从输入端缓存器反复加载图像数据的情况。

在步长为1的前提下,ai为1时,在上述情况3下,块随机存储器每次加载的行数,可支持各个卷积运算单元连续获取两次;ai为2时,可支持各个卷积运算单元连续获取三次;ai为3时,可支持各个卷积运算单元连续获取四次;依次类推。

由于yi不一定为2的多次方,故这一方案更为适用于待处理特征图需要进行外围补零处理的情况。由于yi取最大值,故可以最大程度的减少块随机存储器从输入端缓存器反复加载图像数据的次数,进而提高整体处理效率。

基于上述内容,在本发明另一个实施例中,所述输入端缓存器103,还用于根据下述公式(4)和公式(5),确定每一个所述计算单元104对应的第一行数,其中,不同所述卷积运算单元1042执行基本卷积运算时所需的行数相同且步长为1,不同计算单元104包括的卷积运算单元1042个数相同;

y=max{2k}(5)

其中,a为任一所述卷积运算单元执行基本卷积运算时所需的行数,x为任一所述计算单元包括的卷积运算单元个数,k为整数,n为外部芯片所能提供的存储资源量且单位为字节,t为所述卷积神经网络的基本计算单元中其他模块所使用的存储资源量且单位为字节,d为一行图像数据的存储资源量且单位为字节,n为所述至少一个计算单元的个数,y为每一个所述计算单元对应的第一行数,max{}为取最大值。

详细地,由于y为2的多次方,故这一方案更为适用于待处理特征图的行数也为2的多次方,且无需进行外围补零处理的情况。

在本发明一个实施例中,所述外部芯片包括:fpga芯片或定制芯片;

所述其他模块包括:所述激活池化单元1044中包括的池化模块10443、所述输出端缓存器105、所述加法树102中任意一种或多种。

在本发明一个实施例中,任一所述卷积运算单元1042执行基本卷积运算所需的行数为3行且步长为1时,对于任一所述块随机存储器1041:任意相邻两次缓存的图像数据中,在前缓存的末第2行图像数据与在后缓存的第1行图像数据相同,在前缓存的末第1行图像数据与在后缓存的第2行图像数据相同;

对于任一所述卷积运算单元1042:任意相邻两次获取的3行图像数据中,在前缓存的第2行图像数据与在后缓存的第1行图像数据相同,在前缓存的第3行图像数据与在后缓存的第2行图像数据相同。

举例来说,假设块随机存储器p当前次加载了16行图像数据,且连接的4个卷积运算单元均处理这16行图像数据,且均采用3×3的卷积运算作为基本卷积单元来实现卷积运算,即执行基本卷积运算所需的行数为3行,同时设定步长均为1。

假设块随机存储器p向这4个卷积运算单元中的卷积运算单元q,下发的有效行数和起始行数分别为16和1,则卷积运算单元q从这16行中获取第1行至第3行。卷积运算单元q完成第1行至第3行的处理后,可以通知控制器,控制器可以控制块随机存储器p,向卷积运算单元q下发有效行数为16和起始行数为2,则卷积运算单元q从这16行中获取第2行至第4行。如此循环,直至卷积运算单元q从这16行中获取第14行至第16行,以完成这16行图像数据的处理操作。

在本发明一个实施例中,所述输入端缓存器103,还用于针对每一个所述待处理特征图均执行:所述控制器101控制当前待处理特征图的pad为1时,在所述当前待处理特征图的外围进行补零,以使所述当前待处理特征图的行数和列数均增加2;以及具体用于基于补零后的所述当前待处理特征图执行图像数据加载操作。

举例来说,假设待处理特征图的大小为512×512,即具有512行图像数据和512列图像数据。以基本卷积单元为3×3且步长为1举例,则首先处理第1行至第3行,然后处理第2行至第4行,随后处理第3行至第5行,依次类推,直至处理第510行至第512行后结束。可以看出,需要处理510次,故所得结果的大小为510×510,比原图在行数上少了两行,在列数上少了两列。当卷积处理操作需要循环执行多次时,每执行一次,图形缩小一次。

基于此,为了实现卷积处理操作完成后,图形大小保持不变,可以使pad为1,以在进行卷积处理操作前,对图形进行外围补一圈零值,以使图形大小由512×512变为514×514,如此,经一次卷积处理操作,可将514×514大小的图像处理为512×512大小的图像。如此循环,无论经过多少次卷积处理操作,可以保持图形大小始终不变。

基于同样的实现原理,pad的数值,等同于在图形外围补零的圈数。

详细地,对于补零处理,可以在输入端缓存器中即进行补零,也可以在块随机存储器中进行补零。

在输入端缓存器中补零时,先补零,然后基于补零后的特征图进行图像数据加载。比如,特征图共32行,补零后,特征图共34行,补零后的特征图首行、末行、首列、末列的值均为零。假设一次加载16行,则第一次加载时,先加载这34行的第1行至第16行,第二次加载这34行的第15行至第30行,第三次加载这34行的第29行至第34行。

在块随机存储器中补零时,先加载图像数据,然后基于加载的图像数据进行补零。比如,特征图共32行,假设一次加载16行,则第一次加载时,先加载这32行的第1行至第15行,由于这15行是图片的开始,故可针对所加载的15行进行首行、首列、末列补零。第二次加载这32行的第14行至第29行,由于这15行不是图片的开始或结束,故可针对所加载的15行进行首列、末列补零。第三次加载这32行的第28行至第32行,由于这5行是图片的结束,故可针对所加载的5行进行末行、首列、末列补零。

此外,基于同样的实现原理,特征图共8行,且一次加载16行时,则第一次加载时,加载这8行。由于这8行是图片的全部,故可针对所加载的8行进行一次外围补零,即进行首行、末行、首列、末列补零。

本发明实施例中,可以基于硬件实现cnn算法,cnn算法硬件实现技术具有算法完成时间可控、计算能力高、低功耗等优点,且可应用于各种小型设备终端,比如手机等领域。

如图3所示,本发明一个实施例提供了一种基于上述任一所述卷积神经网络的基本计算单元的计算方法,具体包括以下步骤:

步骤301:通过所述输入端缓存器,针对每一个所述计算单元均执行:基于所述控制器的控制,将缓存的至少一个待处理特征图中的第一行数的图像数据加载至当前计算单元,所述第一行数与所述当前计算单元相对应。

步骤302:通过所述块随机存储器,缓存所述输入端缓存器加载来的每一行图像数据;针对每一个所述卷积运算单元均执行:基于所述控制器的控制,针对自身缓存的每一行图像数据,向当前卷积运算单元下发有效行数和起始行数。

步骤303:通过所述卷积运算单元,根据下发来的有效行数和起始行数,从所述块随机存储器缓存的全部图像数据中,获取第二行数的图像数据,所述第二行数为自身执行基本卷积运算所需的行数;对所述第二行数的图像数据进行基本卷积运算后发送给所述内部加法器。

步骤304:通过所述内部加法器,对所述卷积运算单元发来的图像数据进行处理后发送给所述加法树。

步骤305:通过所述加法树,基于所述控制器的控制,对每一个所述内部加法器发来的图像数据进行处理后发送给一所述激活池化单元。

步骤306:通过所述激活池化单元,基于所述控制器的控制,对所述加法树发来的图像数据进行处理后发送给所述输出端缓存器。

上述方法内的各单元、模块、组件等之间的信息交互、执行过程等内容,由于与本发明产品实施例基于同一构思,具体内容可参见本发明产品实施例中的叙述,此处不再赘述。

综上所述,本发明的各个实施例至少具有如下有益效果:

1、本发明实施例中,卷积神经网络的基本计算单元包括控制器、加法树、输入端缓存器、若干计算单元、输出端缓存器;计算单元包括块随机存储器、若干卷积运算单元、内部加法器、激活池化单元。基于控制器的控制,输入端缓存器向各个计算单元加载相应行数图像数据,块随机存储器向各个卷积运算单元下发有效行数和起始行数以使其获取相应行数图像数据;卷积运算单元处理图像数据后经内部加法器发送给加法树;加法树处理各内部加法器发来的图像数据后发送给一激活池化单元;激活池化单元处理图像数据后发送给输出端缓存器。本发明实施例能够基于硬件实现算法,以使算法完成时间可控。

2、本发明实施例中,所提出的这一卷积神经网络基本计算单元的设计,通过将卷积、池化、加法树、数据存储及控制模块等合理结合,具有灵活通用的特点,以达到通用的目的,可以实现众多卷积神经网络算法,故具有广阔的应用前景。

3、本发明实施例中,当一行计算完成时自动换到下一行进行卷积运算,并消除行与行之间的时间冗余,消除卷积运算换行时造成的性能损耗。因此,可以提高运算效率,实现高速运算。

4、本发明实施例中,可以基于硬件实现cnn算法,cnn算法硬件实现技术具有算法完成时间可控、计算能力高、低功耗等优点,且可应用于各种小型设备终端,比如手机等领域。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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