实现卷积神经网络的硬件和非瞬态计算机可读存储介质的制作方法

文档序号:36407544发布日期:2023-12-16 16:02阅读:28来源:国知局
实现卷积神经网络的硬件和非瞬态计算机可读存储介质的制作方法

本申请涉及卷积神经网络的硬件实现,更具体地涉及用于实现卷积神经网络的方法和硬件、制造方法和系统。


背景技术:

1、卷积神经网络(cnn)是可以被用于机器学习应用的一种类型的人工神经网络。特别地,cnn可以被使用在信号处理应用(包括图像处理和计算机视觉应用)中。

2、在其中电力资源不是重要因素的应用中已经实现cnn。尽管如此,cnn已经应用在其中被用于实现cnn的硬件的资源是功率消耗、处理能力或硅面积有限的若干不同的技术领域中。

3、因此,需要实现被配置为以有效的方式(即,以在操作时要求较少的硅面积或较少的处理能力的方式)实现cnn的硬件。而且,对于特定应用的cnn的定义可以随时间变化。例如,附加的训练可以导致cnn变更的定义。因此,还需要用于实现cnn的硬件以适应cnn的改变的要求。


技术实现思路

1、提供该概述以引入以在详细描述中下文进一步描述的简化形式的概念的选择。该概述不旨在标识所主张的主题的关键特征或必要特征,其也不旨在被用于限制所主张的主题的范围。

2、提供了一种卷积神经网络(cnn)的硬件实现中的方法,方法包括:接收包括针对cnn层的权重数据的至少一部分和输入数据的至少一部分的数据的第一子集,并且使用至少一个卷积引擎执行数据的第一子集的卷积以生成第一部分结果;接收包括针对cnn层的权重数据的至少一部分和输入数据的至少一部分的数据的第二子集,并且使用至少一个卷积引擎执行数据的第二子集的卷积以生成第二部分结果;并且将第一部分结果和第二部分结果组合以生成针对cnn的层的卷积数据的至少一部分。

3、数据的第一子集可以包括输入数据的第一部分和权重数据;并且数据的第二子集可以包括输入数据的第二部分和权重数据。输入数据的第二部分可以包括输入数据的第一部分的子集,并且输入数据的第一部分的子集的大小可以基于卷积核的大小。数据的第一子集和数据的第二子集可以各自包括针对特定层的所有权重数据。

4、数据的第一子集可以包括权重数据的第一部分和输入数据;并且数据的第二子集可以包括权重数据的第二部分和输入数据。数据的第一子集和数据的第二子集可以各自包括针对特定层的所有输入重数据。权重数据的第一部分可以包括针对层的、不同于权重数据的第二部分的权重数据的不同部分。将第一部分结果和第二部分结果组合可以包括将第一部分结果和第二部分结果写到存储器。

5、数据的第一子集可以包括权重的第一部分和输入数据;并且数据的第二子集可以包括权重的第二部分和输入数据。将第一部分结果和第二部分结果组合以生成针对cnn的层的卷积数据的至少一部分可以包括:使用至少一个卷积引擎执行权重的第一部分与输入数据的卷积以生成第一部分结果;使用至少一个卷积引擎执行权重的第二部分与输入数据的卷积以生成第二部分结果;将第一部分结果放置在累加器缓冲器中;在累加器中将第一部分结果与第二部分结果组合。权重的第一部分和权重的第二部分可以是相同权重的非重叠部分。

6、数据的第一子集的输入数据和数据的第二子集的输入数据可以包括针对层的所有输入数据。

7、提供了一种卷积神经网络(cnn)的硬件实现,硬件实现包括:接口,被配置为接收包括针对cnn层的权重数据的至少一部分和输入数据的至少一部分的数据的第一子集,并且被配置为接收包括针对cnn层的权重数据的至少一部分和输入数据的至少一部分的数据的第二子集;至少一个卷积引擎被配置为执行数据的第一子集的卷积以生成第一部分结果,并且被配置为执行数据的第二子集的卷积以生成第二部分结果;并且其中硬件实现被配置为将第一部分结果和第二部分结果组合,以生成针对cnn的层的卷积数据的至少一部分。

8、提供了一种用于被配置为实现一个或多个用户定义的激活函数的cnn的可配置的激活模块,激活模块被配置为:接收指定待应用到输入数据的激活函数的一个或多个特性的配置数据;基于接收到的配置数据,将表示激活函数的数据存储在查找表的条目中;接收表示激活函数的输入的输入数据,并且基于接收到的输入的至少一部分,从查找表读取一个或多个条目;并且基于从查找表读取的一个或多个条目,计算表示激活函数的输出的输出值。

9、cnn或用于cnn的激活模块的硬件实现可以被实现在集成电路上的硬件中。可以提供一种在集成电路制造系统中制造cnn或用于cnn的激活模块的硬件实现的方法。可以提供一种集成电路定义数据集,其在集成电路制造系统中被处理时将系统配置为制造cnn或用于cnn的激活模块的硬件实现。可以提供一种已经在其上存储集成电路的计算机可读描述的非瞬态计算机可读存储介质,其被处理时使得布局处理系统生成使用在集成电路制造系统中的电路布局描述,以制造cnn或用于cnn的激活模块的硬件实现。

10、可以提供一种集成电路制造系统,包括:非瞬态计算机可读存储介质,已经在其上存储描述cnn或用于cnn的激活模块的硬件实现的计算机可读集成电路描述;布局处理系统,被配置为处理集成电路描述,以便生成实现cnn或用于cnn的激活模块的硬件实现的集成电路的电路布局描述;和集成电路生成系统,其被配置为根据电路布局描述制造cnn或用于cnn的激活的硬件实现。

11、可以提供用于执行根据任何前述权利要求所述的方法的计算机程序代码。可以提供非瞬态计算机可读存储介质,其已经在其上存储当在计算机系统处执行时使得计算机系统执行根据任何前述权利要求所述的方法的计算机可读指令。

12、如对于技术人员而言将是明显的,以上特征可以适当组合并且可以与本文所描述的示例的方面中的任一个的组合。



技术特征:

1.一种用于实现卷积神经网络cnn的硬件,所述硬件包括:

2.根据权利要求1所述的硬件,其中,所述激活模块被配置为:

3.根据权利要求2所述的硬件,其中,所述配置数据指定以下项中的一项或更多项:所述激活函数的一个或更多个数据点、所述激活函数的一个或更多个特性、以及能用于导出或标识所述激活函数的一个或更多个值。

4.根据权利要求2所述的硬件,其中,表示所述激活函数的数据包括所接收的配置数据。

5.根据权利要求2所述的硬件,其中,所述激活模块使用所述配置数据来标识预存储的激活函数,并且表示所述激活函数的数据表示所标识出的预存储的激活函数。

6.根据权利要求2所述的硬件,其中,(i)所述激活模块被配置为使用所接收的输入数据的至少一部分作为到所述查找表的地址,(ii)所述激活模块被配置为还基于所述输入数据的至少一部分计算所述输出值,和/或(iii)所述激活模块被配置为通过在从所述查找表读取的两个或多个条目之间进行内插来计算所述输出值。

7.根据权利要求1所述的硬件,其中,所述激活模块包括:

8.根据权利要求1所述的硬件,其中,所述激活模块包括:

9.根据权利要求1至8中任一项所述的硬件,其中,所述激活模块、所述标准化模块和所述池模块中的至少一个模块被配置为接收控制信令,所述控制信令将所述至少一个模块配置为旁路模式,在所述旁路模式中,所述激活模块、所述标准化模块和所述池模块中的所述至少一个模块不执行其各自的功能,并且所述数据值简单地穿过所述激活模块、所述标准化模块和所述池模块中的所述至少一个模块而不改变。

10.根据权利要求1至8中任一项所述的硬件,其中,所述存储器接口被配置为经由所述累加缓冲器将数据从所述外部存储器直接传递到所述激活模块。

11.根据权利要求1至8中任一项所述的硬件,所述硬件还包括多个多路复用器,所述多个多路复用器连接到所述多个输入缓冲器中的每一个,每个多路复用器被配置为从所述多个输入缓冲器中的一个输入缓冲器中选择输出,并且将从所选择的输入缓冲器输出的值传递到所述多个卷积引擎中的相应卷积引擎。

12.根据权利要求1至8中任一项所述的硬件,其中:

13.根据权利要求1至8中任一项所述的硬件,其中,所述累加缓冲器连接到所述存储器接口,并且被配置为经由所述存储器接口向所述外部存储器发送数据并从所述外部存储器接收数据。

14.根据权利要求1至8中任一项所述的硬件,其中,所述标准化模块被配置为接收信令,以指示所述标准化模块要执行所述多个不同标准化函数中的哪个函数。

15.根据权利要求1至8中任一项所述的硬件,其中,所述标准化模块被配置为接收由所述标准化模件执行的所述标准化函数的一个或更多个参数,所述一个或更多个参数与所述cnn的一层或更多层有关。

16.根据权利要求1至8中任一项所述的硬件,其中,所述命令信息包括与所述权重数据的大小和/或格式、所述输入数据的大小和格式以及它们在所述外部存储器中的位置有关的信息。

17.根据权利要求1至8中任一项所述的硬件,其中,所述共享缓冲器连接到所述存储器接口,并且所述存储器接口被配置为将存储在所述共享缓冲器中的数据传递到所述外部存储器或所述输入缓冲器控制器。

18.根据权利要求1至8中任一项所述的硬件,其中,所述硬件被实现在集成电路上。

19.根据权利要求1至8中任一项所述的硬件,其中,所述共享缓冲器在所述硬件内部并且不同于所述外部存储器,且/或所述标准化模块不同于所述激活模块。

20.一种非瞬态计算机可读存储介质,在所述非瞬态计算机可读存储介质上存储有集成电路的计算机可读描述,所述计算机可读描述当在集成电路制造系统中被处理时使所述集成电路制造系统制造根据权利要求1至19中任一项所述的硬件。


技术总结
本申请涉及实现卷积神经网络的硬件和非瞬态计算机可读存储介质。一种卷积神经网络(CNN)的硬件实现的方法,方法包括:接收包括针对CNN层的权重数据的至少一部分和输入数据的至少一部分的数据的第一子集,并且使用至少一个卷积引擎执行数据的第一子集的卷积以生成第一部分结果;接收包括针对CNN层的权重数据的至少一部分和输入数据的至少一部分的数据的第二子集,并且使用至少一个卷积引擎执行数据的第二子集的卷积以生成第二部分结果;并且组合第一部分结果和第二部分结果,以生成针对CNN层的卷积数据的至少一部分。

技术研发人员:C·吉布森,J·伊姆伯
受保护的技术使用者:想象技术有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1