CN111091183B - 一种神经网络加速系统和方法 - Google Patents

一种神经网络加速系统和方法 Download PDF

Info

Publication number
CN111091183B
CN111091183B CN201911304163.8A CN201911304163A CN111091183B CN 111091183 B CN111091183 B CN 111091183B CN 201911304163 A CN201911304163 A CN 201911304163A CN 111091183 B CN111091183 B CN 111091183B
Authority
CN
China
Prior art keywords
output
characteristic diagram
output characteristic
feature map
data
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
Application number
CN201911304163.8A
Other languages
English (en)
Other versions
CN111091183A (zh
Inventor
李远超
蔡权雄
牛昕宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Corerain Technologies Co Ltd
Original Assignee
Shenzhen Corerain Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Corerain Technologies Co Ltd filed Critical Shenzhen Corerain Technologies Co Ltd
Priority to CN201911304163.8A priority Critical patent/CN111091183B/zh
Publication of CN111091183A publication Critical patent/CN111091183A/zh
Application granted granted Critical
Publication of CN111091183B publication Critical patent/CN111091183B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

本发明实施例公开了一种神经网络加速系统和方法,所述系统包括:数据处理模块,用于将卷积神经网络计算的输入数据从浮点数转为定点数;特征图拆分模块,用于根据第一预设规则将输入数据拆分为多个计算特征图qdj;第一计算模块,用于根据第二预设规则对每个计算特征图qdj进行计算得到多个第一输出特征图qoi;累加模块,用于依次对所有第一输出特征图qoi进行累加得到第二输出特征图;第二计算模块,用于根据第三预设规则对所述第二输出特征图进行处理得到输出数据。通过将浮点数转化为定点数,使得卷积神经网络的计算在需要更少的逻辑资源的同时不影响计算的准确性,占用的存储资源也大幅减少,数据传输速度加快。

Description

一种神经网络加速系统和方法
技术领域
本发明实施例涉及神经网络技术,尤其涉及一种神经网络加速系统和方法。
背景技术
卷积神经网络在过去几年中取得显著发展,它目前是许多智能系统的基本工具。但是为了提高图像分类、图像识别等准确率,卷积神经网络的计算复杂度和对存储资源的消耗也在不断增加。因此,卷积神经网络加速已成为一个热门课题。
对于卷积神经网络的硬件实现,近年来已经提出了一批基于FPGA或ASIC的加速器。这些加速器的设计从不同的方面来对卷积神经网络进行优化,例如优化卷积神经网络的计算资源,优化数据的输出,优化计算资源和片下存储器的访问等待。
然而这些加速器的设计通常将卷积神经网络算法当成一个小黑盒,只优化了硬件结构,容易造成硬件加速后的卷积神经网络计算的准确率下降。
发明内容
有鉴于此,本发明实施例提供一种神经网络加速系统和方法,以减少神经网络计算需要使用的逻辑资源,提高数据传输速度。
第一方面,本发明实施例提供一种神经网络加速系统,包括:
数据处理模块,用于将卷积神经网络计算的输入数据从浮点数转为定点数;
特征图拆分模块,用于根据第一预设规则将输入数据拆分为多个计算特征图qdj
第一计算模块,用于根据第二预设规则对每个计算特征图qdj进行计算得到多个第一输出特征图qoi
累加模块,用于依次对所有第一输出特征图qoi进行累加得到第二输出特征图;
第二计算模块,用于根据第三预设规则对所述第二输出特征图进行处理得到输出数据。
进一步的,所述第一计算模块包括:
权值存储器,用于存储权值qw;
卷积计算单元,用于根据所述计算特征图qdj和所述权值qw进行卷积计算得到第一输出特征图的第一部分
Figure BDA0002322626630000021
支路加法树单元,用于根据第四预设规则对将所述计算特征图qdj进行计算得到第一输出特征图的第二部分
Figure BDA0002322626630000022
第一输出特征图计算单元,用于将所述第一输出特征图的第一部分
Figure BDA0002322626630000023
和所述第一输出特征图的第二部分
Figure BDA0002322626630000024
相减得到所述第一输出特征图qoi
进一步的,所述数据处理模块还用于将所述权值存储器内存储的权值qw转化为定点数。
进一步的,所述特征图拆分模块具体用于:
根据预设步长将输入数据拆分为多个包括3*3矩阵数据结构的计算特征图qdj
进一步的,所述第二计算模块包括:
偏置模块,用于将所述第二输出特征图加上预设偏置参数,得到输出偏置特征图;
量化模块,用于将所述输出偏置特征图与预设量化参数进行计算,得到输出数据。
进一步的,所述数据处理模块包括:
第一数据处理单元,用于将卷积神经网络计算的输入数据从浮点数转为带符号定点数;
第二数据处理单元,用于将带符号定点数转化为无符号定点数。
第二方面,本发明实施例提供一种神经网络加速方法,包括:
将卷积神经网络计算的输入数据从浮点数转为定点数;
根据第一预设规则将输入数据拆分为多个计算特征图qdj
根据第二预设规则对每个所述计算特征图qdj进行计算得到多个第一输出特征图qoi
依次对所有第一输出特征图qoi进行叠加得到第二输出特征图;根据第三预设规则对所述第二输出特征图进行处理得到输出数据。
进一步的,所述根据第二预设规则对每个所述计算特征图qdj进行计算得到多个第一输出特征图qoi包括:
获取所述计算特征图qdj对应的权值qw;
根据所述计算特征图qdj和所述权值qw进行卷积计算得到第一输出特征图的第一部分
Figure BDA0002322626630000031
根据第四预设规则对所述计算特征图qdj进行计算得到第一输出特征图的第二部分
Figure BDA0002322626630000032
将所述第一输出特征图的第一部分
Figure BDA0002322626630000033
和所述第一输出特征图的第二部分
Figure BDA0002322626630000041
相减得到所述第一输出特征图qoi
进一步的,所述根据第三预设规则对所述第二输出特征图进行处理得到输出数据包括:
将所述第二输出特征图加上偏置参数,得到输出偏置特征图;
将所述输出偏置特征图与量化参数进行计算,得到输出数据。
进一步的,所述将卷积神经网络计算的输入数据从浮点数转为定点数包括:
将卷积神经网络计算的输入数据从浮点数转为带符号定点数;
将带符号定点数转化为无符号定点数。
本发明实施例通过数据处理模块,用于将卷积神经网络计算的输入数据从浮点数转为定点数;特征图拆分模块,用于根据第一预设规则将输入数据拆分为多个计算特征图qdj;第一计算模块,用于根据第二预设规则对每个计算特征图qdj进行计算得到多个第一输出特征图qoi;累加模块,用于依次对所有第一输出特征图qoi进行累加得到第二输出特征图;第二计算模块,用于根据第三预设规则对所述第二输出特征图进行处理得到输出数据。通过将浮点数转化为定点数,使得卷积神经网络的计算在需要更少的逻辑资源的同时不影响计算的准确性,占用的存储资源也大幅减少,数据传输速度加快。
附图说明
图1为本发明实施例一提供的一种神经网络加速系统的结构示意图;
图2为本发明实施例一中一个输入特征图的示意图;
图3为本发明实施例一中输入特征图拆分为计算特征图的示意图;
图4为本发明实施例二提供的一种神经网络加速系统的结构示意图;
图5为本发明实施例三提供的一种神经网络加速系统的结构示意图;
图6为本发明实施例四提供的一种神经网络加速系统的结构示意图;
图7为本发明实施例五提供的一种神经网络加速方法的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一计算模块为第二计算模块,且类似地,可将第二计算模块称为第一计算模块。第一计算模块和第二计算模块两者都是计算模块,但其不是同一计算模块。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
实施例一
图1为本发明实施例一提供的一种神经网络加速系统的结构示意图,可适用于卷积神经网络的计算。如图1所示,本发明实施例一提供的一种神经网络加速系统包括:数据处理模块100、特征图拆分模块200、第一计算模块300、累加模块400和第二计算模块500。
数据处理模块100用于将卷积神经网络计算的输入数据从浮点数转为定点数;
特征图拆分模块200用于根据第一预设规则将输入数据拆分为多个计算特征图qdj
第一计算模块300用于根据第二预设规则对每个计算特征图qdj进行计算得到多个第一输出特征图qoi
累加模块400用于依次对所有第一输出特征图qoi进行累加得到第二输出特征图;
第二计算模块500用于根据第三预设规则对所述第二输出特征图进行处理得到输出数据。
具体的,在机器语言中的数据(实数)表示方法通常有两种:浮点数和定点数。定点数表达实数时,小数点位置是固定的,并且小数点在机器中是不表示出来的,而是事先约定在固定的位置,一旦确定小数点的位置,就不能改变,所以定点数表示的数据范围有限,相应的占用的内存空间(比特,bit)小。浮点数利用科学计数法来表达实数,即用一个尾数,一个基数,一个指数以及一个表示正负的符号来表达实数,例如,表示实数123.45的浮点数为1.2345x102,其中1.2345为尾数,10为基数,2为指数。浮点数通过指数达到了浮动小数点的效果,从而可以灵活地表达大范围的数据,相应的占用的内存空间大。卷积神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术,其数据通常情况下都采用浮点数的表达形式。
数据处理模块100将卷积神经网络计算的输入数据从浮点数转为定点数,且转化后的定点数为无符号8bit整数,从而减少了卷积神经网络在进行计算时对硬件逻辑资源的消耗。
卷积神经网络的输入数据是由多个数据组成的多层三维矩阵数据结构,包括a行b列c层,在卷积神经网络的计算中,通常将这种多层三维矩阵数据结构称为输入特征图。如图2所示,表示一个包括6行6列3层的输入特征图,其大小记为6*6*3,总共有108个数据(为了便于描述,图2中的数据都以简单整数的形式表示)。
卷积神经网络在进行计算时,并不是直接对输入特征图的全部数据同时进行计算,而是每次取d行e列的数据进行卷积计算,从输入特征图取出的包括d行e列构成的二维矩阵数据结构则称为计算特征图。
特征图拆分模块200的具体工作过程为:用一个包括d行e列的取数框从输入特征图中每一层的左上角开始取数据,取一次则形成一个计算特征图,下一个计算特征图是在上一个计算特征图的基础上将取数框右移一定的列数形成的,当取数框右移到输入特征图的右边界时,则重新返回输入特征图的左边界并下移一行继续取数形成计算特征图,直到取完输入特征图每一层的最后一个数据。取数框右移的列数则称为步长,步长越小,则表示取数框右移的列数越少,卷积神经网络的计算精度越高,相应的计算量也越大。
特征图拆分模块200根据根据第一预设规则将输入数据拆分为多个计算特征图qdj,也可以是,特征图拆分模块200根据预设步长将输入特征图拆分为多个包括3*3矩阵数据结构的计算特征图qdj。示例性的,输入特征图大小为6*6*3,计算特征图大小为3*3,预设步长为1,则特征图拆分模块200可以将输入特征图的每一层都拆分为16个大小为3*3的计算特征图,则输入特征图总共可以拆分为48个计算特征图qd1~qd48,也可以记为
Figure BDA0002322626630000081
其中,c表示计算特征图所在的输入特征图的层数,显然,c的取值为1、2和3。如图3,示意了特征图拆分模块200将输入特征图的第一层拆分为16个大小为3*3的计算特征图
Figure BDA0002322626630000082
第一计算模块300进行计算时,首先对输入特征图第一层包括的所有计算特征图
Figure BDA0002322626630000083
进行计算,得到第一个第一输出特征图qo1,然后对输入特征图第二层包括的所有计算特征图
Figure BDA0002322626630000084
进行计算,得到第二个第一输出特征图qo2,再对输入特征图第三层包括的所有计算特征图
Figure BDA0002322626630000085
进行计算,得到第三个第一输出特征图qo3,由此可以看出,输入特征图的一层经过第一计算模块300计算后可以得到一个第一输出特征图,第一输出特征图的个数与输入特征图的层数相等。
累加模块400依次对第一计算模块300输出的所有第一输出特征图qoi进行累加得到第二输出特征图。累加模块400采用FIFO(First Input First Output,先进先出)缓存结构,先使用FIFO缓存第一个第一输出特征图qo1的数据,当第一计算模块300输出第二个第一输出特征图qo2的数据时,累加模块400先将第一个第一输出特征图qo2与第二个第一输出特征图qo1相加,再将qo1+qo2的结果缓存到FIFO中;当第一计算模块300输出第三个第一输出特征图qo3的数据时,累加模块400先计算qo1+qo2+qo3的结果,再将qo1+qo2+qo3的结果缓存到FIFO中。
第二计算模块500对第二输出特征图中的数据进行偏置和量化处理,从而得到神经网络加速系统最终的输出数据,输出数据仍然是无符号8bit定点数。
本发明实施例一提供的一种神经网络加速系统通过数据处理模块,用于将卷积神经网络计算的输入数据从浮点数转为定点数;特征图拆分模块,用于根据第一预设规则将输入数据拆分为多个计算特征图qdj;第一计算模块,用于根据第二预设规则对每个计算特征图qdj进行计算得到多个第一输出特征图qoi;累加模块,用于依次对所有第一输出特征图qoi进行累加得到第二输出特征图;第二计算模块,用于根据第三预设规则对所述第二输出特征图进行处理得到输出数据。通过将浮点数转化为定点数,使得卷积神经网络的计算在需要更少的逻辑资源的同时不影响计算的准确性,占用的存储资源也大幅减少,数据传输速度加快。
实施例二
图4为本发明实施例二提供的一种神经网络加速系统的结构示意图,本实施例是对上述实施例中第一计算模块的进一步细化。如图4所示,本发明实施例二提供的一种神经网络加速系统包括:数据处理模块100、特征图拆分模块200、第一计算模块300、累加模块400和第二计算模块500,其中,第一计算模块300包括:权值存储器310、卷积计算单元320、支路加法树单元330和第一输出特征图计算单元340。
权值存储器310用于存储权值qw;
卷积计算单元320用于根据所述计算特征图qdj和所述权值qw进行卷积计算得到第一输出特征图的第一部分
Figure BDA0002322626630000101
支路加法树单元330用于根据第四预设规则对将所述计算特征图qdj进行计算得到第一输出特征图的第二部分
Figure BDA0002322626630000102
第一输出特征图计算单元340用于将所述第一输出特征图的第一部分
Figure BDA0002322626630000103
和所述第一输出特征图的第二部分
Figure BDA0002322626630000104
相减得到所述第一输出特征图qoi
具体的,卷积神经网络的卷积计算实际上是输入数据与权值数据之间的乘加运算,输入数据由输入特征图拆分成的多个计算特征图表示,相应的,权值数据在进行计算时也通过权值表示,权值是一个包括d行e列c层构成的三维矩阵数据结构,将权值记为qw,那么权值的一层(包括d行e列的二维矩阵数据结构)记为qwc(其中,c表示包括d行e列的二维矩阵数据结构所在的层数)在进行计算时,输入计算图的一层数据与权值对应层的数据进行计算得到一层输出数据(即一个第一输出特征图的第一部分)。
在进行计算之前,权值存储器310内存储的权值qw仍然要经过数据处理模块100的处理,通过数据处理模块100将权值qw由浮点数转化为无符号8bit整数。
权值qw的大小决定计算特征图qdj的大小,即,特征图拆分模块200是根据权值qw的大小和预设步长将输入数据拆分成了多个计算特征图qdj
卷积计算单元320对多个计算特征图qdj和权值qw进行乘加计算,得到第一输出特征图的第一部分
Figure BDA0002322626630000111
如图3所示,以6*6*3的输入特征图中的第一层为例,权值qw的大小为3*3*3,预设步长为1,特征图拆分模块200将输入特征图的第一层拆分为16个3*3大小的计算特征图
Figure BDA0002322626630000112
每个计算特征图与权值qw的第一层qw1进行乘加运算得到一个卷积输出数据,则卷积计算单元320对计算特征图
Figure BDA0002322626630000113
和权值qw的第一层qw1进行乘加计算后得到一个4*4大小的卷积输出特征图,将这个卷积输出特征图称为第一个第一输出特征图的第一部分
Figure BDA0002322626630000114
支路加法树单元330对一个计算特征图中的所有数据累加然后乘以量化参数Zw,得到一个支路输出数据,则对计算特征图
Figure BDA0002322626630000115
都进行计算得到一个4*4大小的支路输出特征图,将这个支路输出特征图称为第一个第一输出特征图的第二部分
Figure BDA0002322626630000116
第一输出特征图计算单元340将第一个第一输出特征图的第一部分
Figure BDA0002322626630000117
和第一个第一输出特征图的第二部分
Figure BDA0002322626630000118
相减得到第一个第一输出特征图qo1
同样的,卷积计算单元320对输入特征图的第二层拆分的计算特征图
Figure BDA0002322626630000119
和权值qw的第二层qw2进行乘加计算得到第二个第一输出特征图的第一部分
Figure BDA00023226266300001110
支路加法树单元330对计算特征图
Figure BDA00023226266300001111
都进行计算得到第二个第一输出特征图的第二部分
Figure BDA00023226266300001112
第一输出特征图计算单元340将第二个第一输出特征图的第一部分
Figure BDA00023226266300001113
和第二个第一输出特征图的第二部分
Figure BDA00023226266300001114
相减得到第二个第一输出特征图qo2。卷积计算单元320对输入特征图的第三层拆分的计算特征图
Figure BDA00023226266300001115
和权值qw的第三层qw3进行乘加计算得到第三个第一输出特征图的第一部分
Figure BDA00023226266300001116
支路加法树单元330对计算特征图
Figure BDA00023226266300001117
都进行计算得到第三个第一输出特征图的第二部分
Figure BDA00023226266300001118
第一输出特征图计算单元340将第三个第一输出特征图的第一部分
Figure BDA0002322626630000121
和第三个第一输出特征图的第二部分
Figure BDA0002322626630000122
相减得到第三个第一输出特征图qo3
第一输出特征图计算单元340的输出数据(即第一输出特征图qoi中的数据)可由式(2-1)表示。
Figure BDA0002322626630000123
其中,
Figure BDA0002322626630000124
表示第c个第一输出特征图中的第j个数据。Zw为预设参数,N为第j个计算特征图qdj的数据总数,
Figure BDA0002322626630000125
表示输入特征图第c层拆分的第j个计算特征图qdj的第k个数据,
Figure BDA0002322626630000126
表示权值中第c层的第k个数据。在本申请中,计算特征图或权值大小为3*3,故N=9。由于一层输入特征图中的一个计算特征图经过卷积计算单元320和支路加法树单元330的计算后得到第一输出特征图中的一个数据,所以第一输出特征图计算单元340的输出数据qoj的数量与计算特征图qdj的数量相同。
累加模块400依次对第一计算模块300输出的第一输出特征图qo1~qo3进行累加得到第二输出特征图。
累加模块400的输出数据(即第二输出特征图中的数据)可由式(2-2)表示。
Figure BDA0002322626630000127
其中,qej表示第二输出特征图中的第j个数据,
Figure BDA0002322626630000128
表示第c个第一输出特征图中的第j个数据,C表示第一输出特征图的总个数,本实施例中C=3。
第二计算模块500对第二输出特征图中的数据进行偏置和量化处理,从而得到神经网络加速系统最终的输出数据。
本发明实施例二提供的神经网络加速系统通过卷积计算单元和支路加法树单元使第一计算模块的计算分为两个部分,最后通过第一输出特征图计算单元将卷积计算单元的输出结果和支路加法树单元的输出结果相加得到第一计算单元的最终输出结果,将第一计算模块分成了两个简单乘加计算模块的结合,简化计算过程,加快计算速度。
实施例三
图5为本发明实施例三提供的一种神经网络加速系统的结构示意图,本实施例是对上述实施例中第二计算模块的进一步细化。如图5所示,本发明实施例二提供的一种神经网络加速系统包括:数据处理模块100、特征图拆分模块200、第一计算模块300、累加模块400和第二计算模块500,其中,第一计算模块300包括:权值存储器310、卷积计算单元320、支路加法树单元330和第一输出特征图计算单元340;第二计算模块500包括:偏置模块510和量化模块520。
偏置模块510用于将所述第二输出特征图加上预设偏置参数,得到输出偏置特征图。
具体的,偏置模块510的输出数据(即输出偏置特征图中的数据)可由式(3-1)表示。
Figure BDA0002322626630000131
其中,qbj表示输出偏置特征图中的第j个数据,qej表示第二输出特征图中的第j个数据,qbias为预设偏置参数。
量化模块520用于将所述输出偏置特征图与预设量化参数进行计算,得到输出数据。最终输出数据仍然为无符号8bit整数。
具体的,量化模块520的输出数据(即最终输出数据)可由式(3-2)表示。
Figure BDA0002322626630000141
其中,Qj表示第j个输出数据,也可以看成是对输出偏置特征图中的第j个数据进行量化后的输出数据,Zo为第一预设量化参数,M为第二预设量化参数。
可选的,卷积神经网络通常包括多个卷积计算单元,即第一计算模块300通常包含多个卷积计算单元320,每个卷积计算单元320对应的权值不一定相同,故当卷积神经网络包含多个卷积计算单元320时,累加模块400输出多个第二输出特征图,每个第二输出特征图对应的预设偏置参数都不同,故偏置模块510的预设偏置参数应该根据第二输出特征图进行设置。
本发明实施例三通过偏置模块和量化模块完成第二输出特征图的后续计算,将仿射量化应用到神经网络加速系统中,降低了神经网络加速系统硬件结构优化后对计算准确性的影响。
实施例四
图6为本发明实施例四提供的一种神经网络加速系统的结构示意图,本实施例是对上述实施例中数据处理模块的进一步细化。如图6所示,本发明实施例四提供的一种神经网络加速系统包括:数据处理模块100、特征图拆分模块200、第一计算模块300、累加模块400和第二计算模块500,其中,第一计算模块300包括:权值存储器310、卷积计算单元320、支路加法树单元330和第一输出特征图计算单元340;第二计算模块500包括:偏置模块510和量化模块520;数据处理模块100包括:第一数据处理单元110和第二数据处理单元120。
第一数据处理单元110用于将卷积神经网络计算的输入数据从浮点数转为带符号定点数。
具体的,第一数据处理单元110根据式(4-1)将浮点数转为带符号定点数,
Figure BDA0002322626630000151
其中,round(x)表示对数据x的取值进行四舍五入,r为卷积神经网络的输入数据为浮点数时的数据,qint为浮点数转化后的带符号定点数,Z为qint的零点数据,即qint=0时,
Figure BDA0002322626630000152
S为转化参数,且S由式(4-2)计算
Figure BDA0002322626630000153
其中,n为转化精度,表示转化后的qint的位数,本申请中n=8。
第二数据处理单元120用于将带符号定点数转化为无符号定点数。
具体的,第二数据处理单元120根据式(4-3)将带符号定点数转化为无符号定点数。
q=clamp(0,2n-1,qint) (4-3)
其中,clamp函数的用法如式(4-4)所示。
Figure BDA0002322626630000154
本发明实施例四提供的一种神经网络加速系统通过第一数据处理单元将卷积神经网络的输入数据从浮点数转为带符号定点数,第二数据处理单元将带符号定点数转化为无符号定点数,使得神经网络加速系统进行计算的数据所占存储空间答复减小,同时降低了神经网络加速系统硬件逻辑资源的消耗。
实施例五
图7为本发明实施例五提供的一种神经网络加速方法的流程示意图,可适用于卷积神经网络的计算,该方法可由本发明任意实施例提供的一种神经网络加速系统实现,本发明实施例五中未详尽描述的内容可以参考本发明任意系统实施例中的描述。
如图7所示,本发明实施例五提供的一种神经网络加速方法包括:
S710、将卷积神经网络计算的输入数据从浮点数转为定点数。
具体的,在机器语言中的数据(实数)表示方法通常有两种:浮点数和定点数。定点数表达实数时,小数点位置是固定的,并且小数点在机器中是不表示出来的,而是事先约定在固定的位置,一旦确定小数点的位置,就不能改变,所以定点数表示的数据范围有限,相应的占用的内存空间(比特,bit)小。浮点数利用科学计数法来表达实数,即用一个尾数,一个基数,一个指数以及一个表示正负的符号来表达实数,例如,表示实数123.45的浮点数为1.2345x102,其中1.2345为尾数,10为基数,2为指数。浮点数通过指数达到了浮动小数点的效果,从而可以灵活地表达大范围的数据,相应的占用的内存空间大。卷积神经网络是一种模拟人脑的卷积神经网络以期能够实现类人工智能的机器学习技术,其数据通常情况下都采用浮点数的表达形式。
将卷积神经网络计算的输入数据从浮点数转为定点数,且转化后的定点数为无符号8bit整数,从而减少了卷积神经网络在进行计算时对硬件逻辑资源的消耗。
进一步的,步骤S710包括S711~S711,具体地:
S711、将卷积神经网络计算的输入数据从浮点数转为带符号定点数;
S712、将带符号定点数转化为无符号定点数。
S720、根据第一预设规则将输入数据拆分为多个计算特征图qdj
具体的,输入数据表示成输入特征图的形式,根据第一预设规则将输入数据拆分为多个计算特征图qdj包括:根据预设步长将输入特征图拆分为多个包括3*3矩阵数据结构的计算特征图qdj。输入特征图是一个包括a行b列c层的三维矩阵数据结构,如图2所示,为一个6*6*3大小的输入特征图。计算特征图是包括d行e列二维矩阵数据结构,输入特征图的每一层都可以拆分为多个3*3大小的计算特征图。用一个包括d行e列的取数框从输入特征图中每一层的左上角开始取数据,取一次则形成一个计算特征图,下一个计算特征图是在上一个计算特征图的基础上将取数框右移一定的列数形成的,当取数框右移到输入特征图的右边界时,则重新返回输入特征图的坐边界并下移一行继续取数形成计算特征图,直到取完输入特征图每一层的最后一个数据。取数框右移的列数则称为步长,步长越小,则表示取数框右移的列数越少,卷积神经网络的计算精度越高,相应的计算量也越大。
示例性的,输入特征图大小为6*6*3,计算特征图大小为3*3,预设步长为1,则特征图拆分模块200可以将输入特征图的每一层都拆分为16个大小为3*3的计算特征图,则输入特征图总共可以拆分为48个计算特征图qd1~qd48,也可以记为
Figure BDA0002322626630000171
其中,c表示计算特征图所在的输入特征图的层数,显然,c的取值为1、2和3。如图3,示意了输入特征图的第一层拆分为16个大小为3*3的计算特征图
Figure BDA0002322626630000172
S730、根据第二预设规则对每个所述计算特征图qdj进行计算得到多个第一输出特征图qoi
具体的,首先对输入特征图第一层包括的所有计算特征图
Figure BDA0002322626630000181
进行计算,得到第一层(或第一个)第一输出特征图qo1,然后对输入特征图第二层包括的所有计算特征图
Figure BDA0002322626630000182
进行计算,得到第二层(或第二个)第一输出特征图qo2,再对输入特征图第三层包括的所有计算特征图
Figure BDA0002322626630000183
进行计算,得到第三层(或第三个)第一输出特征图qo3,由此可以看出,输入特征图的一层经过计算后可以得到一个第一输出特征图,第一输出特征图的个数与输入特征图的层数相等。
进一步的,该步骤S730包括S731~S734,具体地:
S731、获取所述计算特征图qdj对应的权值qw;
S732、根据所述计算特征图qdj和所述权值qw进行卷积计算得到第一输出特征图的第一部分
Figure BDA0002322626630000184
S733、根据第四预设规则对所述计算特征图qdj进行计算得到第一输出特征图的第二部分
Figure BDA0002322626630000185
S734、将所述第一输出特征图的第一部分
Figure BDA0002322626630000186
和所述第一输出特征图的第二部分
Figure BDA0002322626630000187
相减得到所述第一输出特征图qoi
S740、依次对所有第一输出特征图qoi进行叠加得到第二输出特征图。
具体的,先使用FIFO缓存第一个第一输出特征图qo1的数据,当得到第二个第一输出特征图qo2的数据时,先将第一个第一输出特征图qo2与第二个第一输出特征图qo1相加,再将qo1+qo2的结果缓存到FIFO中;当得到第三个第一输出特征图qo3的数据时,计算qo1+qo2+qo3的结果,再将qo1+qo2+qo3的结果缓存到FIFO中。
S750、根据第三预设规则对所述第二输出特征图进行处理得到输出数据。
具体的,对第二输出特征图中的数据进行偏置和量化处理,从而得到神经网络加速系统最终的输出数据,输出数据仍然是无符号8bit定点数。
进一步的,该步骤S750包括S751~S752,具体地:
S751、将所述第二输出特征图加上偏置参数,得到输出偏置特征图;
S752、将所述输出偏置特征图与量化参数进行计算,得到输出数据。
本发明实施例五提供的一种神经网络加速方法通过将卷积神经网络计算的输入数据从浮点数转为定点数;根据第一预设规则将输入数据拆分为多个计算特征图qdj;根据第二预设规则对每个所述计算特征图qdj进行计算得到多个第一输出特征图qoi;依次对所有第一输出特征图qoi进行叠加得到第二输出特征图;根据第三预设规则对所述第二输出特征图进行处理得到输出数据。通过将浮点数转化为定点数,使得卷积神经网络的计算在需要更少的逻辑资源的同时不影响计算的准确性,占用的存储资源也大幅减少,数据传输速度加快。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (5)

1.一种神经网络加速系统,其特征在于,包括:
数据处理模块,用于将卷积神经网络计算的输入数据从浮点数转为定点数;
特征图拆分模块,用于根据第一预设规则将输入数据拆分为多个计算特征图qdj
第一计算模块,用于根据第二预设规则对每个计算特征图qdj进行计算得到多个第一输出特征图qoi
累加模块,用于依次对所有第一输出特征图qoi进行累加得到第二输出特征图;
第二计算模块,用于根据第三预设规则对所述第二输出特征图进行处理得到输出数据,所述输出数据为定点数;
其中,所述第一计算模块包括:
权值存储器,用于存储权值qw;
卷积计算单元,用于根据所述计算特征图qdj和所述权值qw进行卷积计算得到第一输出特征图的第一部分
Figure QLYQS_1
支路加法树单元,用于根据第四预设规则对将所述计算特征图qdj进行计算得到第一输出特征图的第二部分
Figure QLYQS_2
第一输出特征图计算单元,用于将所述第一输出特征图的第一部分
Figure QLYQS_3
和所述第一输出特征图的第二部分
Figure QLYQS_4
相减得到所述第一输出特征图qoi
其中,所述数据处理模块还用于将所述权值存储器内存储的权值qw转化为定点数;
所述第二计算模块包括:
偏置模块,用于将所述第二输出特征图加上预设偏置参数,得到输出偏置特征图;
量化模块,用于将所述输出偏置特征图与预设量化参数进行计算,得到输出数据;
其中,所述根据第四预设规则对将所述计算特征图qdj进行计算得到第一输出特征图的第二部分
Figure QLYQS_5
包括:
对所述计算特征图qdj的所有数据累加,并乘以量化参数Zw得到支路输出特征图,作为第一输出特征图的第二部分
Figure QLYQS_6
2.如权利要求1所述的系统,其特征在于,所述特征图拆分模块具体用于:
根据预设步长将输入数据拆分为多个包括3*3矩阵数据结构的计算特征图qdj
3.如权利要求1所述的系统,其特征在于,所述数据处理模块包括:
第一数据处理单元,用于将卷积神经网络计算的输入数据从浮点数转为带符号定点数;
第二数据处理单元,用于将带符号定点数转化为无符号定点数。
4.一种神经网络加速方法,其特征在于,包括:
将卷积神经网络计算的输入数据从浮点数转为定点数;
根据第一预设规则将输入数据拆分为多个计算特征图qdj
根据第二预设规则对每个所述计算特征图qdj进行计算得到多个第一输出特征图qoi
依次对所有第一输出特征图qoi进行叠加得到第二输出特征图;根据第三预设规则对所述第二输出特征图进行处理得到输出数据;
其中,所述根据第二预设规则对每个所述计算特征图qdj进行计算得到多个第一输出特征图qoi包括:
获取所述计算特征图qdj对应的权值qw,并将所述权值qw转换为定点数以参与卷积计算;
根据所述计算特征图qdj和所述权值qw进行卷积计算得到第一输出特征图的第一部分
Figure QLYQS_7
根据第四预设规则对所述计算特征图qdj进行计算得到第一输出特征图的第二部分
Figure QLYQS_8
将所述第一输出特征图的第一部分
Figure QLYQS_9
和所述第一输出特征图的第二部分
Figure QLYQS_10
相减得到所述第一输出特征图qoi
其中,所述根据第三预设规则对所述第二输出特征图进行处理得到输出数据包括:
将所述第二输出特征图加上偏置参数,得到输出偏置特征图;
将所述输出偏置特征图与量化参数进行计算,得到输出数据;
其中,所述根据第四预设规则对将所述计算特征图qdj进行计算得到第一输出特征图的第二部分
Figure QLYQS_11
包括:
对所述计算特征图qdj的所有数据累加,并乘以量化参数Zw得到支路输出特征图,作为第一输出特征图的第二部分
Figure QLYQS_12
5.如权利要求4所述的方法,其特征在于,所述将卷积神经网络计算的输入数据从浮点数转为定点数包括:
将卷积神经网络计算的输入数据从浮点数转为带符号定点数;
将带符号定点数转化为无符号定点数。
CN201911304163.8A 2019-12-17 2019-12-17 一种神经网络加速系统和方法 Active CN111091183B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911304163.8A CN111091183B (zh) 2019-12-17 2019-12-17 一种神经网络加速系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911304163.8A CN111091183B (zh) 2019-12-17 2019-12-17 一种神经网络加速系统和方法

Publications (2)

Publication Number Publication Date
CN111091183A CN111091183A (zh) 2020-05-01
CN111091183B true CN111091183B (zh) 2023-06-13

Family

ID=70395071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911304163.8A Active CN111091183B (zh) 2019-12-17 2019-12-17 一种神经网络加速系统和方法

Country Status (1)

Country Link
CN (1) CN111091183B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737193B (zh) * 2020-08-03 2020-12-08 深圳鲲云信息科技有限公司 数据存储方法、装置、设备和存储介质
CN112232499B (zh) * 2020-10-13 2022-12-23 华中光电技术研究所(中国船舶重工集团公司第七一七研究所) 卷积神经网络加速器
CN115994561B (zh) * 2023-03-22 2023-06-16 山东云海国创云计算装备产业创新中心有限公司 卷积神经网络加速方法、系统、存储介质、装置及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063825A (zh) * 2018-08-01 2018-12-21 清华大学 卷积神经网络加速装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017031630A1 (zh) * 2015-08-21 2017-03-02 中国科学院自动化研究所 基于参数量化的深度卷积神经网络的加速与压缩方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109063825A (zh) * 2018-08-01 2018-12-21 清华大学 卷积神经网络加速装置

Also Published As

Publication number Publication date
CN111091183A (zh) 2020-05-01

Similar Documents

Publication Publication Date Title
CN111684473B (zh) 提高神经网络阵列的性能
CN111091183B (zh) 一种神经网络加速系统和方法
JP7349835B2 (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
CN107340993B (zh) 运算装置和方法
Yepez et al. Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks
CN110852416B (zh) 基于低精度浮点数数据表现形式的cnn硬件加速计算方法及系统
JP7325158B2 (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
CN109214509B (zh) 一种用于深度神经网络高速实时量化结构和运算实现方法
CN108932548A (zh) 一种基于fpga的稀疏度神经网络加速系统
CN111989697A (zh) 用于并行和分布式张量计算的神经硬件加速器
CN109146067B (zh) 一种基于FPGA的Policy卷积神经网络加速器
CN110852434B (zh) 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置
CN112508125A (zh) 一种图像检测模型的高效全整数量化方法
CN111696149A (zh) 针对基于cnn的立体匹配算法的量化方法
US11657285B2 (en) Methods, systems, and media for random semi-structured row-wise pruning in neural networks
CN110543936B (zh) 一种cnn全连接层运算的多并行加速方法
CN109934336A (zh) 基于最优结构搜索的神经网络动态加速平台设计方法及神经网络动态加速平台
CN109214502B (zh) 神经网络权重离散化方法和系统
KR20190140841A (ko) 확률 적응적 자원 할당을 통한 신경망 하드웨어 가속
Qi et al. Learning low resource consumption cnn through pruning and quantization
CN112734020A (zh) 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法
CN112561050A (zh) 一种神经网络模型训练方法及装置
CN115238863A (zh) 一种卷积神经网络卷积层的硬件加速方法、系统及应用
CN113052299B (zh) 基于通信下界的神经网络存内计算装置及加速方法
CN107220025A (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