CN112346703A - 一种用于卷积神经网络计算的全局平均池化电路 - Google Patents
一种用于卷积神经网络计算的全局平均池化电路 Download PDFInfo
- Publication number
- CN112346703A CN112346703A CN202011326338.8A CN202011326338A CN112346703A CN 112346703 A CN112346703 A CN 112346703A CN 202011326338 A CN202011326338 A CN 202011326338A CN 112346703 A CN112346703 A CN 112346703A
- Authority
- CN
- China
- Prior art keywords
- global average
- convolution kernel
- convolution
- average pooling
- circuit
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
- G06F7/5095—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators word-serial, i.e. with an accumulator-register
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Optimization (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种用于卷积神经网络计算的全局平均池化电路,包括累加器和移位寄存器,所述累加器用于对卷积层中每层的卷积运算结果进行累加,所述移位寄存器用于对所述累加器的累加结果进行移位操作,并在移位完成后向所述累加器输出复位信号。在进行全局平均池化层操作计算时,将累加器中输出的数据用简单的移位操作替代了除法操作得到全局平均池化层的计算结果,能够有效提高计算资源的利用率,加快整体系统的计算速度。
Description
技术领域
本发明属于人工智能算法硬件实现领域,更具体地,涉及一种用于卷积神经网络计算的全局平均池化电路。
背景技术
随着人工智能算法的不断发展,各种网络模型层出不穷,其中卷积神经网络(CNN)以其独特的权值共享特性、更高的预测精度而得到广泛应用。
CNN模型包括卷积层、池化层和全连接层。其中,卷积层是CNN模型的核心,将输入层的输入信息进行特征提取,池化层进行特征选取和信息过滤,全连接层对提取的特征信息进行进一步非线性组合得到输出。而在传统CNN模型中,全连接层层数较少但包含整个模型的大部分训练参数和计算量,导致CNN模型的计算前后不平衡,降低了CNN的计算效率。全局平均池化层(Global Average Pooling,GAP)是池化层的一种,在全连接层前使用全局平均池化,能有效地减少计算参数、简化计算过程以及增大卷积核的感受野。传统的全局平均池化电路没有特殊的处理方式,求卷积层输出的平均值时,首先需要将卷积计算结果写入存储器,再将其从存储器中取出,再进行累加和除法操作,导致CNN的硬件资源开销增加,并且计算速度、吞吐量降低。在硬件中实现结构简单并且高效的全局平均池化电路,能有效地提高硬件资源的利用率以及电路的吞吐量、计算速度,因此设计一种用于CNN计算的全局平均池化电路具有重要意义。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种用于CNN计算的全局平均池化电路,旨在提高硬件资源的利用率以及电路的吞吐量、计算速度。
为实现上述目的,根据本申请的一个方面,本发明设计了一种用于卷积神经网络计算的全局平均池化电路,包括累加器和移位寄存器,所述累加器用于对卷积层中每层的卷积运算结果进行累加,所述移位寄存器用于对所述累加器的累加结果进行移位操作,并在移位完成后向所述累加器输出复位信号。
可选地,所述累加器包括加法器和D触发器,所述加法器的一个输入端输入所述乘加运算结果,另一个输入端输入所述D触发器的输出结果;所述D触发器的输出结果还发送至所述移位寄存器的输入端,所述D触发器的复位端口连接至所述移位寄存器,所述D触发器的时钟端口输入时钟信号。
可选地,所述全局平均池化电路计算全局平均池化值Gk的公式如下:
其中,npkx为单个卷积核的长度,npif为单个卷积核的通道数,npix为时间维度上输入数据的个数,k为卷积层中的第k个卷积核,i,j,m和k为正整数,bk为第k个卷积核的偏置参数,为第k个卷积核中第j个通道中的第i个权重参数,为第k个卷积核中第j个通道第i个乘加单元第m次的输入数据,z(m,k)为第k个卷积核的第m次卷积输出;Gk为第k个卷积核的全局平均池化值;Nshift为移位寄存器的需要移位的次数。
根据本申请的另一个方面,还提供了一种用于卷积神经网络的计算全局平均池化值的方法,包括:
获取卷积核的权重参数,并采用修正系数对所述权重参数进行修正,形成修正后的权重参数用于进行卷积运算;
通过累加器对卷积层中每层的卷积运算结果进行累加;以及
通过移位寄存器对所述累加结果进行移位操作,并在移位完成后向所述累加器反馈复位信号。
根据本申请的又一个方面,还提供了一种用于卷积神经网络计算的装置,包括中央控制电路、乘加阵列电路、权重参数缓存器、偏置参数缓存器、输入数据缓存器和上述的全局平均池化电路;所述中央控制电路用于控制电路的状态转移和使能;所述乘加阵列电路用于计算卷积操作中的卷积计算以及偏置计算;所述权重缓存器、偏置缓存器以及输入数据缓存器分别用于存储卷积操作所需要的权重参数、偏置参数和输入数据;所述全局平均池化电路用于将所述乘加阵列电路输出的数据进行累加并移位输出以获得全局平均池化值。
可选地,所述乘加阵列电路的时钟信号与所述全局平均池化电路的时钟信号相连。
总而言之,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益结果:
(1)本发明所提供的全局平均池化层电路可以以流水线结构运行卷积层和全局平均池化层的操作计算,无需额外数据访存,因此能够有效地缩减卷积网络前向推理过程的计算复杂度,降低电路的硬件资源开销。
(2)本发明所提供的全局平均池化层电路,在进行全局平均池化层操作计算时,将累加器中输出的数据用简单的移位操作替代了除法操作得到全局平均池化层的计算结果,能够有效提高计算资源的利用率,加快整体系统的计算速度。
附图说明
图1是本发明实施例提供的全局平均池化电路结构示意图;
图2是本发明实施例提供的用于卷积神经网络计算的电路的结构示意图;
图3本发明实施例提供的全局平均池化方法的流程图;
图4是本发明提供的全局平均池化层流水线操作示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
请参照图1,本实施例提供了一种用于卷积神经网络计算的全局平均池化电路300,包括累加器301和移位寄存器302。所述累加器301用于对卷积层中每层的卷积运算结果data进行累加,所述移位寄存器302用于对所述累加器301的累加结果data_sum进行移位操作,并在移位完成后向所述累加器301输出复位信号ctr_rst。通过本实施例的全局平均池化电路300处理后,并行输入的32位运算结果data被转化成了16位串行输出数据。
进一步地,如图1所示,所述累加器301包括加法器3011和D触发器3012。所述加法器的一个输入端输入所述乘加运算结果data,另一个输入端输入所述D触发器3012的输出结果,从而完成累加运算。所述D触发器3012的输出结果还发送至所述移位寄存器302的输入端,所述D触发器2012的复位端口set连接至所述移位寄存器302,所述D触发器3012的时钟端口Clk输入时钟信号ctr_clk。
进一步地,所述全局平均池化电路300计算全局平均池化值Gk的公式如下:
其中,npkx为单个卷积核的长度,也就是卷积核单个通道内乘加单元的个数。npif为单个卷积核的通道数。npix为时间维度上输入数据的个数,也就是一次流水线计算中,单个卷积核需要计算出的输出数据的个数。k为卷积层中的第k个卷积核。i,j,m和k为正整数。bk为第k个卷积核的偏置参数。为第k个卷积核中第j个通道中的第i个权重参数。为第k个卷积核中第j个通道第i个乘加单元第m次的输入数据,m的取值范围为1~npix。z(m,k)为第k个卷积核的第m次卷积输出。Gk为第k个卷积核的全局平均池化值。Nshift为移位寄存器的需要移位的次数。
而传统的计算模式是先计算出所有的卷积运算结果,将其存储在缓存器中,然后在从缓存器中取出来求和,再通过除法计算平均值。其计算公式如下:
本申请中的全局平均池化电路,只需要移位寄存器302将输出的结果移动Nshift位,并在卷积层中的卷积运算中对权重数据乘替代传统全局平均池化层电路的除法操作效果,权重参数的乘法操作可以预先在软件端训练完成的参数中进行,无需在硬件层面上完成该操作。
请参阅图3,本实施例提供了一种用于卷积神经网络的计算全局平均池化值的方法,包括以下步骤:
S1,获取卷积核的权重参数,并采用修正系数对所述权重参数进行修正,形成修正后的权重参数用于进行卷积运算;
S2,通过累加器对卷积层中每层的卷积运算结果进行累加;以及
S3,通过移位寄存器对所述累加结果进行移位操作,并在移位完成后向所述累加器反馈复位信号。
该计算方法可采用上述实施例中的全局平均池化电路进行实施,工作原理在上述实施例中已经阐述,在此不再累述。
上述方法可采用上述公式(1)、(2)和(3)进行计算,再次不再累述。
请参阅图2,本实施例提供了一种用于卷积神经网络计算的装置,包括中央控制电路100、乘加阵列电路200、全局平均池化电路300、权重参数缓存器400、偏置参数缓存器500和输入数据缓存器600。所述的全局平均池化电路300的结构与工作原理与图1所展示的实施例相同,在此不再累述。
所述中央控制电路100用于控制电路的状态转移和使能。所述乘加阵列电路200用于计算卷积操作中的卷积计算以及偏置计算。所述权重缓存器400、偏置缓存器500以及输入数据缓存器600分别用于存储卷积操作所需要的权重参数、偏置参数和输入数据。所述全局平均池化电路用于将所述乘加阵列电路200输出的数据进行累加并移位输出以获得全局平均池化值。
具体地,如图2所示,所述乘加阵列电路200的时钟信号与所述全局平均池化电路300的时钟信号相连。
图4为本发明提供的全局平均池化层流水线操作示意图。首先权重参数缓存器、偏置参数缓存器以及输入数据缓存器的输出端口将在每个周期持续输出权重参数、偏置参数以及数据,其中输出的数据p每个周期是由中央控制电路所输入的地址得到的,其中p11~p(1Nx)为输入数据的第一层数据(也就是第一个卷积核的输入数据),包含Nx个数据。当输入数据缓存器将第一层数据输送完成后,权重参数缓存器、偏置参数缓存器在下一个周期会输出第二层卷积计算所需要的权重和偏置参数,输入数据缓存器将输出第二层的像素数据。权重参数缓存器、偏置参数缓存器以及输入数据缓存器的输入信号模式由上所述,经过多次周期后,直到将最后一层Ni的最后一个像素数据p(NiNx)为止。
进一步地,MAC(乘加)阵列电路将输入的权重参数、偏置参数以及输入数据进行卷积操作,延后一个周期将卷积计算的结果输出,MAC阵列模块依次输出卷积计算的结果,直到将最后一层Ni的最后一个数据D(Ni Nx)输出为止。
进一步地,累加器将延后一个周期接收到MAC阵列模块输出的数据data,并将输入的data进行累加计算,当累加器将第一层输入数据卷积计算结果累加完后,累加器将累加结果sum输出到移位寄存器,并输出移位信号。
进一步地,移位寄存器一直等待累加器输入的累加数据sum以及移位信号,接受到累加数据sum以及移位信号后,移位寄存器对累加数据sum进行移位处理,并将移位的32位的数据转换为16位的数据进行输出,依次输出每一层的结果,输出到第Ni层的移位结果,即完成全局平均池化层计算。
总的来说,本发明所提供的全局平均池化层电路能增大电路的吞吐量以及运算效率,并且有效地提升硬件资源的利用率,降低计算电路的功耗、成本。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种用于卷积神经网络计算的全局平均池化电路,其特征在于,包括累加器和移位寄存器,所述累加器用于对卷积层中每层的卷积运算结果进行累加,所述移位寄存器用于对所述累加器的累加结果进行移位操作,并在移位完成后向所述累加器输出复位信号。
2.根据权利要求1所述的全局平均池化电路,其特征在于,所述累加器包括加法器和D触发器,所述加法器的一个输入端输入所述乘加运算结果,另一个输入端输入所述D触发器的输出结果;所述D触发器的输出结果还发送至所述移位寄存器的输入端,所述D触发器的复位端口连接至所述移位寄存器,所述D触发器的时钟端口输入时钟信号。
4.一种用于卷积神经网络的计算全局平均池化值的方法,其特征在于,包括:
获取卷积核的权重参数,并采用修正系数对所述权重参数进行修正,形成修正后的权重参数用于进行卷积运算;
通过累加器对卷积层中每层的卷积运算结果进行累加;以及
通过移位寄存器对所述累加结果进行移位操作,并在移位完成后向所述累加器反馈复位信号。
5.根据权利要求4所述的用于卷积神经网络的计算全局平均池化值的方法,其特征在于,所述累加器包括加法器和D触发器,所述加法器的一个输入端输入所述乘加运算结果,另一个输入端输入所述D触发器的输出结果;所述D触发器的输出结果还发送至所述移位寄存器的输入端,所述D触发器的复位端口连接至所述移位寄存器,所述D触发器的时钟端口输入时钟信号。
7.一种用于卷积神经网络计算的装置,包括中央控制电路、乘加阵列电路、权重参数缓存器、偏置参数缓存器、输入数据缓存器,其特征在于,还包括如权利要求1-4任意一项所述的全局平均池化电路;所述中央控制电路用于控制电路的状态转移和使能;所述乘加阵列电路用于计算卷积操作中的卷积计算以及偏置计算;所述权重缓存器、偏置缓存器以及输入数据缓存器分别用于存储卷积操作所需要的权重参数、偏置参数和输入数据;所述全局平均池化电路用于将所述乘加阵列电路输出的数据进行累加并移位输出以获得全局平均池化值。
8.根据权利要求7所示的用于卷积神经网络计算的装置,其特征在于,所述乘加阵列电路的时钟信号与所述全局平均池化电路的时钟信号相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011326338.8A CN112346703B (zh) | 2020-11-24 | 2020-11-24 | 一种用于卷积神经网络计算的全局平均池化电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011326338.8A CN112346703B (zh) | 2020-11-24 | 2020-11-24 | 一种用于卷积神经网络计算的全局平均池化电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112346703A true CN112346703A (zh) | 2021-02-09 |
CN112346703B CN112346703B (zh) | 2021-10-22 |
Family
ID=74365426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011326338.8A Active CN112346703B (zh) | 2020-11-24 | 2020-11-24 | 一种用于卷积神经网络计算的全局平均池化电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112346703B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180232621A1 (en) * | 2017-02-10 | 2018-08-16 | Kneron, Inc. | Operation device and method for convolutional neural network |
CN108415881A (zh) * | 2017-02-10 | 2018-08-17 | 耐能股份有限公司 | 卷积神经网络的运算装置及方法 |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
WO2019193317A1 (en) * | 2018-04-05 | 2019-10-10 | Arm Limited | Systolic convolutional neural network |
US20200111235A1 (en) * | 2018-10-03 | 2020-04-09 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, non-transitory computer-readable storage medium |
CN111079934A (zh) * | 2019-11-18 | 2020-04-28 | 华中科技大学 | 应用于环域上误差学习加密算法的数论变换单元和方法 |
CN111583165A (zh) * | 2019-02-19 | 2020-08-25 | 京东方科技集团股份有限公司 | 图像处理方法、装置、设备及存储介质 |
-
2020
- 2020-11-24 CN CN202011326338.8A patent/CN112346703B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180232621A1 (en) * | 2017-02-10 | 2018-08-16 | Kneron, Inc. | Operation device and method for convolutional neural network |
CN108415881A (zh) * | 2017-02-10 | 2018-08-17 | 耐能股份有限公司 | 卷积神经网络的运算装置及方法 |
WO2019193317A1 (en) * | 2018-04-05 | 2019-10-10 | Arm Limited | Systolic convolutional neural network |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
US20200111235A1 (en) * | 2018-10-03 | 2020-04-09 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, non-transitory computer-readable storage medium |
CN111583165A (zh) * | 2019-02-19 | 2020-08-25 | 京东方科技集团股份有限公司 | 图像处理方法、装置、设备及存储介质 |
CN111079934A (zh) * | 2019-11-18 | 2020-04-28 | 华中科技大学 | 应用于环域上误差学习加密算法的数论变换单元和方法 |
Non-Patent Citations (2)
Title |
---|
ANAKHI HAZARIKA等: "Shift and Accumulate Convolution Processing Unit", 《TENCON 2019 - 2019 IEEE REGION 10 CONFERENCE (TENCON)》 * |
陈壮: "基于动态精度的可扩展高能效CNN加速器设计", 《中国优秀硕士学位论文全文数据库》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112346703B (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
WO2018120989A1 (zh) | 卷积运算芯片和通信设备 | |
CN107704916B (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
CN108647773B (zh) | 一种可重构卷积神经网络的硬件互连系统 | |
CN110688088B (zh) | 一种面向神经网络的通用非线性激活函数计算装置和方法 | |
CN111767994B (zh) | 一种神经元计算装置 | |
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
CN113033794B (zh) | 基于深度可分离卷积的轻量级神经网络硬件加速器 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN112905530A (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
CN116227599A (zh) | 一种推理模型的优化方法、装置、电子设备及存储介质 | |
CN113313244B (zh) | 面向加法网络的近存储神经网络加速器及其加速方法 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN112346703B (zh) | 一种用于卷积神经网络计算的全局平均池化电路 | |
CN113240101A (zh) | 卷积神经网络软硬件协同加速的异构SoC实现方法 | |
CN113313252A (zh) | 一种基于脉动阵列的深度可分离卷积实现方法 | |
CN116702851A (zh) | 适用于权重复用神经网络的脉动阵列单元及脉动阵列结构 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
CN113138748B (zh) | 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 | |
CN110555519B (zh) | 一种基于符号随机计算的低复杂度卷积神经网络架构 | |
CN110163793B (zh) | 卷积计算加速方法和装置 | |
US11297127B2 (en) | Information processing system and control method of information processing system | |
CN112001492A (zh) | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 | |
CN111008697A (zh) | 一种卷积神经网络加速器实现架构 | |
CN114626517B (zh) | 一种存储双层权重数据的脉动阵列 |
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 |