CN108133265A - 用于利用相同的处理单元实施不同类型的卷积运算的方法和装置 - Google Patents
用于利用相同的处理单元实施不同类型的卷积运算的方法和装置 Download PDFInfo
- Publication number
- CN108133265A CN108133265A CN201711248920.5A CN201711248920A CN108133265A CN 108133265 A CN108133265 A CN 108133265A CN 201711248920 A CN201711248920 A CN 201711248920A CN 108133265 A CN108133265 A CN 108133265A
- Authority
- CN
- China
- Prior art keywords
- convolution
- cnn
- filter
- implement
- propagating
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 90
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000004422 calculation algorithm Methods 0.000 title abstract description 57
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 291
- 230000004044 response Effects 0.000 claims abstract description 16
- 230000008859 change Effects 0.000 claims abstract description 14
- 230000004048 modification Effects 0.000 claims description 23
- 238000012986 modification Methods 0.000 claims description 23
- 238000001914 filtration Methods 0.000 claims description 16
- 238000000605 extraction Methods 0.000 claims description 13
- 238000004806 packaging method and process Methods 0.000 claims description 11
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 230000001052 transient effect Effects 0.000 claims 1
- 238000013461 design Methods 0.000 description 51
- 230000033228 biological regulation Effects 0.000 description 40
- 238000013507 mapping Methods 0.000 description 27
- 238000005516 engineering process Methods 0.000 description 21
- 238000003491 array Methods 0.000 description 15
- 239000013598 vector Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000014509 gene expression Effects 0.000 description 10
- 230000000712 assembly Effects 0.000 description 8
- 238000000429 assembly Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000003475 lamination Methods 0.000 description 6
- 210000002569 neuron Anatomy 0.000 description 6
- 230000009466 transformation Effects 0.000 description 6
- 241001269238 Data Species 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 5
- 210000004027 cell Anatomy 0.000 description 5
- 238000010606 normalization Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000011049 filling Methods 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 4
- 238000003786 synthesis reaction Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 241000208340 Araliaceae Species 0.000 description 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000009472 formulation Methods 0.000 description 2
- 235000008434 ginseng Nutrition 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000001328 optic nerve Anatomy 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
Abstract
本申请涉及用于利用相同的处理单元实施不同类型的卷积运算的方法和装置,其中用于在目标上实施卷积神经网络(CNN)加速器的方法包括:利用一个或多个处理单元来实施卷积。修改CNN加速器的配置,以便改变由CNN加速器实施的滤波器并且改变输出数据的格式化。所述一个或多个处理单元被利用来响应于输出数据的格式化和滤波器中的改变而实施反卷积和后向传播卷积之一。
Description
相关申请
本申请要求2016年8月25日提交的标题为“A Method and Architecture forComputing Three Convolution Types (Convolution, Deconvolution and ConvolutionBackpropagation) Using a Generic Dot-Product Engine(用于使用通用点积引擎计算三种卷积类型(卷积、反卷积和卷积后向传播)的方法和架构)”的美国临时专利申请号62/379,718的权益和优先权,该申请的全部完整主题内容特此通过引用的方式被明确地全文合并在本文中。本申请还是2016年2月6日提交的标题为“Method and Apparatus forImplementing Layers on a Convolutional Neural Network Accelerator(用于在卷积神经网络加速器上实施各层的方法和装置)”的共同待审美国申请号15/017,597的部分继续申请并且在美国法典第35章第120节下要求其权益,该申请是2015年10月9日提交的标题为“Method and Apparatus for Designing and Implementing a Convolution NeuralNet Accelerator(用于设计和实施卷积神经网络加速器的方法和装置)”的共同待审美国申请号14/879,928的部分继续申请并且在美国法典第35章第120节下要求其权益。美国申请号15/017,597还要求2015年10月7日提交的标题为“Method and Apparatus forDesigning and Implementing Standard and Fully-Connected Convolution Layers ona Convolutional Neural Network Accelerator(用于在卷积神经网络加速器上设计和实施标准并且完全连接的卷积层的方法和装置)”的美国临时专利申请号62/238,598的权益和优先权,该申请的全部完整主题内容特此通过引用的方式被明确地全文合并在本文中。
技术领域
本公开内容的实施例涉及用于在目标设备和硬件加速器上设计用于实施不同类型的卷积的系统的工具。更具体来说,本公开内容的实施例涉及一种用于利用相同的处理单元实施不同类型的卷积运算的方法和装置。
背景技术
随着图像和视频在因特网上变得更加无所不在,产生了针对能够对于各种应用(包括搜索和概括)高效地分析其语义内容的算法的需求。卷积神经网络(CNN)已被证明是用于实施图像辨识、检测和取回的有效工具。CNN可以被扩大规模并且被配置成支持对于学习处理所需要的大的加标签数据集。在这些条件下,已经发现CNN在学习复杂并且鲁棒的图像特征方面是成功的。
CNN是一种前馈人工神经网络,其中各个单独的神经元以使得其对视场中的重叠区段作出响应的方式被拼贴。CNN是受到生物的视神经的行为的启发。CNN利用多层神经元连接处理数据,从而在图像辨识中实现高准确度。多层CNN的发展已导致复杂辨识任务(比如大类别图像分类、自动话音辨识以及其他数据分类/辨识任务)的准确度方面的改进。
单一处理器的计算能力方面的限制导致对于其他计算配置的探索以便满足对于支持CNN的需求。在各个探索领域当中,对于以图形处理单元(GPGPU)、多核处理器、现场可编程门阵列(FPGA)和专用集成电路(ASIC)上的通用计算的形式利用硬件专门化的CNN加速器进行了研究。
发明内容
根据本公开内容的一个实施例,公开了一种用于设计和实施卷积神经网络(CNN)加速器的方法。所述方法利用电子设计自动化(EDA)工具,所述电子设计自动化(EDA)工具响应于CNN加速器的特征以及由用户选择的目标上的可用资源而生成用于CNN加速器的设计,其中所述特征可以包括由用户指定的CNN加速器的特性和参数。所述目标可以包括一种或多种类型的一个或多个目标设备。EDA工具指派目标上的资源以实施CNN加速器,从而获得高性能。举例来说,目标上的资源被指派来实施具有适当尺寸的缓冲器,以便应对将由CNN加速器处理的图像的类型和尺寸。目标上的资源还被指派来实施适当类型和数目的计算单元(比如处理单元),以便支持由CNN加速器应用的层和滤波器的类型。EDA工具还生成定序器单元,所述定序器单元被编程来协调去往适当的计算单元的数据传输,以便对所述计算单元上的计算进行时间多路复用。
根据本公开内容的一个实施例,可以由用户指定一系列特性,以便允许CNN加速器执行多个CNN算法。在该实施例中,在CNN加速器被编程在目标上之后,实施一个或多个可配置状态寄存器(CSR)以便允许用户对目标进行配置,从而支持对于在运行时间执行所述多个CNN算法当中的一个所需要的指定特性。当被实施在现场可编程门阵列(FPGA)上时,CSR有效地允许对于CNN加速器的运行时间配置。这促进了以CNN应用为目标的FPGA覆盖。
根据本公开内容的一个实施例,一种用于在目标上实施CNN加速器的方法包括:识别将在CNN加速器上执行的CNN算法。识别出支持CNN算法的执行的CNN加速器的一种变型。CNN的所述变型可以包括特定数目或类型的卷积层、池化层、滤波器尺寸和/或滤波器系数。目标设备上的CSR可以被设定成支持所期望的变型。当希望在目标设备上执行不同的CNN算法时,可以识别出支持所述不同的CNN算法的CNN加速器的不同变型。目标设备上的CSR可以被设定成支持CNN加速器的所述不同变型。
根据本公开内容的一个实施例,一种用于在目标上实施CNN加速器的方法包括:利用一个或多个处理单元实施标准卷积层。修改CNN加速器的配置以改变CNN加速器上的组件之间的数据流程。所述一个或多个处理单元被利用来响应于数据流程中的改变而实施完全连接层。
根据本公开内容的一个实施例,实施在目标上的CNN加速器包括在第一配置期间协调目标上的组件之间的第一数据流程并且在第二配置期间协调目标上的组件之间的第二数据流程的定序器单元。CNN加速器还包括在第一配置期间实施标准卷积层并且在第二配置期间实施完全连接层的多个处理单元。
根据本公开内容的一个实施例,需要实施卷积层、反卷积层和卷积后向传播层的CNN应用是使用CNN加速器上的相同处理单元来实施的。这样就通过允许在不同运行时间实例期间共享DDR带宽、存储器和逻辑而降低硬件成本。通过以下步骤将反卷积和后向传播卷积层转换成卷积层:从反卷积/后向传播卷积滤波器提取出多个卷积滤波器,利用所述多个卷积滤波器和输入数据实施多项卷积,以及把从所述多项卷积生成的结果进行交织从而生成输出。
根据本公开内容的一个实施例,一种用于在目标上实施CNN加速器的方法包括:利用一个或多个处理单元实施卷积。修改CNN加速器的配置以改变由CNN加速器实施的滤波器并且改变输出数据的格式化。所述一个或多个处理单元被利用来响应于所述滤波器和输出数据的格式化中的改变而实施反卷积和后向传播卷积之一。
根据本公开内容的一个实施例,实施在目标上的CNN加速器包括在第一配置期间协调目标上的组件之间的第一数据流程并且在第二配置期间协调目标上的组件之间的第二数据流程的定序器单元。CNN加速器还包括在第一配置期间实施卷积并且在第二配置期间实施反卷积和后向传播卷积之一的多个处理单元。CNN加速器还包括变换单元,所述变换单元包括:从反卷积/后向传播卷积滤波器生成多个卷积滤波器的卷积滤波器提取单元;以及把通过使用所述多个卷积滤波器在反卷积/后向传播卷积输入数据上实施卷积而生成的卷积结果进行交织从而产生反卷积/后向传播卷积输出数据的交织单元。
附图说明
本公开内容的实施例的特征和优点是作为实例而示出的,并且不意图把本公开内容的实施例的范围限制到所示出的具体实施例。
图1是示出根据本公开内容的一个示例性实施例的用于设计和实施卷积神经网络(CNN)加速器的方法的流程图。
图2是示出根据本公开内容的一个示例性实施例的用于识别CNN加速器的特征的方法的流程图。
图3示出了由本公开内容的一个示例性实施例实施的标准卷积层的一个实例。
图4示出了由本公开内容的一个示例性实施例实施的完全连接层的一个实例。
图5示出了根据本公开内容的一个示例性实施例的用于修改反卷积和卷积后向传播滤波器的方法。
图6A示出了根据本公开内容的一个实施例从反卷积/卷积后向传播滤波器提取出多个滤波器的一个实例。
图6B示出了根据本公开内容的一个实施例反射所提取出的滤波器的一个实例。
图6C示出了根据本公开内容的一个实施例利用所提取出的卷积滤波器实施卷积并且把结果进行交织从而生成反卷积/卷积后向传播输出的一个实例。
图7是示出根据本公开内容的一个实施例的生成用于CNN加速器的设计的方法的流程图。
图8是示出根据本公开内容的一个示例性实施例的编辑用于CNN加速器的设计的方法的流程图。
图9是示出根据本公开内容的一个示例性实施例的用于在目标上配置CNN加速器的方法的流程图。
图10A示出了根据本公开内容的一个示例性实施例的在卷积网络中实施卷积层的示例性CNN。
图10B示出了根据本公开内容的一个示例性实施例的在卷积和反卷积网络中实施卷积和反卷积层全部二者的示例性CNN。
图11A是根据本公开内容的一个示例性实施例的CNN加速器的方块图。
图11B是根据本公开内容的一个示例性实施例的利用变换单元的CNN加速器的方块图。
图12是示出根据本公开内容的一个示例性实施例的处理单元的方块图。
图13是示出根据本公开内容的一个示例性实施例的用于利用一个或多个处理单元实施标准卷积层和完全连接层的方法的流程图。
图14是示出根据本公开内容的一个示例性实施例的用于管理CNN加速器上的数据输入和输出以便利用一个或多个处理单元实施标准卷积层的方法的流程图。
图15是示出根据本公开内容的一个示例性实施例的用于管理CNN加速器上的数据输入和输出以便利用一个或多个处理单元实施完全连接层的方法的流程图。
图16是示出根据本公开内容的一个示例性实施例的变换单元的方块图。
图17是示出根据本公开内容的一个示例性实施例的用于利用处理单元支持多种类型的卷积运算的方法的流程图。
图18示出了根据本公开内容的一个示例性实施例的实施电子设计自动化工具和CNN加速器配置工具的计算机系统的方块图。
图19是根据本公开内容的一个示例性实施例的电子设计自动化工具的方块图。
图20是根据本公开内容的一个示例性实施例的CNN加速器配置工具的方块图。
图21示出了根据本公开内容的一个实施例的示例性目标设备。
具体实施方式
在后面的描述中,出于解释的目的阐述了特定的命名法以便提供对于本公开内容的实施例的透彻理解。本领域技术人员将认识到,可能不需要描述中的具体细节来实践本公开内容的实施例。在其他实例中,以方块图的形式示出了众所周知的电路、设备、规程和程序,以避免不必要地模糊本公开内容的实施例。
图1是示出根据本公开内容的一个示例性实施例的用于设计和实施卷积神经网络(CNN)加速器的方法的流程图。在图1中描述的规程可以由计算机系统上的电子设计自动化(EDA)工具和CNN加速器配置工具实施。所描述的规程还可以与其他工具或系统相组合来实施。在101处,识别用于CNN加速器的设计的特征。根据本公开内容的一个实施例,识别设计的特征包括识别对应于CNN加速器的特性和参数以及在实施CNN加速器的目标上可用的资源。应当认识到,当希望CNN加速器支持多于一个CNN算法时,可以识别多个或一系列特性和参数。举例来说,CNN加速器可以支持多个卷积、反卷积和后向传播卷积层。根据本公开内容的一个实施例,可以在例如OpenCL之类的高层级设计语言或其他设计语言中提供用于CNN加速器的设计的特征。
在102处,生成用于CNN加速器的设计。根据本公开内容的一个实施例,响应于CNN加速器的特征生成用于CNN加速器的设计的架构描述。可以针对实施CNN加速器的目标优化用于CNN加速器的设计。除了响应于在101处描述的CNN加速器的特征生成设计之外,可以添加附加的组件以便支持可能未在101处识别出的特征。举例来说,可以把支持实施在CNN加速器的运行时间期间识别出的附加类型的卷积层的组件添加到所述设计中。根据本公开内容的一个实施例,可以在高层级设计语言或硬件描述语言中生成用于CNN加速器的设计。
在103处,针对目标编辑用于CNN加速器的设计。根据本公开内容的一个实施例,编辑涉及在所述设计的硬件描述语言上实施合成、摆放、布线和定时分析规程。用于CNN加速器的已编辑设计支持一系列的CNN变型。
在104处,在目标上配置CNN加速器。根据本公开内容的一个实施例,使用CNN加速器的已编辑设计对目标进行编程。所述目标还被配置成实施CNN加速器的一种变型以便支持所期望的CNN算法的执行。在运行时间期间,可以应用进一步的配置以便实施CNN加速器的其他变型,从而支持其他CNN算法的执行。
图2是示出根据本公开内容的一个实施例的识别用于CNN加速器的设计特征的方法的流程图。在图2中描述的规程可以被用来实施图1中的规程101,并且可以由执行在计算机系统上的EDA工具实施。在201处,识别CNN加速器的特性。根据本公开内容的一个实施例,识别对应于CNN加速器的特性可以包括识别希望CNN加速器支持的一个或多个CNN算法的特性。CNN算法的特性可以包括例如卷积(标准卷积)和噪声滤波层之类的层级的数目和序列。噪声滤波层例如可以包括池化、归一化和修正线性(ReLU)层。CNN算法中的每一层可以包括一个或多个滤波器、步幅和其他参数。CNN算法的特性还可以包括滤波器的尺寸和系数,以及将要处理的图像的尺寸、步幅和填充。根据本公开内容的一个实施例,图像的步幅对应于在实施卷积时可以在输入中被跳过的像素的数目,并且可以被用来调节输出结果的数目。图像的填充涉及添加到图像的周界的数值,并且可以被用来匹配输入和输出图像。应当认识到,还可以识别其他特性。
根据本公开内容的一个实施例,可以识别将由CNN加速器实施的多种不同类型的卷积规程。举例来说,除了卷积之外,还可以识别反卷积和后向传播卷积。当识别出反卷积和后向传播卷积规程时,修改被用于反卷积和后向传播层的滤波器,以便允许CNN加速器利用被用于实施卷积的硬件来实施反卷积和后向传播。
图3示出了由本公开内容的一个示例性实施例实施的标准卷积层的一个实例。所述标准卷积层可以是参照图2描述的在201处识别出的其中一层。标准卷积层接收来自输入特征映射图310的输入特征。标准卷积层还接收通过卷积层的训练而生成的系数321-323的集合。系数321-323应用公式化用于卷积层的滤波器的权重。标准卷积层实施定义在输入特征310内的区段330与系数321-323之间的3维点积。每一项卷积运算的结果是输出平面341-343内的相同的(x,y)水平和垂直坐标处的输出。通过在不同的特征区段上应用相同的系数集合,在每一个输出平面341-343上产生不同的(x,y)输出。因此,为了产生整个(x,y)输出平面,标准卷积层在应用相同的系数321-323的集合的同时接收不同输入特征的流。根据本公开内容的一个实施例,可以通过下面的关系式来表示由kxkxD输入区段330上的单一标准卷积生成的单一(x,y)输出。
在前面的关系式中,D表示输入深度,并且k表示输入特征映射图中的一个区段的高度和宽度。不同的kxkxD系数数据被用来计算每一个卷积层的每一个(x,y)输出平面。因此,举例来说,如果一个卷积层具有H个输出平面,则对于该卷积层总共需要HxkxkxD的系数数据。但是在处理不同的图像时,相同的HxkxkxD系数数据被使用在相同的卷积层中。
图4示出了由本公开内容的一个示例性实施例实施的完全连接层的一个实例。所述完全连接层接收表示来自输入特征映射图的所有特征数据的输入特征410。完全连接层还接收通过所述完全连接层的训练而生成的系数421-423的集合。系数421-423应用公式化用于完全连接层的滤波器的权重。完全连接层取得输入特征410与系数421-423的集合之间的1维点积。所述运算的结果是形成输出特征映射图的输出431-433。如果输出尺寸是Z并且输入尺寸是N,则系数的总尺寸是ZxN,也就是说系数数据的总尺寸大于特征的尺寸。因此,为了计算整个输出特征映射图,完全连接层在应用相同图像的相同输入特征410的同时接收不同系数的流。根据本公开内容的一个实施例,可以通过下面的关系式来表示单一输出z。
在前面的关系式中,N表示输入特征映射图的尺寸并且z表示所计算的输出特征的索引,其中输出特征映射图的总尺寸是Z。不同的系数数据被用来计算不同的完全连接层的输出特征。但是在处理不同的图像时,相同的ZxN系数数据被使用在相同的完全连接层中。
回到图2,在202处,识别CNN加速器的参数。根据本公开内容的一个实施例,识别对应于CNN加速器的参数可以包括识别对应于希望CNN加速器支持的一个或多个CNN算法的参数。CNN算法的参数可以包括将对于所识别出的每一层实例化的处理单元的数目,以及将对于内核的每一个周期执行的乘法的数目。应当认识到,还可以识别其他参数。
在203处,识别在将要实施CNN加速器的目标上可用的资源。根据本公开内容的一个实施例,所述目标可以包括一种或多种目标设备类型的一个或多个目标设备。所识别的资源可以包括目标设备上的存储器块、数字信号处理器(DSP)以及其他组件和处理单元的数目和类型。根据本公开内容的一个实施例,可以从用户所提供的输入或者从其他来源识别CNN的特征。
图5示出了根据本公开内容的一个示例性实施例的用于修改反卷积和卷积后向传播滤波器的方法。图5中示出的方法可以被实施在图2中的规程201处,以便允许CNN加速器利用被用于实施卷积的硬件还实施反卷积和卷积后向传播。在501处,对卷积后向传播滤波器进行重包装。根据本公开内容的一个实施例,对卷积后向传播滤波器进行重包装涉及通过从每一个卷积滤波器取得平面i而产生深度为K的第i个卷积后向传播滤波器。具有K个深度为C的滤波器的卷积后向传播层被变换成具有C个深度为K的滤波器的卷积后向传播层。应当认识到,仅在卷积后向传播滤波器上实施规程501。
在502处,从反卷积滤波器或者来自501的重包装卷积后向传播滤波器提取出多个卷积滤波器。根据本公开内容的一个实施例,所述多个卷积滤波器是基于步幅提取出的更小的滤波器。这可以通过把原始滤波器划分成(步幅)x(步幅)x(深度尺寸)块而实现,以便从在每一个块中处于相同位置的所有的杆(stick)产生新的滤波器。根据本公开内容的一个实施例,杆指的是滤波器数值的1x1x深度尺寸杆,所述滤波器数值从原始反卷积滤波器的每一个(步幅)x(步幅)x(深度尺寸)块被提取出,并且被合在一起形成多个用于卷积的滤波器。
图6A示出了步幅为2的二维滤波器的滤波器提取的一个实例。滤波器600是原始滤波器,其可以是反卷积滤波器或者重包装卷积后向传播滤波器。如图所示,从原始4x4滤波器中提取出多个2x2提取滤波器611-614。
回到图5,在503处,在x和y轴中反射每一个提取滤波器611-614中的数值。
图6B示出了根据本公开内容的一个实施例反射提取滤波器611-614的一个实例。如图所示,所述反射生成多个卷积滤波器611’-614’。
图6C示出了如何可以把所述多个卷积滤波器611’-614’与已被填充的反卷积/卷积后向传播输入数据进行卷积。可以把结果进行交织,从而形成反卷积/卷积后向传播输出。
图7是示出根据本公开内容的一个实施例的生成用于CNN加速器的设计的方法的流程图。在图7中描述的规程可以被用来实施图1中的规程102,并且可以由执行在计算机系统上的EDA工具实施。在701处,CNN加速器上的缓冲器被指派适当的尺寸,以便支持将由CNN加速器处理的图像的尺寸。根据本公开内容的一个实施例,用于CNN加速器架构的设计被结构化,从而使得对于每一个缓冲器仅有一个读取端口和一个写入端口。这样就确保不需要仲裁以在缓冲器中存取数据的高效的实现方式。根据一个实施例,支持双缓冲以便允许在缓冲器中的不同位置处读取来自先前一级的结果的同时写入来自一个卷积级的新的中间结果。
在702处,生成计算单元以便支持将由CNN加速器实施的CNN算法。根据本公开内容的一个实施例,所述计算单元包括实施卷积和噪声滤波的内核。可以生成计算单元以便利用在实施CNN加速器的目标上可用的资源最大化性能。可以利用的目标上的可用资源可以包括DSP块、存储器块、移位寄存器以及加法器。在一个实施例中,由内核实施的点积计算被组织成利用由目标上的可重配置DSP块支持的矢量模式。在另一个实施例中,各个池化层利用目标上可用的移位寄存器资源。
在703处,生成定序器单元。所述定序器单元协调在适当的时间向CNN加速器上的适当处理单元传送数据,以便对所述处理单元上的计算进行时间多路复用。根据本公开内容的一个实施例,定序器单元被编程来实施对于支持由CNN加速器实施的算法所需要的协调。可以使用目标设备上可用的逻辑阵列块、寄存器以及/或者硬处理单元或软处理单元来生成定序器单元。根据本公开内容的一个实施例,当将由CNNN加速器实施反卷积和后向传播卷积运算并且预先识别出反卷积和后向传播卷积层的特性时,定序器单元可以被设计并且配置成对处理单元进行编程,从而使用比如在图5中描述的技术来实施预先计算的滤波器。定序器单元还可以操作来协调输入数据的填充和结果的交织,从而生成适当的输出数据。
在704处,生成变换单元。根据本公开内容的一个实施例,当在CNN加速器的设计期间没有预先识别出反卷积和卷积后向传播层时,所述变换单元允许利用所述处理单元来实施反卷积和卷积后向传播单元。变换单元操作来实施图5中所描述的技术,以便对卷积后向传播滤波器进行重包装,从重包装卷积后向传播滤波器或反卷积滤波器提取出卷积滤波器,并且在提取滤波器上反射数值从而生成卷积滤波器。变换单元还可以操作来填充输入数据并且交织结果,从而生成适当的输出数据。
在705处,生成设计的描述。根据本公开内容的一个实施例,设计的描述可以采用硬件描述语言(HDL)格式或其他格式。
图8是示出根据本公开内容的一个示例性实施例的编辑用于目标上的CNN加速器的设计的方法的流程图。所述目标可以是一个或多个现场可编程门阵列(FPGA)、专用集成电路(ASIC)、结构化ASIC或者其他可编程设备。图8中描述的规程被称作编辑流程。所述规程可以被用来实施图1中的规程103,并且可以由执行在计算机系统上的EDA工具实施。
在801处,合成用于CNN加速器的设计。合成包括生成将由目标实施的系统的逻辑设计。根据本公开内容的一个实施例,合成从HDL设计定义生成系统的优化逻辑表示。系统的优化逻辑表示可以包括具有对于系统所需要的最小化数目的功能块(比如逻辑门、逻辑单元和寄存器)的表示。合成还包括对所述优化逻辑表示进行映射。映射包括确定如何利用目标上可用的各种类型或类别的资源实施所述优化逻辑表示中的逻辑门和逻辑单元。目标上可用的资源可以被称作“单元格(cell)”或“组件”,并且可以包括逻辑阵列块、寄存器、存储器、DSP块、输入-输出单元以及其他组件。根据本公开内容的一个实施例,从映射生成网表。该网表可以是从HDL生成的优化技术映射网表。
在802处,对所述系统进行摆放。根据本公开内容的一个实施例,摆放涉及把技术映射的逻辑系统设计摆放在目标上。摆放包括把所述系统装配在目标上,这是通过确定目标上的哪些特定资源被指派到在合成期间确定的技术映射网表并且由所述技术映射网表实施。摆放可以包括聚类,其涉及把逻辑单元分组在一起从而形成存在于目标上的逻辑聚类。
在803处,对摆放出的设计进行布线。在布线期间,分配目标上的布线资源,以便提供目标设备上的逻辑门、逻辑单元和其他组件之间的互连。还可以在摆放出的逻辑设计上实施可布线性优化。根据本公开内容的一个实施例,可布线性优化的目标是减少被用来连接摆放出的逻辑设计中的组件的连线的数量。可布线性优化可以包括实施扇出分割、逻辑复制、逻辑重布线或者其他规程。应当认识到,可以在摆放出的逻辑设计上实施一个或多个所述规程。
在804处,在所述系统的设计上实施定时分析。根据本公开内容的一个实施例,所述定时分析确定是否满足系统的定时约束。根据本公开内容的一个实施例,定时分析建立对应于系统中的每一个路径的长度以及对应于系统中的每一个路径的裕量(slack)。所述裕量可以被定义成在它变得严重之前可以添加到路径上的延迟的数量,或者对于信号到达所需的时间减去信号到达的实际时间。
在805处,实施组装。所述组装规程涉及创建配置文件,所述配置文件包括由在801-804处描述的规程确定的信息。所述配置文件可以是比特流,所述比特流可以被用来对目标进行编程以便实施CNN加速器。通过对目标进行编程,将目标上的可编程资源物理地变换成CNN加速器的设计。
图9是示出根据本公开内容的一个示例性实施例的用于在目标上配置CNN加速器的方法的流程图。图9中示出的规程可以被用来实施图1中的规程104,并且可以由计算机系统上的CNN加速器配置工具实施。在901处,对目标进行编程以便实施CNN加速器。根据本公开内容的一个实施例,对目标进行编程涉及利用配置文件对一个或多个目标设备进行编程,所述配置文件把所述一个或多个目标设备物理地变换成CNN加速器的设计。
在902处,识别将由CNN加速器执行的CNN算法。根据本公开内容的一个实施例,可以从用户输入或者从另一个来源识别将要执行的CNN算法。
在903处,识别支持将要执行CNN算法的CNN加速器的适当变型。根据本公开内容的一个实施例,可以从用户输入或者从另一个来源识别CNN加速器的适当变型。
在904处,设定一个或多个可配置状态寄存器以便支持CNN加速器的所述变型。根据本公开内容的一个实施例,通过设定可配置状态寄存器可以在CNN加速器上添加或减去一个卷积层,添加或减去一个或多个噪声滤波层,或者改变滤波器的尺寸。
在905处,确定是否将由CNN加速器执行新的CNN算法。根据本公开内容的一个实施例,可以响应于用户输入作出所述确定。如果确定将由CNN加速器执行新的CNN算法,则控制继续到902。如果确定将不会由CNN加速器执行新的CNN算法,则控制返回到905。
图1-2、5和7-9是示出本公开内容的实施例的流程图。在这些附图中描述的规程可以由EDA工具和CNN加速器配置工具实施,所述EDA工具和CNN加速器配置工具由一个或多个计算机系统实施。所示出的一些技术可以被顺序地、并行地或者按照不同于所描述的并且所描述的规程可以被重复的顺序实施。应当认识到,并不需要实施所描述的所有技术,可以添加附加的技术,并且可以用其他技术替换所示出的一些技术。
图10A示出了根据本公开内容的一个示例性实施例的在卷积网络中实施卷积层的示例性CNN 1000的概念视图。CNN 1000包括多层,其中每一层通过可微函数把一个激活体积(volume of activation)变换到另一个体积。CNN 1000包括五个卷积层1011-1015。卷积层计算连接到输入中的各个局部区段的神经元的输出。卷积层计算其系数(权重)与其在输入体积中所连接到的区段之间的点积。根据本公开内容的一个实施例,每一个卷积层1011-1015可以实施参照图3中描述的标准卷积层所描述的运算。
CNN 1000包括三个最大池化层1021-1023。池化层实施沿着空间维度的下采样操作。池化层通过在图像的一个区段上计算特定特征的最大值或平均值而减小方差。这样就确保即使当图像特征具有较小的平移时仍将获得相同的结果。这一操作可以被用于对象分类和检测。
CNN 1000包括三个完全连接层1031-1033。完全连接层1031-1033实施高层级推理。完全连接层1031-1033取得来自先前一层的所有神经元,并且将所述神经元连接到其层中的每一个神经元。根据本公开内容的一个实施例,每一个完全连接层1031-1033可以实施参照图4中描述的完全连接层所描述的运算。
应当认识到,CNN可以包括其他层。举例来说,一个或多个ReLU层可以被用来应用以元素为单位的激活函数,比如max(0,x)。ReLU层在不影响卷积层的感受域(receptivefield)的情况下增大判定函数和总体CNN的非线性属性。
根据本公开内容的一个实施例,后向传播涉及取得对应于输入的目标输出和实际输出之间的差异,并且利用重包装卷积滤波器将该差异向后传播经过CNN。在对滤波器进行重包装之后,后向传播卷积运算的其余部分与反卷积完全相同。
图10B示出了根据本公开内容的一个示例性实施例的在卷积网络1060和反卷积网络1070中实施卷积层1061-1065和反卷积层1071-1075全部二者的示例性卷积神经网络1050。反卷积是在被用于语义分割的完全卷积神经网络中实施的运算。对于给定的图像,可以使用语义分割来辨识不同区域中的对象。在反卷积网络1070中示出的反卷积层1071-1075与卷积层1061-1065相反。
图11是根据本公开内容的一个实施例的可以被用来实施CNN的示例性CNN加速器1100的方块图。CNN加速器1100允许高效地计算卷积层和其他层的前向传播。根据本公开内容的一个实施例,CNN加速器1100还允许高效地计算反卷积层和卷积后向传播层。CNN加速器1100接受输入图像(特征映射图),并且可以相继地应用多个卷积层和其他层。
输入图像像素和/或其他输入被传送到处理单元(PE)阵列1101-1104,所述PE阵列1101-1104可以在卷积规程中实施独立点积运算。PE阵列1101表示第一个PE阵列,并且PE阵列1104表示第n个PE阵列,其中n可以被缩放到任意数字。根据本公开内容的一个实施例,每一个PE阵列包括支持例如卷积层、ReLU层、归一化层和池化层之类的各层的硬件组件。
定序器单元1120安排去往每一个PE阵列1101-1104、每一个PE阵列1101-1104中的内核以及每一个内核中的组件的数据的定序、寻址和递送。定序器单元1120协调去往适当的PE阵列1101-1104的数据传送,以便对PE阵列1101-1104上的计算进行时间多路复用。来自PE阵列1101-1104的累加结果可以被传送到缓冲器1151-1154中的一个缓冲器,所述缓冲器把所计算出的输出层传送回到PE阵列1101-1104中的内核和组件,以用于下一轮的层计算。缓冲器1151-1154驻留在实施CNN加速器1100的目标设备上,并且可以被称作芯片上缓冲器。
CNN加速器1100包括可配置状态寄存器(CSR)1160。CSR 1160可以由用户在运行时间期间编程,以便修改CNN加速器1100的各个方面。举例来说,CSR 1160可以被设定成添加或减去由CNN加速器1100使用的一定数目的卷积层,添加或减去由CNN加速器1100使用的一个或多个池化层、RuLU层或其他层,以及/或者改变由CNN加速器1100支持的滤波器的尺寸或其他属性。CSR 1160可以耦合到PE阵列1101-1104的每一个组件。
根据本公开内容的一个实施例,每一个PE阵列1101-1104包括:支持卷积层的第一内核1111-1114,支持ReLU层的第二内核1121-1124,支持归一化层的第三内核1131-1134,以及支持池化层的第四内核1141-1144。第四内核1141-1144的输出被传送到缓冲器1151-1154,并且可以从该处被反馈到第一内核1111-1114中以用于下一个卷积级。根据本公开内容的一个实施例,单一内核可以支持归一化层。在该实施例中,所述单一归一化内核将被连接到支持ReLU层的内核1121-1124。应当认识到,每一个PE阵列1101-1104可以包括实施除了图11中示出的以外的其他层,比如完全连接层。根据本公开内容的一个实施例,第一内核1111-1114可以被用来实施卷积层和完全连接层全部二者。
虽然缓冲器1151-1154被示出为连接到PE阵列1101-1104中的第四内核1141-1144,但是应当认识到,缓冲器1151-1154可以直接连接到PE阵列1101-1104中的任何内核。根据本公开内容的一个实施例,PE阵列1101-1104中的第一内核1111-1114直接连接到缓冲器1151-1154,并且可以把数据存储在缓冲器1151-1154中而无需把数据路由经过任何其他内核。
图11B是根据本公开内容的一个替换实施例的可以被用来实施CNN的示例性CNN加速器1180的方块图。CNN加速器1180包括在实施类似功能的CNN加速器1170中找到的几个组件。CNN加速器1180包括变换单元1170,所述变换单元1170允许CNN加速器1180利用PE阵列1101-1104来支持反卷积和卷积后向传播运算。
根据本公开内容的一个实施例,变换单元1180可以接收未经处理的滤波器数据,所述未经处理的滤波器数据可以描述反卷积滤波器或卷积后向传播滤波器。变换单元1180可以把所述未经处理的滤波器数据变换成描述一个或多个卷积滤波器的经过变换的滤波器数据,所述一个或多个卷积滤波器可以替代所述反卷积滤波器或卷积后向传播滤波器被用来实施反卷积或卷积后向传播。所述经过变换的滤波器数据可以被传送到PE阵列1101-1104以便对PE阵列1101-1104进行编程,从而实施所述一个或多个卷积滤波器。
根据本公开内容的一个实施例,变换单元1180可以接收来自PE阵列1101-1104的未经处理的处理单元输出数据。当通过在用于反卷积或卷积后向传播运算的输入数据上实施卷积而生成未经处理的处理单元输出数据时,变换单元1180可以通过实施交织把所述未经处理的处理单元输出数据变换成经过变换的输出数据。应当认识到,变换单元还可以通过按照指定的方式填充对应于反卷积或卷积后向传播运算的未经处理的输入数据来准备所述未经处理的输入数据。
图12是示出根据本公开内容的一个示例性实施例的示例性处理单元1200的方块图。处理单元1200可以被用来实施在图11A和11B中示出的支持卷积层的第一内核1111-1114中的任一个。应当认识到,处理单元1200还可以被用来支持完全连接层。根据本公开内容的一个实施例,处理单元1200包括用于存储再循环的重复数据的高速缓存1210。高速缓存1210可以使用目标设备上的存储器块来实施。处理单元1200包括每一个时钟周期计算N次浮点数点积的点积单元1220。根据本公开内容的一个实施例,N在202处被配置。点积单元1220接收流送的非重复数据和再循环的重复数据。点积单元1220可以使用目标上的一个或多个DSP块来实施。处理单元1200包括累加器单元1230。累加器单元1230累加点积结果以作为部分和,直到整个计算完成为止。累加器单元1230可以使用逻辑阵列块来实施。
一个或多个处理单元可以与芯片外存储器接口、芯片上缓冲器和控制逻辑一起被使用来把数据路由进出所述一个或多个处理单元,以便支持由多种算法实施的计算。这些计算包括矩阵乘法以及1D/2D/3D卷积。一个或多个处理单元还可以被用来在不同的时刻实施标准卷积层和完全连接层全部二者。可以调节处理单元的数目及其配置,以便匹配CNN算法的性能和资源需求。
针对处理单元1200的第一输入可以被用来流送进入非重复数据。针对处理单元1200的第二输入被用来流送进入被多于一次使用的重复数据。非重复数据可以被存储在芯片上缓冲器中,并且被直接流送进入到点积单元1220中。重复数据可以从外部存储器读取,并且被存储在高速缓存1210中。可以利用高速缓存1210以便利用重复数据的时间局部性。
在使用一个或多个处理单元实施标准卷积层时,特征映射图数据被作为非重复数据对待并且被存储在芯片上缓冲器1151-1154中。一个卷积层的输出被流送到下一个卷积层中。每一个处理单元对于每一个周期接收属于相同图像的相同流送特征数据,以便计算不同输出平面中的相同(x,y)输出坐标处的输出。系数数据被作为重复数据对待,这是因为相同的系数集合被用来在相同的(x,y)输出平面中计算不同的输出特征映射图。系数数据被读取到处理单元1200的高速缓存1210中。不同的高速缓存存储对于处理不同输出平面所需要的不同系数数据。系数数据可以从外部存储器被读取到高速缓存1210中,但是不被写回。通过利用高速缓存1210减少了对于外部存储器的所需存取。
在使用一个或多个处理单元实施完全连接层时,系数数据被作为非重复数据对待,并且被存储在芯片上缓冲器1151-1154中。系数数据被作为非重复数据对待是因为不同的系数数据集合被用来计算每一幅图像的不同输出特征。系数数据的集合被从外部存储器读取一次,被存储在芯片上缓冲器上,并且被流送到处理单元中。或者,系数数据还可以从DDR直接被流送,而无需被存储在芯片上缓冲器上。使用分批模式计算完全连接层;一定数目的图像被同时处理,其中每一个处理单元对于不同的图像应用相同的完全连接层。由于相同的系数数据被用于不同的图像,因此每一个处理单元每个周期接收相同的系数数据,以便应用到属于不同图像的不同特征数据,并且计算不同图像的不同输出特征。特征数据被作为重复数据对待。输入特征被从外部存储器读取到高速缓存1210中。不同处理单元中的高速缓存存储对应于不同图像的特征数据。输入特征数据被作为重复数据对待是因为相同的输入特征数据被用来计算相同图像的不同输出特征。所计算出的最终输出特征映射图被存储在外部存储器中。
图13是示出根据本公开内容的一个示例性实施例的用于利用一个或多个处理单元来实施标准卷积层和完全连接层的方法的流程图。图13中示出的方法可以由定序器单元(比如图11中示出的定序器单元1120)实施。在1301处,识别将在CNN加速器上实施的一层。根据本公开内容的一个实施例,可以从CNN加速器的特性以及跟踪其中正由CNN加速器处理数据的一级来识别将要实施的层。
在1302处,确定将要实施的该层是否为标准卷积层。如果将要实施的该层是标准卷积层,则控制继续到1303。如果将要实施的该层不是标准卷积层,则控制继续到1304。
在1303处,协调数据流程以便实施标准卷积层。被协调的数据流程包括去往和来自驻留在CNN加速器上以及驻留在CNN加速器外部的一个或多个处理单元和组件的数据输入和输出。
在1304处,协调数据流程以便实施完全连接层。被协调的数据流程包括去往和来自驻留在CNN加速器上以及驻留在CNN加速器外部的一个或多个处理单元和组件的数据输入和输出。应当认识到,可以重复图13中示出的规程,从而在规程1303或1304完成之后使得控制返回到规程1301。
图14是示出根据本公开内容的一个示例性实施例的用于管理CNN加速器上的数据输入和输出以便利用一个或多个处理单元来实施标准卷积层的方法的流程图。图14中描述的方法可以被用来实施图13中示出的规程1303。在1401处,输入特征映射图被存储在芯片上缓冲器上。
在1402处,来自输入特征映射图的数据被从芯片上缓冲器流送到处理单元中。
在1403处,系数数据被存储在处理单元的高速缓存中。被流送到处理单元中的输入特征映射图以及被存储在处理单元的高速缓存中的系数数据可以由处理单元按照参照图3所描述的方式来处理,从而生成输出特征映射图。
在1404处,确定当前的标准卷积层是否为将被实施来处理特征映射图的最后一个标准层。如果当前的标准卷积层不是最后一个将被实施的标准卷积层,则控制继续到1405。如果当前的标准卷积层是最后一个将被实施的标准层,则控制继续到1406。
在1405处,所生成的输出特征映射图被存储在芯片上缓冲器中。控制返回到1402。
在1406处,所生成的输出特征映射图被存储在外部存储器中。所述外部存储器可以驻留在实施CNN加速器的目标的外部。控制继续到1407,其中所述规程终止。
图15是根据本公开内容的一个示例性实施例的用于管理CNN加速器上的数据输入和输出以便利用一个或多个处理单元来实施完全连接层的方法的流程图。图15中描述的方法可以被用来实施图13中示出的规程1304。在1501处,输入特征映射图被存储在处理单元的高速缓存中。
在1502处,系数数据被存储在芯片上缓冲器上。
在1503处,系数数据被从芯片上缓冲器流送到处理单元中。存储在处理单元的高速缓存中的输入特征映射图以及从芯片上缓冲器流送的系数数据可以由处理单元按照参照图4所描述的方式来处理,从而生成输出特征映射图。
在1504处,确定当前的完全连接层是否为将被实施来处理特征映射图的最后一个完全连接层。如果当前的完全连接层不是最后一个将被实施的完全连接层,则控制继续到1505。如果当前的完全连接层是最后一个将被实施的完全连接层,则控制继续到1506。
在1505处,所生成的输出特征映射图被存储在高速缓存中。控制返回到1502。
在1506处,所生成的输出特征映射图被存储在外部存储器中。所述外部存储器可以驻留在实施CNN加速器的目标的外部。控制继续到1507,其中所述规程终止。
图13-15是示出本公开内容的实施例的流程图。在这些附图中描述的规程可以由定序器单元(所述定序器单元由CNN加速器实施)实施,并且可以被用来按照参照图7的703所描述的那样对定序器单元进行编程。所示出的一些技术可以被顺序地、并行地或者按照不同于所描述的并且所描述的规程可以被重复的顺序实施。应当认识到,并不需要实施所描述的所有技术,可以添加附加的技术,并且可以用其他技术替换所示出的一些技术。
图16是示出根据本公开内容的一个示例性实施例的变换单元1600的方块图。变换单元1600可以被用来实施图11B中示出的变换单元1180。变换单元1600包括根据将要实施的卷积运算的类型操作来控制选择器1611-1613的变换控制器单元1610。
变换单元1600包括滤波器读取器(FR)单元1621。滤波器读取器单元1621接收描述将被使用在卷积运算中的滤波器的未经处理的滤波器数据。所述未经处理的滤波器数据可以描述卷积滤波器、反卷积滤波器或者卷积传播滤波器。
变换单元1600包括滤波器重包装单元1622。滤波器重包装单元1622接收未经处理的滤波器数据,并且实施重包装规程。根据本公开内容的一个实施例,重包装涉及通过从每一个卷积滤波器取得平面i而产生深度为K的第i个后向传播滤波器。变量C可以被定义成针对卷积层的输入的深度。变量K可以被定义成卷积层的输出的深度。根据本公开内容的一个实施例,这一规程产生C个后向传播滤波器。
选择器1611接收作为来自滤波器重包装单元1622的输出的重包装滤波器以及来自滤波器读取器单元1621的原始滤波器。如果变换控制器单元1610确定将要实施卷积后向传播运算并且由滤波器读取器单元1621接收到的未经处理的滤波器数据对应于卷积后向传播滤波器,则选择器1611响应于来自变换控制器单元1620的选择信号而选择重包装滤波器。如果变换控制器单元1610确定将要实施反卷积运算并且由滤波器读取器单元1621接收到的未经处理的滤波器数据对应于反卷积滤波器,则选择器1611响应于来自变换控制器单元1620的选择信号而选择原始滤波器。如果变换控制器单元1610确定将要实施卷积运算并且由滤波器读取器单元1621接收到的未经处理的滤波器数据对应于卷积滤波器,则可以由选择器1611选择任一个滤波器。
变换单元1600包括卷积滤波器提取(CFE)单元1623。卷积滤波器提取单元1623从来自选择器1611的滤波器输出提取出多个卷积滤波器。卷积滤波器提取单元1623基于步幅提取出更小的卷积滤波器。
选择器1612接收来自卷积滤波器提取单元1623的所提取出的卷积滤波器以及来自滤波器读取器单元1621的原始滤波器。如果变换控制器单元1610确定将要实施反卷积或卷积后向传播运算,则选择器1612响应于来自变换控制器单元1610的选择信号而选择将要输出的所提取出的卷积滤波器。如果变换控制器单元1610确定将要实施卷积运算,则选择器1612响应于来自变换控制器单元1610的选择信号而选择将输出的原始滤波器。由选择器1612输出的经过变换的滤波器数据可以被用来配置处理单元实施适当的滤波器。
变换单元1600包括接收未经处理的处理器单元输出数据的交织输出写入器(IOW)单元1632和非交织输出写入器(NIOW)单元1631。所述未经处理的处理器输出数据可以包括通过实施卷积而生成的结果。交织输出写入器单元1632把由处理单元生成的结果进行交织。
选择器1613接收来自处理单元的结果以及来自交织输出写入器单元1632的交织结果。如果将要实施卷积运算,则选择器1613选择来自处理单元的结果。如果将要实施反卷积或卷积后向传播运算,则选择器1613选择来自交织输出写入器单元1632的结果。
图17是示出根据本公开内容的一个示例性实施例的用于利用处理单元支持多种类型的卷积运算的方法的流程图。图17中示出的方法可以部分地由变换单元(比如在图11B和图16中示出的变换单元)实施。在1701处,确定是否将要实施卷积运算。根据本公开内容的一个实施例,所述确定可以由变换控制器单元响应于由定序器单元、用户提供的信息、或者在将要处理的数据中或者从其他信息作出。如果确定将要实施卷积运算,则控制继续到1702。如果确定将要实施除了卷积运算之外的其他运算,则控制继续到1703。
在1702处,与运算相关联的滤波器被传送到处理单元以用于卷积。与运算相关联的滤波器未被修改。
在1703处,确定是否将要实施反卷积运算。根据本公开内容的一个实施例,所述确定可以由变换控制器单元响应于由定序器单元、用户提供的信息、或者在将要处理的数据中或者从其他信息作出。如果确定将要实施除了反卷积运算之外的其他运算,则控制继续到1704。如果确定将要实施反卷积运算,则控制继续到1705。
在1704处,与运算相关联的滤波器被重包装。控制继续到1705。
在1705处,从与来自1703的运算相关联的滤波器或者来自1704的重包装滤波器提取出卷积滤波器。应当认识到,从反卷积滤波器或重包装滤波器提取出卷积滤波器可以被称作“分解反卷积滤波器”或者“分解重包装滤波器”。
在1706处,沿着x轴和y轴反射所提取出的卷积滤波器的数值。
在1707处,所提取出的卷积滤波器所反射的滤波器被传送到处理单元以用于卷积。应当认识到,与所提取出的卷积滤波器进行卷积的用零填充的反卷积输入可以被称作低分辨率输入。
在1708处,把来自卷积的结果进行交织从而生成输出数据。应当认识到,把来自卷积的结果进行交织可以被称作“周期性置乱”。所生成的输出数据可以被称作高分辨率输出。
图17是示出本公开内容的一个实施例的流程图。在这些附图中描述的规程可以由CNN加速器中的变换单元和/或其他单元来实施。所示出的一些技术可以被顺序地、并行地或者按照不同于所描述的并且所描述的规程可以被重复的顺序实施。应当认识到,并不需要实施所描述的所有技术,可以添加附加的技术,并且可以用其他技术替换所示出的一些技术。
图18示出了根据本公开内容的一个实施例的实施系统设计器的计算机系统1800的方块图。计算机系统1800包括处理数据信号的处理器1810。处理器1810耦合到在处理器1810与计算机系统1800中的其他组件之间传送数据信号的总线1801或其他交换结构。计算机系统1800包括存储器1820。存储器1820可以存储由数据信号表示的可以由处理器1810执行的指令和代码。数据存储设备1830也耦合到总线1801。
网络控制器1840耦合到总线1801。网络控制器1840可以把计算机系统1800链接到计算机的网络(未示出)并且支持机器之间的通信。显示设备控制器1850耦合到总线1801。显示设备控制器1850允许把显示设备(未示出)耦合到计算机系统1800,并且充当显示设备与计算机系统1800之间的接口。输入接口1860耦合到总线1801。输入接口1860允许把输入设备(未示出)耦合到计算机系统1800,并且把来自输入设备的数据信号传送到计算机系统1800。
EDA工具1821可以驻留在存储器1820中并且由处理器1810执行。根据本公开内容的一个实施例,EDA工具1821操作来识别CNN加速器的特征(包括CNN加速器的特性和参数)以及将把CNN加速器实施在其上的目标的资源。EDA工具1821响应于CNN加速器的特征和目标的资源而生成用于CNN加速器的设计。EDA工具1821还可以包括CNN加速器上的变换单元,以便允许CNN加速器上的处理单元支持例如标准卷积、反卷积和卷积后向传播之类的多种卷积运算。
CNN加速器配置工具1822可以驻留在存储器1820中并且由处理器1810执行。根据本公开内容的一个实施例,CNN加速器配置工具1822识别将在CNN加速器上执行的CNN算法,识别支持所述CNN算法的执行的CNN加速器的变型,并且设定目标上的可配置状态寄存器以便支持CNN加速器的所述变型。
图19示出了根据本公开内容的一个实施例的EDA工具1900。EDA工具1900可以被用来实施图14中示出的EDA工具1421。EDA工具1900可以被用于在例如FPGA、ASIC、结构化ASIC或其他电路之类的一个或多个目标设备上设计例如CNN加速器之类的系统。图19示出了实施EDA工具1900的一个实施例的模块。根据一个实施例,所述模块表示软件模块,并且设计CNN加速器可以由计算机系统(比如执行由图19中示出的模块表示的指令序列的图14中示出的计算机系统)实施。指令序列的执行使得计算机系统支持系统设计,正如后文中将描述的那样。在替换实施例中,可以使用硬连线电路以替代软件指令或者与软件指令相组合来实施本公开内容的实施例。因此,本公开内容的实施例不限于硬件电路与软件的任何特定组合。
EDA工具1900包括EDA工具管理器1910。EDA工具管理器1910连接到EDA工具1900的其他组件并且在其间传送数据。EDA工具管理器1910提供允许例如设计者之类的用户把数据输入到EDA工具1900中的接口。
EDA工具1900包括CNN加速器特征识别单元1920。根据本公开内容的一个实施例,CNN加速器特征识别单元1920通过识别希望CNN加速器支持的一个或多个CNN算法的特性而识别CNN加速器的特性。CNN算法的特性可以包括比如卷积层和噪声滤波层之类的层级的数目和序列。噪声滤波层例如可以包括池化、归一化和ReLU层。CNN算法的特性还可以包括滤波器的尺寸和系数,以及将要处理的图像的尺寸和步幅。CNN特征识别单元1920还通过识别对应于希望CNN加速器支持的一个或多个CNN算法的参数而识别CNN加速器的参数。CNN算法的参数可以包括将对于所识别出的每一层实例化的内核的数目,以及将对于内核的每一个周期执行的乘法的数目,以及其他参数。CNN特征识别单元1920还识别目标上的可用来实施CNN加速器的资源。所述可用资源可以包括目标上的存储器块、DSP块以及其他组件和处理单元的数目和类型。根据本公开内容的一个实施例,在希望在CNN加速器上执行多个CNN算法的情况下,可以对于CNN加速器识别出一系列或多个特性和参数。
EDA工具1900包括缓冲器分配单元1930。根据本公开内容的一个实施例,缓冲器分配单元1930以适当的尺寸把缓冲器指派到CNN加速器,以便支持将由CNN加速器处理的图像的尺寸。
EDA工具1900包括计算单元生成单元1940。计算单元生成单元1940生成例如处理单元阵列之类的计算单元,以便支持将由CNN加速器执行的CNN算法。根据本公开内容的一个实施例,处理单元阵列包括实施卷积和噪声滤波的内核。可以生成处理单元阵列以便优化利用在被用来实施CNN加速器的目标上可用的资源的性能。
EDA工具1900包括定序器生成单元1950。定序器生成单元1950生成定序器单元并且对其进行编程,所述定序器单元协调在适当的时间去往CNN加速器上的适当的处理单元阵列、处理单元阵列中的内核以及内核中的组件的数据传送,以便对处理单元阵列上的计算进行时间多路复用。根据本公开内容的一个实施例,定序器单元可以被编程来实施参照图11-13所描述的规程。
根据本公开内容的一个实施例,来自缓冲器分配单元1930、计算单元生成单元1940和定序器生成单元1950的信息被用来生成CNN加速器的设计的描述。所述设计的描述可以采用HDL格式或其他格式。
EDA工具1900包括HDL编辑单元1960。HDL编辑单元1960对于目标编辑关于CNN加速器的设计的描述。根据本公开内容的一个实施例,编辑涉及在设计的HDL描述上实施合成、摆放、布线和定时分析规程。用于CNN加速器的已编辑设计可以支持一系列CNN变型。应当认识到,EDA工具1900可以实施参照图1-4描述的规程。
图20示出了根据本公开内容的一个实施例的CNN加速器配置工具2000。CNN加速器配置工具2000可以被用来实施图17中示出的配置工具1722。CNN加速器配置工具2000可以被用来在例如FPGA、ASIC、结构化ASIC或其他电路之类的一个或多个目标设备上配置例如CNN加速器之类的系统。图20示出了实施CNN加速器配置工具2000的一个实施例的模块。根据一个实施例,所述模块表示软件模块,并且配置CNN加速器可以由计算机系统(比如执行由图20中示出的模块表示的指令序列的图17中示出的计算机系统)实施。指令序列的执行使得计算机系统支持CNN加速器的配置,正如后文中将描述的那样。在替换实施例中,可以使用硬连线电路以替代软件指令或者与软件指令相组合,来实施本公开内容的实施例。因此,本公开内容的实施例不限于硬件电路与软件的任何特定组合。
CNN加速器配置工具2000包括配置工具管理器2010。配置工具管理器2010连接到配置工具管理器2000的其他组件并且在其间传送数据。配置工具管理器2010提供允许用户把数据输入到配置工具2000中的接口。
CNN加速器配置工具2000包括目标编程器单元2020。目标编程器单元2020对目标进行编程以便实施CNN加速器。根据本公开内容的一个实施例,对目标进行编程涉及利用配置文件对一个或多个目标设备进行编程,所述配置文件把所述一个或多个目标设备物理地变换成CNN加速器的设计。
CNN加速器配置工具2000包括CNN算法识别单元2030。CNN算法识别单元2030识别将由CNN加速器执行的CNN算法。根据本公开内容的一个实施例,可以从用户输入或者从另一个来源识别将要执行的CNN算法。
CNN加速器配置工具2000包括CNN加速器变型识别单元2040。CNN加速器变型识别单元2040识别支持将要执行的CNN算法的CNN加速器的适当变型。根据本公开内容的一个实施例,可以从用户输入或者从另一个来源识别CNN加速器的适当变型。
CNN加速器配置工具2000包括可配置状态寄存器单元2050。可配置状态寄存器单元2050设定一个或多个可配置状态寄存器,以便支持所识别出的CNN加速器的变型。根据本公开内容的一个实施例,设定可配置状态寄存器可以在CNN加速器上添加或减去一个卷积层,添加或减去一个或多个池化层,或者改变滤波器的尺寸。
应当认识到,CNN算法识别单元2030可以确定是否将由CNN加速器执行新的CNN算法。如果确定将由CNN加速器执行新的CNN算法,则可以由配置加速器变型识别单元2040识别适当的CNN加速器变型,并且可以由可配置状态寄存器单元2050设定可配置状态寄存器以便支持所述CNN加速器变型。应当认识到,CNN加速器配置工具2000可以实施参照图7所描述的规程。
应当认识到,本公开内容的实施例可以被提供为计算机程序产品或软件,所述计算机程序产品或软件可以包括具有指令的计算机可读或机器可读介质。计算机可读或机器可读介质上的指令可以被用来对计算机系统或其他电子设备进行编程。机器可读介质可以包括而不限于软盘、光盘、CD-ROM和磁光盘或者适合于存储电子指令的其他类型的介质/机器可读介质。本文中所描述的技术不限于任何特定的软件配置。所述技术可以应用在任何计算或处理环境中。本文中所使用的术语“计算机可读介质”或“机器可读介质”应当包括能够存储或编码指令序列以供计算机执行并且使得计算机实施本文中所描述的任一方法的任何介质。此外,在本领域内通常会提到采取动作或导致结果的一种形式或另一种形式的软件(例如程序、规程、进程、应用、模块、单元、逻辑等等)。这样的表达法仅仅是陈述通过由处理系统执行软件而使得处理器实施动作以产生结果的简略方式。
图21示出了根据本公开内容的一个实施例的可以被用来实施目标设备的设备2100。设备2100是包括多个逻辑阵列块(LAB)的现场可编程门阵列(FPGA)。每一个LAB可以由多个逻辑块、进位链、LAB控制信号、查找表(LUT)链、寄存器链连接线以及其他组件和互连形成。逻辑块是提供用户逻辑功能的高效实现方式的小逻辑单元。一个逻辑块包括一个或多个组合单元格(其中每一个组合单元格具有单一输出)以及寄存器。根据本公开内容的一个实施例,所述逻辑块的操作方式可以类似于比如在由Altera® Corporation(现在为Intel Corporation所有)制造的Stratix或Cyclone设备中所找到的逻辑单元(LE),或者比如在由Xilinx公司制造的Virtex设备中所找到的组合逻辑块(CLB)。在该实施例中,所述逻辑块可以包括具有可配置寄存器的四输入LUT。根据本公开内容的一个实施例,所述逻辑块可以包括一个或多个比如在由Altera Corporation制造的Stratix设备中所找到的自适应逻辑模块(ALM)。ALM可以被配置成实施逻辑功能、算术功能以及寄存器功能。LAB被分组成设备2100上的各行和各列。LAB的各列被示出为2111-2116。应当认识到,所述逻辑块可以包括附加的或替换的组件。
设备2100可以包括存储器块。所述存储器块例如可以是双端口随机存取存储器(RAM)块,其在一直到各种频率下提供一直到各种比特宽度的专用真实双端口、简单双端口或单端口存储器。存储器块可以被分组成设备上的所选LAB之间的各列,或者单独地或成对地位于设备2100内。存储器块的各列被示出为2121-2124。根据本公开内容的一个实施例,CSR可以由各列2121-2124中的一个或多个存储器块实施。CSR可以被用来向内核提供状态,以便根据CNN的所期望的特征来配置CNN加速器。这样就允许在运行时间期间配置由目标设备2100实施的CNN加速器。
设备2100包括数字信号处理(DSP)块。DSP块可以被用来实施具有加法或减法特征的各种配置的乘法器。DSP块包括移位寄存器、乘法器、加法器和累加器。DSP块可以被分组成设备2100上的各列,并且被示出为2131。
设备2100包括多个输入/输出单元(IOE)2140。每一个IOE对设备2100上的一个IO引脚(未示出)进行馈送。IOE 2140位于围绕设备2100的周界的LAB行和列的末端。每一个IOE可以包括一个双向IO缓冲器和多个寄存器以用于寄存输入、输出和输出使能信号。
设备2100可以包括例如LAB局部互连线、行互连线(“H型连线”)和列互连线(“V型连线”)(未示出)之类的路由资源,以便在目标设备上的组件之间路由信号。
在前面的说明书中参照其具体示例性实施例描述了本公开内容的实施例。但是将显而易见的是,在不背离本公开内容的实施例的更广泛的精神和范围的情况下可以作出许多修改和改变。因此,说明书和附图应当被认为是作出说明而不是具有限制意义。
Claims (20)
1.一种用于在目标上实施卷积神经网络(CNN)加速器的方法,包括:
利用一个或多个处理单元实施卷积;
修改CNN加速器的配置以便改变由CNN加速器实施的滤波器并且改变输出数据的格式化;以及
响应于输出数据的格式化和滤波器中的改变,利用所述一个或多个处理单元实施反卷积和后向传播卷积之一。
2.根据权利要求1所述的方法,其中,修改CNN加速器的配置包括:
从反卷积滤波器生成多个卷积滤波器;以及
把通过使用所述多个卷积滤波器在反卷积输入数据上实施卷积而生成的卷积结果进行交织,从而产生反卷积输出数据。
3.根据权利要求2所述的方法,其中,从反卷积滤波器生成多个卷积滤波器包括:
基于步幅从反卷积滤波器提取出更小的卷积滤波器;以及
沿着x和y轴反射所述更小的卷积滤波器中的每一个。
4.根据权利要求1所述的方法,其中,修改CNN加速器的配置包括:
将卷积滤波器重新格式化成后向传播卷积滤波器;
从所述后向传播卷积滤波器生成多个卷积滤波器;以及
把通过使用所述多个卷积滤波器在后向传播卷积输入数据上实施卷积而生成的卷积结果进行交织,从而产生后向传播卷积输出数据。
5.根据权利要求4所述的方法,其中,重新格式化卷积滤波器包括:通过把具有k个深度为c的滤波器的卷积层变换成c个深度为k的滤波器而对卷积滤波器进行重包装。
6.根据权利要求1所述的方法,其中,由驻留在CNN加速器上的变换单元在CNN加速器的运行时间期间实施所述修改。
7.根据权利要求2所述的方法,其中,在CNN加速器的运行时间之前实施从反卷积滤波器生成所述多个卷积滤波器。
8.根据权利要求1所述的方法,其中,所述一个或多个处理单元在不同的时刻实施卷积、反卷积和后向传播卷积。
9.根据权利要求1所述的方法,其中,每一个所述处理单元包括:
高速缓存;
实施点积运算的计算单元;以及
累加单元。
10.一种具有指令序列的非瞬时性计算机可读介质,所述指令序列包括指令,所述指令在被执行时使得处理器实施根据权利要求1-9中的任一项所述的方法。
11.一种实施在目标上的卷积神经网络(CNN)加速器,包括:
在第一配置期间协调目标上的组件之间的第一数据流程并且在第二配置期间协调目标上的组件之间的第二数据流程的定序器单元;
在第一配置期间实施卷积并且在第二配置期间实施反卷积和后向传播卷积之一的多个处理单元。
12.根据权利要求11所述的CNN加速器,还包括变换单元,所述变换单元包括:
从反卷积滤波器生成多个卷积滤波器的卷积滤波器提取单元;以及
把通过使用所述多个卷积滤波器在反卷积输入数据上实施卷积而生成的卷积结果进行交织从而产生反卷积输出数据的交织单元。
13.根据权利要求11所述的CNN加速器,还包括变换单元,所述变换单元包括:
把卷积滤波器重新格式化成后向传播卷积滤波器的滤波器重包装单元;
从所述后向传播卷积滤波器生成多个卷积滤波器的卷积滤波器提取单元;以及
把通过使用所述多个卷积滤波器在后向传播卷积输入数据上实施卷积而生成的卷积结果进行交织从而产生后向传播卷积输出数据的交织单元。
14.根据权利要求12所述的CNN加速器,其中,卷积滤波器提取单元在CNN加速器的运行时间期间从反卷积滤波器生成多个卷积滤波器。
15.根据权利要求13所述的CNN加速器,其中,卷积滤波器提取单元在CNN加速器的运行时间期间从后向传播卷积滤波器生成多个卷积滤波器。
16.根据权利要求11所述的CNN加速器,其中,所述一个或多个处理单元在不同的时刻实施卷积、反卷积和后向传播卷积。
17.根据权利要求11所述的CNN加速器,其中,每一个所述处理单元包括:
高速缓存;
实施点积运算的计算单元;以及
累加单元。
18.一种实施在目标上的卷积神经网络(CNN)加速器,包括:
用于在第一配置期间协调目标上的组件之间的第一数据流程并且在第二配置期间协调目标上的组件之间的第二数据流程的装置;
用于在第一配置期间实施卷积的装置,以及用于在第二配置期间实施反卷积和后向传播卷积之一的装置。
19.根据权利要求18所述的CNN加速器,还包括:
用于从反卷积滤波器生成多个卷积滤波器的装置;以及
用于把通过使用所述多个卷积滤波器在反卷积输入数据上实施卷积而生成的卷积结果进行交织从而产生反卷积输出数据的装置。
20.根据权利要求18所述的CNN加速器,还包括:
用于把卷积滤波器重新格式化成后向传播卷积滤波器的装置;
用于从所述后向传播卷积滤波器生成多个卷积滤波器的装置;以及
用于把通过使用所述多个卷积滤波器在后向传播卷积输入数据上实施卷积而生成的卷积结果进行交织从而产生后向传播卷积输出数据的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/367,101 US11074492B2 (en) | 2015-10-07 | 2016-12-01 | Method and apparatus for performing different types of convolution operations with the same processing elements |
US15/367101 | 2016-12-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108133265A true CN108133265A (zh) | 2018-06-08 |
CN108133265B CN108133265B (zh) | 2021-12-24 |
Family
ID=60543392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711248920.5A Active CN108133265B (zh) | 2016-12-01 | 2017-12-01 | 利用相同处理单元实施不同类型的卷积运算的方法和装置 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP3330898A1 (zh) |
CN (1) | CN108133265B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108985449A (zh) * | 2018-06-28 | 2018-12-11 | 中国科学院计算技术研究所 | 一种对卷积神经网络处理器的控制方法及装置 |
CN110009099A (zh) * | 2017-11-03 | 2019-07-12 | 畅想科技有限公司 | 用于深度神经网络的硬件实现的误差分配格式选择 |
WO2020041962A1 (zh) * | 2018-08-28 | 2020-03-05 | 深圳鲲云信息科技有限公司 | 一种并行反卷积计算方法、单引擎计算方法及相关产品 |
WO2020118608A1 (zh) * | 2018-12-13 | 2020-06-18 | 深圳鲲云信息科技有限公司 | 一种反卷积神经网络的硬件加速方法、装置和电子设备 |
CN111667046A (zh) * | 2019-03-08 | 2020-09-15 | 富泰华工业(深圳)有限公司 | 深度学习加速方法及用户终端 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190051697A (ko) | 2017-11-07 | 2019-05-15 | 삼성전자주식회사 | 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법 |
GB2596239B (en) * | 2019-03-20 | 2023-07-12 | Imagination Tech Ltd | Methods and systems for implementing a convolution transpose layer of a neural network |
GB2582352B (en) | 2019-03-20 | 2021-12-15 | Imagination Tech Ltd | Methods and systems for implementing a convolution transpose layer of a neural network |
CN110135503B (zh) * | 2019-05-19 | 2022-07-12 | 重庆理工大学 | 一种装配机器人零件深度学习识别方法 |
KR102428033B1 (ko) * | 2020-02-28 | 2022-08-02 | 오픈엣지테크놀로지 주식회사 | 트랜스포즈드 콘볼루션 하드웨어 가속장치 |
GB202319942D0 (en) * | 2021-01-04 | 2024-02-07 | Imagination Tech Ltd | Neural network comprising matrix multiplication |
GB2602494A (en) * | 2021-01-04 | 2022-07-06 | Imagination Tech Ltd | Implementing fully-connected neural-network layers in hardware |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993204B1 (en) * | 2002-01-04 | 2006-01-31 | Pixon Llc | High speed signal enhancement using pixons |
US20070047802A1 (en) * | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Training convolutional neural networks on graphics processing units |
US7496236B2 (en) * | 1998-08-12 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Video coding reconstruction apparatus and methods |
CN103674244A (zh) * | 2013-07-05 | 2014-03-26 | 北京师范大学 | 一种基于gpu的快速反卷积二维光纤光谱抽取方法 |
CN104866900A (zh) * | 2015-01-29 | 2015-08-26 | 北京工业大学 | 一种反卷积神经网络训练方法 |
CN105491269A (zh) * | 2015-11-24 | 2016-04-13 | 长春乙天科技有限公司 | 基于反卷积图像复原的高保真视频放大方法 |
-
2017
- 2017-11-29 EP EP17204533.8A patent/EP3330898A1/en active Pending
- 2017-12-01 CN CN201711248920.5A patent/CN108133265B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496236B2 (en) * | 1998-08-12 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Video coding reconstruction apparatus and methods |
US6993204B1 (en) * | 2002-01-04 | 2006-01-31 | Pixon Llc | High speed signal enhancement using pixons |
US20070047802A1 (en) * | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Training convolutional neural networks on graphics processing units |
CN103674244A (zh) * | 2013-07-05 | 2014-03-26 | 北京师范大学 | 一种基于gpu的快速反卷积二维光纤光谱抽取方法 |
CN104866900A (zh) * | 2015-01-29 | 2015-08-26 | 北京工业大学 | 一种反卷积神经网络训练方法 |
CN105491269A (zh) * | 2015-11-24 | 2016-04-13 | 长春乙天科技有限公司 | 基于反卷积图像复原的高保真视频放大方法 |
Non-Patent Citations (2)
Title |
---|
J. LONG, E. SHELHAMER AND T. DARRELL: "Fully convolutional networks for semantic segmentation", 《2015 IEEE CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION》 * |
卢宏涛,张秦川: "深度卷积神经网络在计算机视觉中的应用研究综述", 《数据采集与处理》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110009099A (zh) * | 2017-11-03 | 2019-07-12 | 畅想科技有限公司 | 用于深度神经网络的硬件实现的误差分配格式选择 |
CN110009099B (zh) * | 2017-11-03 | 2021-12-24 | 畅想科技有限公司 | 用于确定表示dnn的层的值的定点数格式的方法和系统 |
US11392823B2 (en) | 2017-11-03 | 2022-07-19 | Imagination Technologies Limited | Error allocation format selection for hardware implementation of deep neural network |
CN108985449A (zh) * | 2018-06-28 | 2018-12-11 | 中国科学院计算技术研究所 | 一种对卷积神经网络处理器的控制方法及装置 |
CN108985449B (zh) * | 2018-06-28 | 2021-03-09 | 中国科学院计算技术研究所 | 一种对卷积神经网络处理器的控制方法及装置 |
WO2020041962A1 (zh) * | 2018-08-28 | 2020-03-05 | 深圳鲲云信息科技有限公司 | 一种并行反卷积计算方法、单引擎计算方法及相关产品 |
WO2020118608A1 (zh) * | 2018-12-13 | 2020-06-18 | 深圳鲲云信息科技有限公司 | 一种反卷积神经网络的硬件加速方法、装置和电子设备 |
CN111667046A (zh) * | 2019-03-08 | 2020-09-15 | 富泰华工业(深圳)有限公司 | 深度学习加速方法及用户终端 |
Also Published As
Publication number | Publication date |
---|---|
CN108133265B (zh) | 2021-12-24 |
EP3330898A1 (en) | 2018-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108133265A (zh) | 用于利用相同的处理单元实施不同类型的卷积运算的方法和装置 | |
CN107025317B (zh) | 用于实施卷积神经网络加速器上的层的方法和装置 | |
US11074492B2 (en) | Method and apparatus for performing different types of convolution operations with the same processing elements | |
US10726328B2 (en) | Method and apparatus for designing and implementing a convolution neural net accelerator | |
CN111684473B (zh) | 提高神经网络阵列的性能 | |
CN107341544B (zh) | 一种基于可分割阵列的可重构加速器及其实现方法 | |
CN106203617B (zh) | 一种基于卷积神经网络的加速处理单元及阵列结构 | |
EP3179415A1 (en) | Systems and methods for a multi-core optimized recurrent neural network | |
KR102414583B1 (ko) | 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법 | |
CN110073359A (zh) | 用于卷积神经网络的有效数据布局 | |
KR102523263B1 (ko) | 하드웨어 기반 풀링을 위한 시스템 및 방법 | |
CN109844738A (zh) | 运算处理电路和识别系统 | |
US9984326B1 (en) | Spiking neural network simulator for image and video processing | |
CN108009627A (zh) | 神经网络指令集架构 | |
CN110766127B (zh) | 神经网络计算专用电路及其相关计算平台与实现方法 | |
Kono et al. | Scalability analysis of tightly-coupled FPGA-cluster for lattice boltzmann computation | |
Fan et al. | Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation | |
DE112020005799T5 (de) | Effiziente Ausnutzung eines Verarbeitungselementarrays | |
Hackel et al. | Inference, learning and attention mechanisms that exploit and preserve sparsity in CNNs | |
Bhat et al. | Gradient backpropagation based feature attribution to enable explainable-ai on the edge | |
Hailesellasie et al. | A fast FPGA-based deep convolutional neural network using pseudo parallel memories | |
DE112020003055T5 (de) | Neuanordnen der operationen eines neuronalen netzwerks für parallele ausführung | |
Jang et al. | Deep partitioned training from near-storage computing to DNN accelerators | |
CN114595811A (zh) | 用于执行深度学习操作的方法和设备 | |
Devendran et al. | Optimization of the Convolution Operation to Accelerate Deep Neural Networks in FPGA. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |