一种卷积神经网络的基本计算单元及计算方法技术

技术编号:20045956 阅读:36 留言:0更新日期:2019-01-09 04:29
本发明专利技术提供了一种卷积神经网络的基本计算单元及计算方法,该基本计算单元包括控制器、加法树、输入端缓存器、若干计算单元、输出端缓存器;计算单元包括块随机存储器、若干卷积运算单元、内部加法器、激活池化单元。基于控制器的控制,输入端缓存器向各个计算单元加载相应行数图像数据,块随机存储器向各个卷积运算单元下发有效行数和起始行数以使其获取相应行数图像数据;卷积运算单元处理图像数据后经内部加法器发送给加法树;加法树处理各内部加法器发来的图像数据后发送给一激活池化单元;激活池化单元处理图像数据后发送给输出端缓存器。本方案能够基于硬件实现算法,以使算法完成时间可控。

【技术实现步骤摘要】
一种卷积神经网络的基本计算单元及计算方法
本专利技术涉及计算机
,特别涉及一种卷积神经网络的基本计算单元及计算方法。
技术介绍
卷积神经网络(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.一种卷积神经网络的基本计算单元,其特征在于,包括:控制器、加法树、输入端缓存器、至少一个计算单元、输出端缓存器;所述计算单元包括块随机存储器、至少一个卷积运算单元、内部加法器、激活池化单元;所述块随机存储器和所述内部加法器均分别与每一个所述卷积运算单元相连,所述内部加法器和所述激活池化单元均与所述加法树相连;所述输入端缓存器,用于针对每一个所述计算单元均执行:基于所述控制器的控制,将缓存的至少一个待处理特征图中的第一行数的图像数据加载至当前计算单元,所述当前计算单元对应有所述第一行数;所述块随机存储器,用于缓存所述输入端缓存器加载来的每一行图像数据;针对每一个所述卷积运算单元均执行:基于所述控制器的控制,针对自身缓存的每一行图像数据,向当前卷积运算单元下发有效行数和起始行数;所述卷积运算单元,用于根据下发来的有效行数和起始行数,从所述块随机存储器缓存的全部图像数据中,获取第二行数的图像数据,所述第二行数为自身执行基本卷积运算所需的行数;对所述第二行数的图像数据进行基本卷积运算后发送给所述内部加法器;所述内部加法器,用于对所述卷积运算单元发来的图像数据进行处理后发送给所述加法树;所述加法树,用于基于所述控制器的控制,对每一个所述内部加法器发来的图像数据进行处理后发送给一所述激活池化单元;所述激活池化单元,用于基于所述控制器的控制,对所述加法树发来的图像数据进行处理后发送给所述输出端缓存器。...

【技术特征摘要】
1.一种卷积神经网络的基本计算单元,其特征在于,包括:控制器、加法树、输入端缓存器、至少一个计算单元、输出端缓存器;所述计算单元包括块随机存储器、至少一个卷积运算单元、内部加法器、激活池化单元;所述块随机存储器和所述内部加法器均分别与每一个所述卷积运算单元相连,所述内部加法器和所述激活池化单元均与所述加法树相连;所述输入端缓存器,用于针对每一个所述计算单元均执行:基于所述控制器的控制,将缓存的至少一个待处理特征图中的第一行数的图像数据加载至当前计算单元,所述当前计算单元对应有所述第一行数;所述块随机存储器,用于缓存所述输入端缓存器加载来的每一行图像数据;针对每一个所述卷积运算单元均执行:基于所述控制器的控制,针对自身缓存的每一行图像数据,向当前卷积运算单元下发有效行数和起始行数;所述卷积运算单元,用于根据下发来的有效行数和起始行数,从所述块随机存储器缓存的全部图像数据中,获取第二行数的图像数据,所述第二行数为自身执行基本卷积运算所需的行数;对所述第二行数的图像数据进行基本卷积运算后发送给所述内部加法器;所述内部加法器,用于对所述卷积运算单元发来的图像数据进行处理后发送给所述加法树;所述加法树,用于基于所述控制器的控制,对每一个所述内部加法器发来的图像数据进行处理后发送给一所述激活池化单元;所述激活池化单元,用于基于所述控制器的控制,对所述加法树发来的图像数据进行处理后发送给所述输出端缓存器。2.根据权利要求1所述的卷积神经网络的基本计算单元,其特征在于,所述激活池化单元包括:激活模块、第一选择器、池化模块、第二选择器、第三选择器;所述第一选择器的一输入端与所述激活模块的输入端相连、另一输入端与所述激活模块的输出端相连、输出端与所述池化模块的输入端相连;所述第二选择器的一输入端与所述池化模块的输入端相连、另一输入端与所述池化模块的输出端相连、输出端与所述第三选择器的第一输入端相连;所述第三选择器的所述第一输入端与所述第二选择器的输出端相连、第二输入端与所述至少一个计算单元中的其他计算单元相连、第三输入端与所述输入端缓存器相连、第一输出端与所述输出端缓存器相连,第二输出端与所述激活模块的输入端相连;所述激活池化单元,用于基于所述控制器的控制,控制所述激活模块和/或所述池化模块是否工作;所述第三选择器,用于基于所述控制器的控制,控制所述第一输入端、所述第二输入端和所述第三输入端中的一个输入端工作,控制所述第一输出端或所述第二输出端工作。3.根据权利要求2所述的卷积神经网络的基本计算单元,其特征在于,所述激活池化单元还包括:偏置量处理单元;所述偏置量处理单元分别与所述加法树和所述激活模块相连;所述第二输出端通过所述偏置量处理单元与所述激活模块的输入端相连。4.根据权利要求1所述的卷积神经网络的基本计算单元,其特征在于,所述当前计算单元包括4个卷积运算单元;所述4个卷积运算单元中任一卷积运算单元执行基本卷积运算所需的行数为3行,步长为1;所述当前计算单元对应的第一行数为16行。5.根据权利要求1所述的卷积神经网络的基本计算单元,其特征在于,所述输入端缓存器,还用于根据公式一、公式二和公式三,确定每一个所述计算单元对应的第一行数,其中,任一所述卷积运算单元执行基本卷积运算时的步长为1;所述公式一包括:所述公式二包括:所述公式三包括:Yi=max{yi}其中,Xij为所述至少一个计算单元中的第i个计算单元中的第j个卷积运算单元执行基本卷积运算所需的行数,ai为所述第i个计算单元对应的预设优化值,ai为整数,m为所述第i个计算单元中的卷积运算单元的个数,xi为所述第i个计算单元对...

【专利技术属性】
技术研发人员:李朋赵鑫鑫姜凯于治楼
申请(专利权)人:济南浪潮高新科技投资发展有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1