深度神经网络的卷积层的硬件实现制造技术

技术编号:21687055 阅读:19 留言:0更新日期:2019-07-24 14:55
本公开涉及深度神经网络的卷积层的硬件实现。提供了深度神经网络DNN的卷积层的硬件实现和用于处理DNN的卷积层的方法,该硬件实现包括多个卷积引擎,其中,以这样的顺序来将输入数据和权重提供给卷积引擎,该顺序允许从存储器读取输入数据和权重以用于在连续周期中由相同卷积引擎执行或在同一周期中由不同卷积引擎执行的至少两个滤波器‑窗口计算。例如,在卷积层的一些硬件实现中,卷积引擎被配置为在每个周期处理相同的权重以及不同的输入数据,然而每个卷积引擎的输入数据在至少两个周期内保持相同,使得卷积引擎在至少两个连续周期中使用相同的输入数据。

Hardware Implementation of Convolution Layer of Deep Neural Network

【技术实现步骤摘要】
深度神经网络的卷积层的硬件实现
本公开涉及神经网络,更具体地,涉及深度神经网络的卷积层的硬件实现。
技术介绍
深度神经网络(DNN)是一种可用于机器学习应用的人工神经网络。特别地,DNN可以用于信号处理应用,包括图像处理和计算机视觉应用。DNN已经实现于功率资源不是重要因素的应用中。尽管如此,DNN还应用于许多不同的
,在这些
中,用于实现DNN的硬件资源使得功耗、处理能力或硅面积受到限制。因此,需要实现被配置为以有效方式(即以在操作时需要更少硅面积或更少处理能力的方式)实现DNN(或其至少一部分)的硬件。此外,DNN可以针对各种不同的应用以多种不同的方式来配置。因此,还需要用于实现DNN的、能够支持各种DNN配置的灵活的硬件。下文描述的实施例仅作为示例提供,并不是作为对解决深度神经网络(或其一部分)的已知硬件实现的任何或所有缺点的实现方式的限制。
技术实现思路
提供本
技术实现思路
以介绍下面在具体实施方式中进一步描述的概念的选择。本
技术实现思路
不用于识别请求保护的主题的关键特征或本质特征,也不用于限制请求保护的主题的范围。本文描述的是用于DNN的卷积层的硬件实现和处理DNN的卷积层的方法,该硬件实现包括多个卷积引擎,其中,以这样的顺序来将输入数据和权重提供给卷积引擎,该顺序允许从存储器读取输入数据和权重以用于在连续周期中由相同卷积引擎执行或在同一周期中由不同卷积引擎执行的至少两个滤波器-窗口计算。例如,在卷积层的一些硬件实现中,卷积引擎被配置为在每个周期处理相同的权重以及不同的输入数据,然而每个卷积引擎的输入数据在至少两个周期内保持相同,使得卷积引擎在至少两个连续周期中使用相同的输入数据。第一方面提供了深度神经网络的卷积层的硬件实现,该硬件实现包括:多个卷积引擎,每个卷积引擎包括硬件逻辑,该硬件逻辑被配置为在多个周期中的每个周期中接收权重集和一组输入数据值集,并对该权重集和该输入数据值集执行乘法累加运算;其中在任何周期中,卷积引擎接收相同的权重集和不同的输入数据值集,并且卷积引擎在至少两个连续周期中接收相同的输入数据值集。第二方面提供了一种向深度神经网络的卷积层的硬件实现的多个卷积引擎提供权重和输入数据值的方法,每个卷积引擎包括硬件逻辑,该硬件逻辑被配置为对该权重集和该输入数据值集执行乘法累加运算。该方法包括在多个周期内向卷积引擎提供多个权重和多个输入数据值,其中在任何周期中,卷积引擎被提供以相同的权重集和不同的输入数据值集,并且卷积引擎在至少两个连续周期中被提供以相同的输入数据值集。第三方面提供了一种深度神经网络的硬件实现,包括第一方面的卷积层的硬件实现。DNN的卷积层的硬件实现可以在集成电路上的硬件中实现。可以提供一种在集成电路制造系统中制造硬件实现的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集配置系统以制造DNN的卷积层的硬件实现。可以提供一种非暂态计算机可读存储介质,其上存储有DNN的卷积层的硬件实现的计算机可读描述,当在集成电路制造系统中处理时,使得集成电路制造系统制造体现DNN的卷积层的硬件实现的集成电路。可以提供一种集成电路制造系统,包括:非暂态计算机可读存储介质,其上存储有DNN的卷积层的硬件实现的计算机可读描述;布局处理系统,其被配置为处理计算机可读描述,以生成体现DNN的卷积层的硬件实现的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造DNN的卷积层的硬件实现。可以提供用于执行本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂态计算机可读存储介质,当该计算机可读指令在计算机系统处被执行时,使得计算机系统执行本文所述的方法。如技术人员易于理解的那样,可以适当地组合上述特征,并且这些特征可以与本文描述的示例的任何方面组合。附图说明将参考附图详细描述示例,其中:图1是示例深度神经网络(DNN)的示意图;图2是DNN中的示例数据的示意图;图3是DNN的卷积层的示例硬件实现的框图;图4是图3的示例卷积引擎的框图;图5是示出重叠窗口的示意图;图6是向多个卷积引擎提供权重和输入数据值的示例方法的流程图;图7是示出在多个周期内被提供给多个卷积引擎的示例权重和输入数据值的图表的示意图;图8是图3的DNN的卷积层的硬件实现被实现于其中的DNN的示例硬件实现的框图;图9是DNN的硬件实现被实现于其中的示例计算机系统的框图;以及图10是用于生成体现本文所述的DNN的硬件实现或DNN的卷积层的硬件实现的集成电路的示例集成电路制造系统的框图。附图示出了各种示例。技术人员将理解,附图中示出的元件边界(例如,框、框组或其他形状)代表边界的一个示例。在一些示例中,可以将一个要素设计为多个要素,或者可以将多个要素设计为一个要素。整个附图中可适当地使用共同的附图标记来表示类似的特征。具体实施方式通过示例给出以下描述,以使本领域技术人员可以做出并使用本专利技术。本专利技术不限于本文描述的实施例,并且针对所公开的实施例的各种修改对于本领域技术人员来说将是易于理解的。仅通过示例方式来描述实施例。深度神经网络(DNN)是一种人工神经网络形式,其包括多个互连层,这些互连层使得DNN能够执行信号处理任务,包括但不限于计算机视觉任务。图1示出了示例DNN100,其包括多个层102-1、102-2、102-3。每个层102-1、102-2、102-3接收输入数据,根据该层处理输入数据以产生输出数据。输出数据作为输入数据提供给另一层,或作为DNN的最终输出数据被输出。例如,在图1的DNN100中,第一层102-1接收针对DNN100的原始输入数据104,并根据第一层102-1处理输入数据以产生输出数据。第一层102-1的输出数据成为第二层102-2的输入数据,第二层102-2根据第二层102-2来处理输入数据以产生输出数据。第二层102-2的输出数据成为第三层102-3的输入数据,第三层102-3根据第三层102-3来处理输入数据以产生输出数据。第三层102-3的输出数据作为DNN的输出数据106被输出。针对层的输入数据所执行的处理取决于层的类型。例如,DNN的每个层可以是多种不同类型中的一种。示例DNN层类型包括但不限于:卷积层、激活层、归一化层、池化层以及完全连接层。对于本领域技术人员易于理解的是,这些是示例性的DNN层类型,而不是穷举列表,并且可能存在其他DNN层类型。卷积层被配置为使用与该层相关联的权重来对输入数据进行卷积处理。具体地,每个卷积层与多个权重w1...w9相关联,这些权重也可以称为滤波器权重或系数。这些权重可以被分组以形成或定义一个或多个滤波器或内核。参考图2,其示出了DNN中使用的数据200的格式的示例。如图2所示,DNN中使用的数据200可以被布置为P个数据平面,其中每个平面具有维度xxy。DNN可以包括一个或多个卷积层,每个卷积层与多个滤波器相关联,每个滤波器包括多个权重。每个滤波器具有维度mxnxP(即每个滤波器包括一组mxnxP个权重w),并且每个滤波器根据如图2所示的在方向s和t(其被称为窗口)上的若干步骤的卷积运算被应用于输入数据。每个滤波器产生一个输出平面。滤波器的数量和每个滤波器的权重数量可以在卷积层之本文档来自技高网...

【技术保护点】
1.一种深度神经网络的卷积层的硬件实现,所述硬件实现包括:多个卷积引擎,每个卷积引擎包括硬件逻辑,所述硬件逻辑被配置为在多个周期中的每个周期中接收权重集和输入数据值集,并且对所述权重集和所述输入数据值集执行乘法累加操作;其中,在任何周期中,所有卷积引擎接收相同的权重集,并且每个卷积引擎从其他卷积引擎接收不同的输入数据值集;以及其中,在至少一个周期中,所述卷积引擎接收在先前周期中接收到的相同的输入数据值集。

【技术特征摘要】
2017.11.03 GB 1718297.31.一种深度神经网络的卷积层的硬件实现,所述硬件实现包括:多个卷积引擎,每个卷积引擎包括硬件逻辑,所述硬件逻辑被配置为在多个周期中的每个周期中接收权重集和输入数据值集,并且对所述权重集和所述输入数据值集执行乘法累加操作;其中,在任何周期中,所有卷积引擎接收相同的权重集,并且每个卷积引擎从其他卷积引擎接收不同的输入数据值集;以及其中,在至少一个周期中,所述卷积引擎接收在先前周期中接收到的相同的输入数据值集。2.如权利要求1所述的硬件实现,还包括系数缓冲器,该系数缓冲器被配置为:存储用于卷积层的多个权重;以及在多个周期中向所述卷积引擎提供所述多个权重,其中在任何周期中,所有卷积引擎都被提供以来自所述多个权重中的相同权重集。3.如权利要求2所述的硬件实现,其中,所述系数缓冲器被配置为以预定顺序向所述卷积引擎提供包括第一权重集和最后一个权重集在内的权重。4.如权利要求3所述的硬件实现,其中,所述系数缓冲器被配置为:一旦其已经向所述卷积引擎提供了所述最后一个权重集,其便在下一个周期再次向所述卷积引擎提供所述第一权重集。5.如权利要求3所述的硬件实现,其中,所述多个权重按照向所述卷积引擎提供权重的顺序被存储在所述系数缓冲器中。6.如任一前述权利要求所述的硬件实现,还包括输入缓冲器,所述输入缓冲器被配置为:存储用于卷积层的多个输入数据值;以及在多个周期内向所述卷积引擎提供所述多个输入数据值,其中,在任何周期中,所述卷积引擎被提供以来自所述多个输入数据值的不同输入数据值集,并且在至少两个连续周期中相同的输入数据值集被提供给所述卷积引擎。7.如权利要求6所述的硬件实现,其中,所述输入缓冲器还被配置为:在第一次向卷积引擎提供输入数据值集之前,从所述输入缓冲器的存储器中获取该输入数据值集。8.如权利要求6所述的硬件实现,其中,所述多个输入数据值表示三维量,并且每个输入数据值集表示该三维量的窗口的全部或部分。9.如权利要求8所述的硬件实现,其中,在周期中被提供给所述卷积引擎的不同的输入数据值集表示水平相邻窗口的全部或部分。10.如权利要求9所述的硬件实现,其中,所述输入缓冲器还被配置为:在第一次向卷积引擎提供输入数据值集之前,从所述输入缓冲器的存储器中获取该输入数据值集;对从存储器中获取的K个最近的输...

【专利技术属性】
技术研发人员:克里斯·马丁大卫·霍夫克利福德·吉布森丹尼尔·巴纳德
申请(专利权)人:畅想科技有限公司
类型:发明
国别省市:英国,GB

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

1