CN108647780B - 面向神经网络的可重构池化操作模块结构及其实现方法 - Google Patents
面向神经网络的可重构池化操作模块结构及其实现方法 Download PDFInfo
- Publication number
- CN108647780B CN108647780B CN201810324770.XA CN201810324770A CN108647780B CN 108647780 B CN108647780 B CN 108647780B CN 201810324770 A CN201810324770 A CN 201810324770A CN 108647780 B CN108647780 B CN 108647780B
- Authority
- CN
- China
- Prior art keywords
- pooling
- calculation
- control unit
- module
- address
- 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.)
- Active
Links
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开一种面向神经网络的可重构池化操作模块结构,包括动态配置模块和池化计算模块,所述池化计算模块用于完成池化层的计算过程,在动态配置模块的作用下,实现不同的池化方法,并且动态地配置池化操作的计算规模;当前输入队列在上一次计算之后从数据存储器中读取,结果通过输出队列传输到数据存储器。本发明还公开一种面向神经网络的可重构池化操作模块结构的实现方法,通过外部控制信号,动态配置模块的各个单元实现对池化计算模块的控制,根据各单元发出的控制信号,计算模块进行相应的计算操作并给出精确的输出结果。此种技术方案不仅可以降低计算过程的复杂度和时间,同时减少功耗,而且提高了计算的灵活性和单元利用率。
Description
技术领域
本发明属于人工神经网络技术领域,特别涉及一种面向神经网络的可重构池化操作模块结构。
背景技术
随着网络的日益庞大,神经网络***中需要对大量的输入数据进行相应的计算操作,这会产生较大的功耗,目前已经在算法、软件、硬件等进行了大量的研究。然而,低能耗仍面临着新的挑战。
池化操作通过对特征图进行压缩,一方面可以使特征图尺寸减小,简化网络计算复杂度;另一方面进行特征压缩,提取主要特征。池化操作在处理神经网络时在性能和灵活性方面表现出优越性。
由于池化操作是网络计算中一个重要的过程,因此我们进一步优化了池化层的计算阵列设计,提出了一种可重构池化操作模块结构,本案由此产生。
发明内容
本发明的目的,在于提供一种面向神经网络的可重构池化操作模块结构及其实现方法,其不仅可以降低计算过程的复杂度和时间,同时减少功耗,而且提高了计算的灵活性和单元利用率。
为了达成上述目的,本发明的解决方案是:
一种面向神经网络的可重构池化操作模块结构,包括动态配置模块和池化计算模块,所述池化计算模块用于完成池化层的计算过程,在动态配置模块的作用下,实现不同的池化方法,并且动态地配置池化操作的计算规模;当前输入队列在上一次计算之后从数据存储器中读取,结果通过输出队列传输到数据存储器。
上述动态配置模块包括地址控制单元、计算控制单元和状态控制单元,其中,地址控制单元用于控制先入先出阵列的存储器访问地址,并且在外部控制信号的作用下,动态地控制所要读取数据存储器中输入数据的地址;计算控制单元用于控制处理单元中选择器、加法器和移位的操作,在外部控制信号作用下,确定不同的池化方式及计算方式,并且动态配置池化计算模块中计算单元中的计算规模;状态控制单元用来判断池化计算模块中计算单元和计算器的工作状态,并将工作状态反馈到地址控制单元中。
上述计算单元的工作状态包括空闲状态和忙碌状态,状态控制单元将计算单元的工作状态反馈到地址控制单元中,若判断计算单元处于空闲状态,则在地址控制单元的控制下,将下一组输入数据读到计算单元的缓存器中。
一种面向神经网络的可重构池化操作模块结构的实现方法,包括如下步骤:
步骤1,根据网络规模大小,确定池化计算模块中的计算阵列规模n*n;
步骤2,动态配置模块接收外部控制信号[c,k,s],c用于确定所采用的池化方式Max-pooling或Mean-pooling,k是池化窗口大小,用于确定一次读取输入数据个数的最小单位,s用于地址控制单元确定在一次计算完成后,所需读取下一组输入数据的地址;
步骤3,地址控制单元发出控制信号,读取输入数据至先入先出阵列;
步骤4,计算控制单元控制计算模块的池化方式,以及计算单元所需完成的计算级数;
步骤5,状态控制单元通过确定计算单元和内部计算器的工作状态,并反馈到地址控制单元以读取新的输入数据进行池化操作;
步骤6,一次池化操作结束后,输出数据经过输出先入先出阵列,在地址控制单元的控制下传输到存储器的指定地址,得到相应的输出数据的尺寸,并作为下一层的输入特征图。
上述步骤3的具体内容是:地址控制单元在控制信号k、s的作用下,发出控制信号来确定存储器的访问地址,读取输入数据至先入先出阵列,等待计算单元的读入并进行池化操作。
上述步骤4中,计算控制单元根据控制信号c和k,确定计算模块的池化方式:Max-pooling或Mean-pooling,分别采用比较器操作和加法器、移位操作来实现。
上述步骤4中,当池化窗口大小大于3*3时,配置多个计算单元实现一次池化操作。
上述步骤5的具体内容是:状态控制单元在接收到计算模块的反馈后,确定计算单元和计算器的工作状态,若处于空闲状态,则通知地址控制单元以确定新的输入数据地址进行池化操作,各计算单元通过并行计算减少计算时间。
采用上述方案后,本发明能够实现不同计算方式下的池化操作,如Max-pooling和Mean-pooling;在外部控制信号的控制下,根据神经网络的规模大小可以实现池化操作的动态配置,并快速地给出精确结果。本发明与现有技术相比,设计简单,可行性好,采用动态可配置和多级流水线操作,可减小计算复杂度和计算时间,并且降低了功耗,同时保证了一定的精度。本发明适用于多种网络规模,满足了人工神经网络的计算需求,可应用于卷积神经网络的网络加速,卷积神经网络主要用于实现图像识别、语音识别和文字理解等。
附图说明
图1是本发明模块的结构示意图;
图2是本发明实现方法的流程示意图;
图3是本发明的Max-pooling方式下的计算模块结构示意图;
图4是本发明的Mean-pooling方式下的计算模块结构示意图;
图5是本发明的Max-pooling方式下的工作流程示意图;
图6是本发明的Mean-pooling方式下的工作流程示意图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1所示,本发明提供一种面向神经网络的可重构池化操作模块结构,在各个模块的协调控制下,根据输入数据的特性实现动态配置的池化计算阵列,并给出精确的计算结果。本发明提供的模块结构主要包括动态配置模块和池化计算模块,下面分别介绍。
所述动态配置模块主要包括地址控制单元、计算控制单元和状态控制单元,其中,地址控制单元用于控制先入先出阵列的存储器访问地址,即动态地指定先入先出阵列中数据的来源地址以及输出数据的存储地址,并且在外部控制信号[c,k,s](c是池化方式,k是池化窗口大小,s是窗口移动步长)的作用下,动态地控制所要读取数据存储器中输入数据的地址,即有效地切分输入特征图。
计算控制单元用于控制处理单元中选择器、加法器等的操作,在外部控制信号c、k作用下,可以确定不同的池化方式及计算方式,如图3和图5所示,Max-pooling方式下通过选择器实现,如图4和图6所示,Mean-pooling方式下通过加法器和移位来实现,并且可以动态配置计算单元中的计算规模,即根据池化窗口的大小,确定计算单元中的计算级数,该池化的形式主要是在计算阵列中进行。
状态控制单元是用来判断池化计算模块中计算单元和计算器的工作状态,其中,计算单元的工作状态包括空闲状态和忙碌状态,计算单元中计算器的工作状态包括选择器、加法器和移位,并将计算单元的工作状态反馈到地址控制单元中,若判断计算单元处于空闲状态,则在地址控制单元的控制下,将下一组输入数据读到计算单元的缓存器中,该方式是多级流水线的操作形式,可以提高计算阵列的利用率。
所述池化计算模块用于完成池化层的计算过程,根据外部信号的输入,在动态配置模块的计算控制单元的作用下,可以实现不同的池化方法,如Max-pooling和Mean-pooling,并且动态地配置池化操作的计算规模;当前的输入队列在上一次计算之后从数据存储器中读取,计算后的结果通过输出队列传输到数据存储器。其中,所述动态配置模块用于根据输入信号,实现动态配置计算阵列模块,并完成数据间的传输。
池化计算模块主要是在PE阵列中实现的,如:计算阵列为n*n,可以针对不同的神经网络规模,合理地设计计算阵列大小,设计方法为根据各层输入特征图尺寸m*m、池化窗口k*k、步长s,则遍历一张输入特征图需次窗口移动,考虑各层所需遍历次数,合理地设计计算阵列(n*n)的大小,以提高吞吐率和计算效率。池化计算模块中的计算单元可以同时对9个输入数据进行池化操作,在控制信号[c,k,s]作用下,可以实现Max-pooling或Mean-pooling操作,并且可以动态地配置计算单元的计算级数,如:池化窗口为2*2,则计算级数为2;池化窗口为3*3的大小,池化方式为Max-pooling,窗口的移动步长为1,则需要通过选择器实现计算级数为4的操作。计算结果在地址控制单元的控制下,通过输出先入先出阵列传输到片上存储单元。
本发明还提供一种面向神经网络的可重构池化操作模块结构的实现方法,通过外部控制信号,动态配置模块的各个单元实现对池化计算模块的控制,根据各单元发出的控制信号,计算模块进行相应的计算操作并给出精确的输出结果;所述实现方法包括以下步骤:
(1)根据网络规模大小,确定池化计算模块中的计算阵列规模n*n;
(2)动态配置模块接收外部控制信号[c,k,s],c用于确定所采用的池化方式Max-pooling或Mean-pooling,k是池化窗口大小,用于确定一次读取输入数据个数的最小单位(k*k),s用于地址控制单元确定在一次计算完成后,所需读取下一组输入数据的地址;
(3)确定控制信息后,各控制单元分别给出相应的命令,地址控制单元在控制信号k、s的作用下,发出控制信号来确定存储器的访问地址,读取输入数据至先入先出阵列,等待计算单元的读入并进行池化操作;
(4)计算控制单元根据控制信号c和k,确定计算模块的池化方式,Max-pooling或Mean-pooling,分别采用比较器操作和加法器、移位操作来实现,并且确定各计算单元所需实现的计算级数,当池化窗口为2*2时,计算级数为2级,池化窗口为3*3时,计算级数需4级,当池化窗口大小大于3*3时,可配置多个计算单元实现一次池化操作;
(5)状态控制单元在接收到计算模块的反馈后,确定计算单元和计算器的工作状态,若处于空闲状态,则通知地址控制单元以确定新的输入数据地址进行池化操作,各计算单元可进行并行计算,减少计算时间;
(6)一次池化操作结束后,输出数据经过输出先入先出阵列,在地址控制单元的控制下传输到存储器的指定地址,得到相应的输出数据的尺寸,并作为下一层的输入特征图。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (7)
1.一种面向神经网络的可重构池化操作模块结构,其特征在于:包括动态配置模块和池化计算模块,所述池化计算模块用于完成池化层的计算过程,在动态配置模块的作用下,实现不同的池化方法,并且动态地配置池化操作的计算规模;当前输入队列在上一次计算之后从数据存储器中读取,结果通过输出队列传输到数据存储器;
所述动态配置模块包括地址控制单元、计算控制单元和状态控制单元,其中,地址控制单元用于控制先入先出阵列的存储器访问地址,并且在外部控制信号的作用下,动态地控制所要读取数据存储器中输入数据的地址;计算控制单元用于控制处理单元中选择器、加法器和移位的操作,在外部控制信号作用下,确定不同的池化方式及计算方式,并且动态配置池化计算模块中计算单元中的计算规模;状态控制单元用来判断池化计算模块中计算单元和计算器的工作状态,并将工作状态反馈到地址控制单元中。
2.如权利要求1所述的面向神经网络的可重构池化操作模块结构,其特征在于:所述计算单元的工作状态包括空闲状态和忙碌状态,状态控制单元将计算单元的工作状态反馈到地址控制单元中,若判断计算单元处于空闲状态,则在地址控制单元的控制下,将下一组输入数据读到计算单元的缓存器中。
3.一种面向神经网络的可重构池化操作模块结构的实现方法,其特征在于包括如下步骤:
步骤1,根据网络规模大小,确定池化计算模块中的计算阵列规模n*n;
步骤2,动态配置模块接收外部控制信号[c,k,s],c用于确定所采用的池化方式Max-pooling或Mean-pooling,k是池化窗口大小,用于确定一次读取输入数据个数的最小单位,s用于地址控制单元确定在一次计算完成后,所需读取下一组输入数据的地址;
步骤3,地址控制单元发出控制信号,读取输入数据至先入先出阵列;
步骤4,计算控制单元控制计算模块的池化方式,以及计算单元所需完成的计算级数;
步骤5,状态控制单元通过确定计算单元和内部计算器的工作状态,并反馈到地址控制单元以读取新的输入数据进行池化操作;
步骤6,一次池化操作结束后,输出数据经过输出先入先出阵列,在地址控制单元的控制下传输到存储器的指定地址,得到相应的输出数据的尺寸,并作为下一层的输入特征图。
4.如权利要求3所述的面向神经网络的可重构池化操作模块结构的实现方法,其特征在于:所述步骤3的具体内容是:地址控制单元在控制信号k、s的作用下,发出控制信号来确定存储器的访问地址,读取输入数据至先入先出阵列,等待计算单元的读入并进行池化操作。
5.如权利要求3所述的面向神经网络的可重构池化操作模块结构的实现方法,其特征在于:所述步骤4中,计算控制单元根据控制信号c和k,确定计算模块的池化方式:Max-pooling或Mean-pooling,分别采用比较器操作和加法器、移位操作来实现。
6.如权利要求3所述的面向神经网络的可重构池化操作模块结构的实现方法,其特征在于:所述步骤4中,当池化窗口大小大于3*3时,配置多个计算单元实现一次池化操作。
7.如权利要求3所述的面向神经网络的可重构池化操作模块结构的实现方法,其特征在于:所述步骤5的具体内容是:状态控制单元在接收到计算模块的反馈后,确定计算单元和计算器的工作状态,若处于空闲状态,则通知地址控制单元以确定新的输入数据地址进行池化操作,各计算单元通过并行计算减少计算时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810324770.XA CN108647780B (zh) | 2018-04-12 | 2018-04-12 | 面向神经网络的可重构池化操作模块结构及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810324770.XA CN108647780B (zh) | 2018-04-12 | 2018-04-12 | 面向神经网络的可重构池化操作模块结构及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108647780A CN108647780A (zh) | 2018-10-12 |
CN108647780B true CN108647780B (zh) | 2021-11-23 |
Family
ID=63746254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810324770.XA Active CN108647780B (zh) | 2018-04-12 | 2018-04-12 | 面向神经网络的可重构池化操作模块结构及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108647780B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445524A (zh) * | 2019-09-02 | 2021-03-05 | 中科寒武纪科技股份有限公司 | 数据处理方法、相关设备及计算机可读介质 |
CN110942145A (zh) * | 2019-10-23 | 2020-03-31 | 南京大学 | 基于可重构计算的卷积神经网络池化层、硬件实现方法及*** |
CN111160491B (zh) * | 2020-04-03 | 2020-09-01 | 北京精诊医疗科技有限公司 | 一种卷积神经网络中的池化方法和池化模型 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107169560A (zh) * | 2017-04-19 | 2017-09-15 | 清华大学 | 一种自适应可重构的深度卷积神经网络计算方法和装置 |
CN107273970A (zh) * | 2017-05-11 | 2017-10-20 | 西安交通大学 | 支持在线学***台及其构建方法 |
CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
-
2018
- 2018-04-12 CN CN201810324770.XA patent/CN108647780B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107169560A (zh) * | 2017-04-19 | 2017-09-15 | 清华大学 | 一种自适应可重构的深度卷积神经网络计算方法和装置 |
CN107273970A (zh) * | 2017-05-11 | 2017-10-20 | 西安交通大学 | 支持在线学***台及其构建方法 |
CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108647780A (zh) | 2018-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN111242277B (zh) | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 | |
CN108647773B (zh) | 一种可重构卷积神经网络的硬件互连*** | |
CN108647780B (zh) | 面向神经网络的可重构池化操作模块结构及其实现方法 | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN112465110A (zh) | 一种卷积神经网络计算优化的硬件加速装置 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN111738427B (zh) | 一种神经网络的运算电路 | |
CN111860773B (zh) | 处理装置和用于信息处理的方法 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
CN109325590A (zh) | 用于实现计算精度可变的神经网络处理器的装置 | |
CN115880132A (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN111507465A (zh) | 一种可配置的卷积神经网络处理器电路 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN115018062A (zh) | 一种基于fpga的卷积神经网络加速器 | |
CN102567254B (zh) | 采用dma控制器进行数据归一化处理的方法 | |
CN110598844A (zh) | 一种基于fpga的并行卷积神经网络加速器及加速方法 | |
CN107783935B (zh) | 基于动态精度可配运算的近似计算可重构阵列 | |
CN109741237B (zh) | 大规模图像数据处理***及方法 | |
CN115034376A (zh) | 神经网络处理器、批量标准化处理方法及存储介质 | |
CN115204373A (zh) | 一种卷积神经网络的快速卷积及缓存模式的设计方法 | |
CN115081603A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 |
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 |