CN110598839A - 卷积神经网络***和卷积神经网络量化的方法 - Google Patents

卷积神经网络***和卷积神经网络量化的方法 Download PDF

Info

Publication number
CN110598839A
CN110598839A CN201810603231.XA CN201810603231A CN110598839A CN 110598839 A CN110598839 A CN 110598839A CN 201810603231 A CN201810603231 A CN 201810603231A CN 110598839 A CN110598839 A CN 110598839A
Authority
CN
China
Prior art keywords
convolutional layer
quantization
quantized
convolution
layer
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.)
Pending
Application number
CN201810603231.XA
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201810603231.XA priority Critical patent/CN110598839A/zh
Priority to PCT/CN2019/090660 priority patent/WO2019238029A1/zh
Publication of CN110598839A publication Critical patent/CN110598839A/zh
Pending legal-status Critical Current

Links

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
    • 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

Landscapes

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

Abstract

本申请提供了一种卷积神经网络***和卷积神经网络量化的方法,该***包括:量化模块,用于对该***的第i层卷积层的输入数据、该第i层卷积层的权重以及偏置分别进行量化,i为正整数;卷积模块,用于对量化后的该第i层卷积层的输入数据、量化后的该权重以及量化后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果。本申请提供的卷积神经网络***,通过对卷积层中需要量化的卷积层的权重、偏置以及输入该卷积层的输入数据进行量化,利用量化后的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到每一层卷积层的计算结果。降低卷积神经网络的计算量,提高了卷积神经网络量化的精度。

Description

卷积神经网络***和卷积神经网络量化的方法
技术领域
本申请涉及卷积神经网络领域,更为具体的,涉及一种卷积神经网络***和卷积神经网络量化的方法。
背景技术
深度卷积神经网络在训练完成后拥有几百甚至上千万的参数,例如,卷积神经网络模型参数中包括的权重参数和偏置参数,还有每一层卷积层的特征图参数等。并且模型参数和特征图参数的存储都是基于32位比特进行的。由于参数较多并且数据量较大,整个卷积计算过程需要消耗大量的存储和计算资源。而深度卷积神经网络的发展朝着“更深、更大、更复杂”的方向发展,就深度卷积神经网络的模型尺寸来说,根本无法移植到手机端或嵌入式芯片当中,就算是想通过网络传输,较高的带宽占用率也往往成为工程实现的难题。
目前,对于在不降低卷积神经网络精度的前提下降低卷积神经网络的复杂度的解决方案主要是利用对卷积神经网络的参数进行量化的方法实现。但是目前量化的方法会造成卷积神经网络的精度下降,影响用户体验。
发明内容
本申请提供了一种卷积神经网络***和卷积神经网络量化的方法,通过对卷积层中需要量化的卷积层的权重、偏置以及输入该卷积层的输入数据进行量化,利用量化后的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到每一层卷积层的计算结果。降低卷积神经网络的计算量,提高了卷积神经网络量化的精度。
第一方面,提供了一种卷积神经网络***,包括:量化模块,用于对该***的第i层卷积层的输入数据、该第i层卷积层的权重以及偏置分别进行量化,i为正整数;卷积模块,用于对量化后的该第i层卷积层的输入数据、量化后的该权重以及量化后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果。
第一方面提供的卷积神经网络***,通过量化模块对卷积层中需要量化的卷积层的权重、偏置以及输入该卷积层的输入数据进行量化,卷积模块利用量化后的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到每一层卷积层的计算结果。可以使得利用该***得到的计算结果更加准确,降低卷积神经网络的计算量,同时可以降低卷积神经网络模型以及卷积计算结果的存储数据量,提高了卷积神经网络量化的精度。便于硬件设计上的实现。对于模型压缩中的目标检测过程,提高了目标检测的精度和效率。
在第一方面的一种可能的实现方式中,该卷积模块包括:乘法器,用于对该量化后的该第i层卷积层的输入数据以及该量化后的该权重进行乘法运算;加法器,用于对该乘法器的输出结果与该量化后的该偏置进行加法运算,得到该第i层卷积层的卷积结果。
在第一方面的一种可能的实现方式中,当i等于1时,该第i层卷积层的输入数据为原始输入图片;或者,当i大于1时,该第i层卷积层的输入数据为特征图数据。
在第一方面的一种可能的实现方式中,当待执行第i+1层卷积计算的数据为待量化的数据时,该量化模块还用于:将该第i层卷积层的卷积结果进行与该权重的量化以及该偏置的量化对应的反量化,其中,该反量化后的该第i层卷积层的卷积结果为该第i+1层卷积层的输入数据。在该实现方式中,保持了量化的可逆性和模型的准确性,进一步的提高该卷积神经网络的准确性和精度。
在第一方面的一种可能的实现方式中,当待执行的第i+1层卷积计算的数据不是待量化的数据时,该量化模块还用于:将该第i层卷积层的卷积结果进行与该权重的量化以及该偏置的量化对应的反量化;将该反量化后的得到的结果进行特征图反量化;该卷积模块还用于:对该特征图反量化后的结果、该第i+1层卷积层的权重以及该第i+1层卷积层的偏置进行卷积计算,得到该第i+1层卷积层的卷积结果。在该实现方式中,保持量化的可逆性,进一步的提高该卷积神经网络的准确性和精度。
在第一方面的一种可能的实现方式中,该量化模块还用于:对量化后的该偏置进行修正;该卷积模块具体用于:对量化后的该第i层卷积层的输入数据、量化后的该权重以及该修正后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果。在该实现方式中,在保证了量化的可逆性的基础上,进一步的提高量化的精度。保证模型的精度和准确性。
在第一方面的一种可能的实现方式中,该***还包括:量化参数获取模块,用于获取该第i层卷积层的输入数据的量化参数、该第i层卷积层的该权重的量化参数以及该偏置的量化参数;该量化模块具体用于:根据该第i层卷积层的输入数据的量化参数对该第i层卷积层的输入数据进行量化,根据该第i层卷积层的权重的量化参数对该权重进行量化,根据该第i层卷积层的偏置的量化参数对该偏置进行量化。
第二方面,提供了一种卷积神经网络量化的方法,包括:对该卷积神经网络的第i层卷积层的输入数据、该第i层卷积层的权重以及偏置分别进行量化,i为正整数;对量化后的该第i层卷积层的输入数据、量化后的该权重以及量化后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果。
第二方面提供的卷积神经网络量化的方法,通过对该卷积层中需要量化的卷积层的权重、偏置以及输入该卷积层的输入数据进行量化,利用量化后的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到每一层卷积层的计算结果。可以使得得到的计算结果更加准确,降低卷积神经网络的计算量,同时可以降低卷积神经网络模型以及卷积计算结果的存储数据量,提高了卷积神经网络量化的精度。便于硬件设计上的实现。
在第二方面的一种可能的实现方式中,该对量化后的该第i层卷积层的输入数据、量化后的该权重以及量化后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果,包括:对该量化后的该第i层卷积层的输入数据以及该量化后的该权重进行乘法运算;对该乘法运算的结果与该量化后的该偏置进行加法运算,得到该第i层卷积层的卷积结果。
在第二方面的一种可能的实现方式中,当i等于1时,该第i层卷积层的输入数据为原始输入图片;或者,当i大于1时,该第i层卷积层的输入数据为特征图数据。
在第二方面的一种可能的实现方式中,当待执行第i+1层卷积计算的数据为待量化的数据时,该方法还包括:将该第i层卷积层的卷积结果进行与该权重的量化以及该偏置的量化对应的反量化,其中,该反量化后的该第i层卷积层的卷积结果为该第i+1层卷积层的输入数据。
在第二方面的一种可能的实现方式中,当待执行的第i+1层卷积计算的数据不是待量化的数据时,该方法还包括:将该第i层卷积层的卷积结果进行与该权重的量化以及该偏置的量化对应的反量化;将该反量化后的得到的结果进行特征图反量化;对该特征图反量化后的结果、该第i+1层卷积层的权重以及该第i+1层卷积层的偏置进行卷积计算,得到该第i+1层卷积层的卷积结果。
在第二方面的一种可能的实现方式中,该方法还包括:对量化后的该偏置进行修正;该对量化后的该第i层卷积层的输入数据、量化后的该权重以及量化后的该偏置进行卷积计算,包括:对量化后的该第i层卷积层的输入数据、量化后的该权重以及该修正后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果。
在第二方面的一种可能的实现方式中,该方法还包括:获取该第i层卷积层的输入数据的量化参数、该第i层卷积层的该权重的量化参数以及该偏置的量化参数;该对该卷积神经网络的第i层卷积层的输入数据、该第i层卷积层的权重以及偏置分别进行量化,包括:根据该第i层卷积层的输入数据的量化参数对该第i层卷积层的输入数据进行量化,根据该第i层卷积层的权重的量化参数对该权重进行量化,根据该第i层卷积层的偏置的量化参数对该偏置进行量化。
第三方面,提供一种芯片,该芯片包括量化模块和卷积模块,用于支持该新芯片执行上述方法中相应的功能。
第四方面,提供了一种计算机***,该计算机***包括量化模块和卷积模块,用于支持该新芯片执行上述方法中相应的功能。
第五方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于执行上述第二方面或第二方面中的任一种可能的实现方式的方法的指令。
第六方面,提供一种计算机程序产品,该产品包括用于执行上述第一方面至第四方面、或第二方面或者第二方面中的任一种可能的实现方式的方法的指令。
附图说明
图1是本申请一个实施例的卷积神经网络***结构的示意性框图。
图2是本申请另一个实施例的卷积神经网络***结构的示意性框图。
图3是本申请又一个实施例的卷积神经网络***结构的示意性框图。
图4是本申请另一个实施例的卷积神经网络***结构的示意性框图。
图5是本申请一个实施例的卷积神经网络量化的方法的示意性流程图。
图6是本申请另一个实施例的卷积神经网络量化的方法的示意性流程图。
图7是本申请又一个实施例的卷积神经网络量化的方法的示意性流程图。
图8是本申请另一个实施例的卷积神经网络量化的方法的示意性流程图。
图9是本申请另一个实施例的卷积神经网络量化的方法的示意性流程图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
首先,对本申请涉及的一些术语进行解释说明。
量化:量化是将一组原始值域范围内的数,通过一个数学变换将原始值域映射到另一个目标值域范围的过程。可采用的方法如查表、移位、截位等。其中往往采用线性变换,通常使用乘法完成这个变换。
反量化:对量化过后的数,基于之前的线性变换(量化过程),反变换到原来的值域范围的过程。反量化能够保证***采用量化后的数据按照某一个计算规则进行计算,在反量化后,其结果仍然能和利用原始值域范围内的数据按照相同的计算规则进行计算的计算结果保持非常相近的值域范围,基于这一点使得卷积神经网络精度的损失较小。
可逆性:在量化和反量化过程中,满足量化和反量化能够互为反变换。即经过量化后的数据,在反量化后能够保持数据与原始数据近似相等。
量化计算的可逆性:数据经过量化过后,每一层数据都得到一个放大乘数,带着这个放大乘数进行卷积后的乘累加输出需要除去同样一个放大乘数(量化参数),以保证整个计算过程的值域可逆以及数值范围近似。而可逆计算的前提是基于卷积计算乘累加是线性过程。
再训练(retrain)方法:是指在已经训练好的卷积神经网络模型(下文简称为“模型”)基础上,由于卷积神经网络某些特性需要微调,故在稍微修改网络特性后的模型基础上再次训练的过程,属于网络训练上的微调。
超参数:深度学习中的通用概念,就是指模型训练过程的配置参数。
深度卷积神经网络中的卷积层一般包括多层。在神经网络训练完成得到的模型中,存在几百甚至上千万的参数,该参数可以包括卷积神经网络模型中每一层卷积层的权重参数、偏置参数等,还可以包括每一层卷积层的特征图参数等。由于参数较多并且数据量较大,整个卷积计算过程需要消耗大量的存储和计算资源。目前,对于在不降低卷积神经网络精度的前提下降低卷积神经网络的复杂度的解决方案主要是利用对卷积神经网络的参数进行量化(quantize)的方法实现。
在进行性量化后,利用量化后的数据进行计算的结果会与利用原始数据进行计算的结果发生偏差,使得计算结果的精度降低。因此需要进行反量化的过程,即需要满足量化过程的可逆性。目前,模型量化的可逆性的计算公式(1)所示:
公式(1)中,OP代表溢出保护(Overflow Protect,OP),round代表四舍五入,FM代表特征图(Feature Map,FM),W代表权重(weight),Bias代表偏置,α和β分别对应权重(weight)和偏置(bias)的量化参数。
可以看到,在公式(1)中,乘累加∑OP(round(αW))*FM和量化后的OP(round(βBias))分别除去了对应当前卷积层的量化参数α和β。其中使用了约等号,因为在量化权重和偏置过程中存在四舍五入和溢出保护操作(例如8bit定点溢出保护)。
这种近似等价的形式称为该量化满足数学上的可逆性。后续的量化设计都是基于这样一种思路进行。
现有技术中对于模型进行量化的方案主要是针对权重和特征图的量化设计方案来达到量化的目的。现有技术中的量化方案没有涉及对偏置的量化,而偏置是模型中非常重要的一个参数。会对整个模型的精度产生非常大的影响。例如,对于卷积神经网络中的模型压缩,模型压缩的目的主要是为了降低模型的复杂度,降低模型的尺寸。模型压缩主要包括分类过程和目标检测过程。分类过程是区分图片中的这个物体是什么,而目标检测过程是首先要从图片中找出物***置,然后再判断是这个物体什么。如果按照现有技术的量化流程进行量化,对于分类过程而言,偏置的影响相对较小,但是对于目标检测过程,偏置对于结果的影响非常大,这种量化流程并不能解决目标检测过程中的量化。并且,零均值方法量化在实际特征图量化中会带来加减法,不适合硬件高效设计。
目前还有其他量化方法,但是都没有涉及对偏置的量化。使得卷积神经网络经过量化后的精度降低,影响了卷积神经网络量化后的精度,影响用户体验。
基于上述问题,本申请提供了一种卷积神经网络***,该***可以支持对偏置的量化,提高该***的计算的精度,降低卷积神经网络的计算量,同时可以降低卷积神经网络模型以及卷积计算结果的存储数据量,提高用户体验。
图1是本申请提供的卷积神经网络***的示意性框图,如图1所示,该***100包括量化模块110和卷积模块120。
量化模块110,用于对该***的第i层卷积层的输入数据(该***中第i层卷积计算的输入数据)、该第i层卷积层的权重以及偏置分别进行量化,i为正整数,该第i层卷积计算的数据为待量化的数据。
卷积模块120,用于对量化后的该第i层卷积层的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到该第i层卷积层的卷积结果。
本申请提供的卷积神经网络***,通过量化模块对卷积层中需要量化的卷积层的权重、偏置以及输入该卷积层的输入数据进行量化,卷积模块利用量化后的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到每一层卷积层的计算结果。可以使得利用该***得到的计算结果更加准确,降低卷积神经网络的计算量,同时可以降低卷积神经网络模型以及卷积计算结果的存储数据量,提高了卷积神经网络量化的精度。便于硬件设计上的实现。对于模型压缩中的目标检测过程,提高了目标检测的精度和效率。
具体而言,对于卷积神经网络,从逻辑上而言,一般情况下卷积层包括多层,每一层卷积层都有自己的卷积模型,即每一层卷积层都有自己的权重和偏置值,卷积模型可以理解为计算模型。举例来说明,例如,假设第i层卷积层(第i层卷积层为逻辑上的卷积层的概念)的卷积模型为公式(2)所示的模型:
y=∑ax+b (2)
公式(2)中,a可以理解为权重,b可以理解为偏置,x可以理解为输入到第i层卷积层的输入数据。通过公式(2)的计算,可以得到第i层卷积层的卷积结果。
量化模块110可以对该卷积神经网络中多个卷积层进行量化处理。对第i层卷积层分别进行权重、偏置以及输入数据的量化。其中,该第i层卷积计算的数据为待量化的数据。在本申请实施例中,也可以将第i层卷积层称为待量化的卷积层。第i层卷积计算的数据包括第i层卷积层的输入数据、第i层卷积层的权重以及偏置。第i层卷积层的输入数据也可以称为第i层卷积计算的输入数据,即对第i层卷积层的输入数据的量化也可称为对第i层卷积计算的输入数据的量化。量化模块110通过对该第i层卷积计算的数据的量化,分别得到第i层卷积层量化后的输入数据、量化后的权重以及量化后的偏置。对权重和偏置的量化可以看成对该第i层卷积层的卷积模型的量化。卷积模块120可以对该量化后的多个卷积层中每一层卷积层进行卷积计算,分别得到每一层卷积层的计算结果。
应理解,由于卷积神经网络的卷积层一般包括多层,但并不意味着卷积神经网络包括所有卷积层都需要进行量化处理。即在本申请提供的卷积神经网络中,可以是部分卷积层需要进行量化处理。需要进行量化处理部分卷积层可以是连续的卷积层,也可以是不连续的卷积层。例如,假设卷积层总共有10层,可以是第2至第6层需要进行量化处理,或者,也可以是2、4、7、9层卷积层需要进行量化处理,本申请实施例在此不作限制。
还应理解,卷积模块120除了可以对量化后的卷积层进行卷积计算外,还可以对不经过量化的卷积层进行卷积计算,得到卷积结果。本申请实施例在此不作限制。
还应理解,上述的公式(2)只是示例性的,仅仅是为了说明第i层卷积层的权重、偏置以及输入数据,而不应对第i层卷积层的卷积模型产生任何限制。
还应理解,该***100还可以包括其他模块,例如,输入模块以及池化模块等。用于支持该***完成卷积神经网络的其他功能。本申请实施例在此不作限制。
还应理解,该***100可以是一种芯片或者装置,该芯片或者装置可以包括量化模块110和卷积模块120等。本申请实施例在此不作限制。
可选的,作为一个实施例,当i等于1时,该第i层卷积层的输入数据为原始输入图片。
具体而言,当该第i层卷积层为第一层卷积层时,该第1层卷积层的输入数据为输入该***的原始输入图片。即量化模块110需要对输入该***的原始输入图片进行量化,并且需要对该第1层卷积层的权重和偏置进行量化。卷积模块120对该第1层卷积层量化后的原始输入图片、量化后的权重以及量化后的偏置进行卷积计算,得到该第1层卷积层的卷积计算结果。
可选的,作为一个实施例,量化模块110对输入该***的第1层卷积层的原始输入图片(image)进行量化时,可以采用公式(3)所示的量化公式进行量化。
在公式(3)中,IMG表示输入到第1层卷积层的原始输入图片,input-img是表示原始输入图片IMG的矩阵。Q(IMG)代表量化后的第1层卷积层的输入数据,γ1代表第1层特征图数据的量化参数,量化参数是在量化过程中使用的参数,相当于放大乘数。α1代表第1层卷积层权重的量化参数,W1代表第1层卷积层的权重,Bias1代表第1层卷积层的偏置。
应理解,量化模块110除了利用的上述的公式(3)对第1层卷积层的原始输入图片进行量化外,还可以利用其他公式对第1层卷积层的原始输入图片进行量化。例如,利用公式(3)的任何变形后的公式等。本申请实施例在此不作限制。
可选的,作为一个实施例,当i大于1时,该第i层卷积层的输入数据为特征图数据。
具体而言,卷积神经网路的卷积层包括多层,当i大于1时,第i层卷积层的输入数据为特征图数据。特征图数据表示某一层卷积层的计算结果,对于整个卷积神经网络而言是一个中间计算结果。对于第i层卷积层的输入数据而言,该输入数据为第i-1层卷积层的特征图数据,即为第i-1层卷积层的卷积结果。例如,假设i为5,第5层卷积层的输入数据为特征图数据。该特征图数据为第4层卷积层的卷积结果。即卷积模块120计算得到的第4层卷积层的卷积结果(第4层卷积层的特征图数据)。第4层卷积层可以为经过量化后的卷积层,也可以是没有经过量化后的卷积层。
可选的,作为一个实施例,当i大于1时,量化模块110对输入该第i层卷积层的输入数据进行量化(即对第i-1层卷积层的特征图进行量化)时,可以采用公式(4)所示的量化公式进行量化。
在公式(4)中,Q(FMi)代表量化后的第i层卷积层的输入数据,FMi-1代表第i层卷积层的输入数据(第i-1层卷积层的卷积结果),γi代表第i层卷进层的特征图数据的量化参数,γj代表第j层卷积层的特征图数据的量化参数,量化参数是在量化过程中使用的参数,相当于放大乘数。αi代表第i层卷积层权重的量化参数,Wi代表第i层卷积层的权重,Biasi代表第i层卷积层的偏置。
应理解,量化模块110处理利用的上述的公式(4)对第i层卷积层的输入数据(第i-1层卷积层的特征图)进行量化外,还可以利用其他公式对第i层卷积层的输入数据进行量化。例如,利用公式(4)的任何变形后的公式等。本申请实施例在此不作限制。
可选的,作为一个实施例,如图2所示,该卷积模块120包括:
乘法器121,用于对该量化后的该第i层卷积层的输入数据以及该量化后的权重进行乘法运算。
加法器122,用于对该乘法器的输出结果与该量化后的偏置进行加法运算,得到该第i层卷积层的卷积结果。
具体而言,卷积模块120执行的卷积过程的实质为乘累加的过程。因此该卷积模块120包括乘法器121,用于该量化后的该第i层卷积层的输入数据以及该量化后的权重进行乘法运算,得到计算结果。该加法器122用于对该乘法器121的输出结果与该量化后的偏置进行加法运算,得到该第i层卷层积层的卷积结果。例如公式(2)所示的。乘法器121先将量化后的权重a和量化后的输入数据x进行乘法运算,得到结果,然后加法器122将乘法器121的计算得到的结果与量化后的偏置b进行加法运算,得到第i层卷积层的卷积结果。
应理解,当第i层卷积层为最后一层卷积层时,可以将第i层卷积层的卷积结果作为整个卷积层的输出,该输出结果可以作为卷积神经网络其他处理层(例如激活函数层)的输入,以使卷积神经网络进行后续的计算等。本申请实施例在此不作限制。
可选的,作为一个实施例,当待执行第i+1层卷积计算的数据为待量化的数据时,也就是说,当第i+1层卷积层为待量化的卷积层时,该量化模块110还用于:
将该第i层卷积层的卷积结果进行与该权重的量化以及该偏置的量化对应的反量化,其中,该反量化后的该第i层卷积层的卷积结果为该第i+1层卷积层的输入数据。
具体而言,由于在对第i层卷积层的输入数据进行卷积计算之前,对第i层卷积层的卷积模型(model)进行了量化(权重和偏置的量化),利用量化后的模型进行卷积计算。因此,在得到第i层卷积层的卷积结果后,为了保证第i层卷积层的卷积结果(特征图数据)所在的值域范围和利用没有量化的模型进行卷积计算的输出结果所在的值域范围是一致的,保持量化的可逆性和模型的准确性,需要对第i层卷积层的卷积结果进行模型反量化,保证第i层卷积层的卷积结果的准确性和精度。该反量化后的第i层卷积层的卷积结果为该第i+1层卷积层的输入数据。第i+1层卷积计算的数据包括第i+1层卷积层的输入数据、第i+1层卷积层的权重以及偏置。由于第i+1层卷积计算的数据为待量化的数据(第i+1层卷积层也为需要量化的卷积层),其处理流程和第i层卷积层类似。对于第i+1层卷积层而言,量化模块110也需要对输入数据进行量化、对第i+1层卷积层的权重和偏置进行量化。卷积模块120也需要对量化后的第i+1层卷积层量化后的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到第i+1层卷积层的卷积结果。这样可以提高该卷积神经网络的准确性和精度。
可选的,量化模块110对该i层卷积层的卷积结果进行模型反量化(权重的量化以及偏置的量化对应的反量化)时,可以采用公式(5)所示的公式进行反量化:
公式(5)中,MODEL_quantize_reverse代表该i层卷积层的卷积结果进行模型反量化结果,αi代表第i层卷积层权重的量化参数,Wi代表第i层卷积层的权重,Q(IMG)代表量化后的第1层卷积层的原始输入图片,Biasi代表第i层卷积层的偏置,Q(FMi-1)代表量化后的第i-1层卷积层的特征图数据(也可以称为,量化后的第i-1层卷积层的卷积结果),γi代表第i层卷积层的特征图的量化参数,γj代表第j层卷积层的特征图数据的量化参数。模型的反量化关键在于约去模型的量化参数(也可以称为,放大倍数),保持模型计算结果的准确性。
在对该i层卷积层的卷积结果进行模型反量化后,得到了第i+1层卷积层的输入数据。经过模型反量化后的特征图数据,其数值范围往往参差不齐,因此,需要对模型反量化后的输入数据进行量化。这个过程即为量化模块110对第i+1层卷积层的输入数据进行量化的过程。
对于第i+1层卷积层的输入数据进行量化时,结合上述的公式(4)以及公式(5),对于i+1层卷积层,可以利用公式(6)对第i+1层卷积层的输入数据进行量化。
公式(6)中,Q(FMi+1)表示量化后的第i+1层的输入数据,αi代表第i层卷积层权重的量化参数,Wi代表第i层卷积层的权重,Q(IMG)代表量化后的第1层卷积层的输入数据,Biasi代表第i层卷积层的偏置,Q(FMi)代表量化后的第i层卷积层的特征图数据(量化后的第i层卷积层的卷积结果),γj代表第i层卷积层的特征图的量化参数,γj代表第j层卷积层的特征图数据的量化参数,n代表总的卷积层数。
带入上述的公式(5)中的模型反量化,得到公式(7):
公式(7)为对第i+1层卷积层的输入数据进行量化时的公式,MODEL_quantize_reverse代表该第i层卷积层的卷积结果进行模型反量化结果,Q(FMi+1)代表量化后的第i+1层卷积层的输入数据,γi代表第i层卷积层的特征图的量化参数。
应理解,量化模块110除了利用的上述的公式(7)对第i+1层卷积层的输入数据进行量化外,还可以利用其他公式对第i+1层卷积层的输入数据进行量化。本申请实施例在此不作限制。
可选的,作为一个实施例,当待执行的第i+1层卷积计算的数据不是待量化的数据,也就是说,当第i+1层卷积层不是待量化的卷积层时,该量化模块110还用于:
将该第i层卷积层的卷积结果进行与该权重的量化以及该偏置的量化对应的反量化;
将该反量化后的得到的结果进行特征图反量化;
该卷积模块120还用于:对该特征图反量化后的结果、该第i+1层卷积层的权重以及该第i+1层卷积层的偏置进行卷积计算,得到该第i+1层卷积层的卷积结果。
具体而言,由于在对第i层卷层积层进行卷积计算之前,对第i层卷层积层的卷积模型(model)进行了量化(权重和偏置的量化),利用量化后的模型进行卷积计算。因此,在得到第i层卷层积层的卷积结果后,为了保证第i层卷层积的输出结果(特征图数据)所在的值域范围和利用没有量化的模型进行卷积计算的输出结果所在的值域范围是一致的,保持量化的可逆性,需要对第i层卷积层的输出结果进行模型反量化。对第i层卷积层的输出结果进行模型反量化与上述的第i+1层卷积层为待量化的卷积层时的反量化过程类似,这里不再赘述。
在对第i层卷积层的卷积结果进行反量化后,由于第i+1层卷积计算的数据不是待量化的数据(第i+1层卷积层不是待量化的卷积层),即第i+1层卷积层不需要进行量化处理。但是由于在第i层卷积层进行卷积计算时,还对第i层卷积层的输入数据进行了量化。因此,为了保证第i层卷积层的输出结果(第i层卷积层的特征图数据)所在的值域范围和利用没有量化的输入数据进行卷积计算的输出结果所在的值域范围是一致的,保持量化的可逆性,需要对第i层卷积层的模型反量化后的结果进行特征图反量化(输入数据反量化)。该卷积模块120对该特征图反量化后的结果、该第i+1层卷积层的权重以及该第i+1层卷积层的偏置进行卷积计算,得到该第i+1层卷积层的卷积结果。
可选的,量化模块110对第i层卷积层的模型反量化后的结果进行特征图反量化时,可以利用下述的公式(8)进行特征图反量化:
公式(8)中,αi代表第i层卷积层权重的量化参数,Wi代表第i层卷积层的权重,Biasi代表第i层卷积层的偏置,FMi表示对第i层卷积层进行特征图反量化的结果。Q(FMi-1)代表量化后的第i-1层卷积层的特征图数据,γj代表第i层卷积层的输入数据的量化参数。γj代表第j层卷积层的特征图数据的量化参数,第j层卷积层为第i层卷积层之前,与第i层卷积层连续的需要量化的卷积层。
具体而言,在对第i层卷积层的模型反量化后的结果进行特征图反量化时,除了需要考虑到第i层卷积层的输入数据量化的是的量化参数外,还要结合第i层卷积层之前,与第i层卷积层连续的需要量化的卷积层进行输入数据量化时的量化参数。例如,假设第i层卷积层为第5层卷积层,第4层卷积层和第3层卷积层都为需要量化的卷积层。则在对第5层卷积层进行特征图反量化时,需要结合第4层卷积层和第3层卷积层的输入数据的量化参数进行特征图反量化。即这里的j的取值分别为4和3。如果第4层卷积层和第3层卷积层都为需要量化的卷积层,第3层卷积层为不需要量化的卷积层,则在对第5层卷积层进行特征图反量化时,需要结合第4层卷积层的输入数据的量化参数进行特征图反量化,即这里的j为4。
还应理解,量化模块110除了利用的上述的公式(8)对第i层卷积层的模型反量化后的结果进行特征图反量化之外,还可以利用其他公式进行特征图反量化。本申请实施例在此不作限制。
可选的,作为一个实施例,如图3所示,该***100还包括:
量化参数获取模块130,用于获取该第i层卷积层的输入数据的量化参数、该第i层卷积层的权重的量化参数以及该偏置的量化参数;
该量化模块110具体用于:根据该第i层卷积层的输入数据的量化参数对该第i层卷积层的输入数据进行量化,根据该第i层卷积层的权重的量化参数对该权重进行量化,根据该第i层卷积层的偏置的量化参数对该偏置进行量化。
具体而言,在对该卷积神经网络进行模型训练的过程中,可以对模型中所有的权重和偏置进行数据统计分析。例如,可以分别针对权重和偏置寻找其对应极大值,并寻找一个2的幂次,使得权重或者偏置乘以这个2的幂次能够最大限度的接近预设的值域范围。例如,如果给定8比特量化,则值域范围的区间为-128至127之间,并通过计算得到相应的最大移位(Max Shift)值,即二进制下的移位长度,然后根据MaShift值确定量化参数。这种方式所依据的原理是因为在训练过程中由于加入了归一化层,所以所有的权重都是小于1的32比特浮点数,因此可以采用给这些小数乘以一个相对较大的2的幂次放大到一个预订的量化值域范围之间,例如在-128至127的尺度之间,即用定点8比特表示。
因此,该量化参数获取模块130用于获取该第i层卷积层的输入数据的量化参数、该第i层卷积层的权重的量化参数以及该偏置的量化参数。量化模块110根据该第i层卷积层的输入数据的量化参数对该第i层卷积层的输入数据进行量化,根据该第i层卷积层的权重的量化参数对该权重进行量化,根据该第i层卷积层的偏置的量化参数对该偏置进行量化。
下面将具体说明获取该第i层卷积层的输入数据(第i层卷积计算的输入数据)的量化参数、该第i层卷积层的权重的量化参数以及该偏置的量化参数。
1、获取权重量化参数:
对第i层卷积模型中所有的权重进行数据统计分析。对于第i层卷积层权重的最大值Max(abs(Wi)),基于权重量化的目标位宽k,得到给定值域范围2k。首先依据公式(9)求出第i层卷积层的权重的量化乘数
Max代表取最大值,abs代表取绝对值,Wi代表第i层卷积层的权重,k代表目标位宽,为权重量化乘数。
因为量化本身就是将全流程计算全部用整数替代,那么该量化乘数是一个实数并不适合计算过程中进行移位操作,考虑到计算机中移位操作是进行2的幂次乘除法,所以较好的办法是将该量化乘数化简成小于该值的最大的2的幂次,那么有以下公式(10)计算第i层卷积层权重的量化参数αi为:
floor代表向下取整,αi代表第i层卷积层权重的量化参数。
将公式展开,即第i层卷积层权重的量化参数αi的计算公式为:
2、获取偏置量化参数:
对于第i层卷积层偏置的最大值Max(abs(bi)),基于权重量化的目标位宽k,得到给定值域范围2k。首先依据公式(12)求出第i层卷积层的权重的量化乘数
Max代表取最大值,abs代表取绝对值,bi代表第i层权重,k代表目标位宽,为偏置量化乘数。
和计算权重的量化参数类似。那么有以下公式(13)计算当前第i层卷积层偏置的量化参数βi为:
floor代表向下取整,βi代表第i层卷积层偏置的量化参数。
将公式(13)展开,即第i层卷积层偏置的量化参数βi的计算公式为:
3、获取输入数据(特征图)量化参数:
对第i层卷积层中所有的特征图进行数据统计分析。对于第i层卷积层特征图的最大值Max(abs(FMi)),基于量化的目标位宽k,得到给定值域范围2k,第i层卷积层特征图的量化参数γi为公式(15)所示:
公式(15)中,γi代表第i层卷积层特征图的量化参数,floor代表向下取整,FMi代表第i层卷积层的特征图。
下面将具体说明根据该第i层卷积层的权重的量化参数对该权重进行量化,根据该第i层卷积层的偏置的量化参数对该偏置进行量化的过程。
4、根据该第i层卷积层的权重的量化参数对该权重进行量化:
基于权重的量化参数和移位以及四舍五入操作,第i层卷积层的权重量化后的数据为Q(Wi)(以8比特定点量化为例),可以由公式(16)计算得到:
Q(Wi)代表量化后的第i层卷积层的权重数据,round代表四舍五入,Wi<<αi代表左移计算,含义代表将Wi左移αi比特。
5、根据该第i层卷积层的偏置的量化参数对该偏置进行量化:
对第i层卷积层的偏置的量化参数对该偏置进行量化与对权重进行量化类似。基于偏置的量化参数和移位以及四舍五入操作,第i层卷积层的偏置量化后的数据为Q(βi)(以8比特定点量化为例),可以由公式(17)计算得到:
公式(17)中,Q(Biasi)代表量化后的第i层卷积层的偏置数据,round代表四舍五入,Biasi<<βi代表左移计算,含义代表将Biasi左移βi比特。
应理解,上述的获取量化参数以及对权重和偏置的量化可以在是在训练的过程(离线过程)中进行的。卷积模块120卷积计算的过程是在实际进行对输入数据进行分析的过程(在线过程)进行的。
还应理解,除了利用的上述方式中的公式获取输入数据的量化参数、权重的量化参数、偏置的量化参数以及对权重和偏置进行量化外,还可以根据其他的方式或者公式获取各个量化参数以及对权重和偏置进行量化等。本申请实施例在此不作限制。
可选的,作为一个实施例,该量化模块110还用于:
对量化后的偏置进行修正;
该卷积模块120具体用于:利用该修正后的偏置进行卷积计算,得到该卷积结果。
具体而言,在实际进行卷积计算的过程中,由于卷积神经网络某些特性需要微调以保证卷积神经网络的精度以及保证量化过程的可逆性。由于卷积计算实际上是一个乘累加的过程。权重与特征图相乘后与偏置进行累加。在满足量化可逆性的条件下,需要对量化后的偏置进行修正,使得乘法项和加法项具有相同的乘数因子,这样在进行反量化的过程中,便可以同除以这个乘数因子,在保证了量化的可逆性的基础上,进一步的提高量化的精度。保证模型的精度和准确性。在对量化后的偏置进行修正后,卷积模块120可以对量化后的第i层卷积层的输入数据、量化后的权重以及该修正后的偏置进行卷积计算,得到第i层卷积层的卷积结果。
量化模块110可以对该量化后的偏置进行修正。对量化后的偏置进行修正可以利用该权重的量化参数、偏置的量化参数以及特征图的量化参数对量化后的偏置进行修正。量化模块110可以根据当前层权重的量化参数、当前层偏置的量化参数以及当前层之前的一个或者多个连续的需要量化的卷积层的特征图量化参数对当前层量化后的偏置进行修正。当前层之前的一个或者多个连续的需要量化的卷积层可以理解为:假设当前为第5层卷积层,如果第4层卷积层和第3层卷积层都为需要量化的卷积层,第2层卷积层为不需要量化的卷积层,则当前层之前的一个或者多个连续的需要量化的卷积层为第4层卷积层和低层卷积层。如果第4层卷积层和第2层卷积层都为需要量化的卷积层,第3层卷积层为不需要量化的卷积层,则当前层之前的一个或者多个连续的需要量化的卷积层为第4层卷积层。量化模块110对量化后的偏置进行修正包括对权重的量化参数进行修正以及对特征图的量化参数进行修正。
下面将具体说明对权重的量化参数进行修正以及对特征图的量化参数进行修正。
对权重的量化参数进行修正:
在量化处理过后,第i层卷积层的卷积表达式为公式(18)所示(省略其中的四舍五入等计算):
Q(Wi)代表量化后的第i层卷积层的权重数据,FMi-1代表第i-1层卷积层的特征图数据,第i-1层卷积层可以为需要量化的卷积层,也可以为不需要量化的卷积层。i的值大于1。当i等于1时,公式(18)中的FMi-1变为input-img,Q(Biasi)代表量化后的第i层卷积层的偏置数据,Wi代表第i层卷积层的权重,Biasi代表第i层卷积层的偏置,αi代表第i层卷积层权重的量化参数,βi代表第i层卷积层偏置的量化参数。其中,Q(Wi)和Q(Biasi)的量化参数是不一样的,这对于统一对整个卷积进行线性变换是不可行的,需要对齐他们的量化过程中的乘数因子。
因此,在已量化Biasi进入计算后,使用对其进行一次修正,如公式(19)所示:
可以看出经过修正后的偏置和权重共享乘数因子这样在进行反量化时可以同除以这个乘数因子,使得卷积过程满足可逆性,保证了模型的精度和准确性。
在某些情况中,例如,在对偏置的输入不限制其位宽(或限制较松),则可以直接利用权重的量化参数对偏置进行量化。即权重和偏置共用一个量化参数。即满足
对特征图的量化参数进行修正:
对于特征图的量化,偏置同样需要进行修正。以第1层卷积层和第2层卷积层为例进行说明,第一层卷积层和第二层卷积层都为需要量化的卷积层。
对于第1层卷积层,其卷积公式如公式(20)所示:
FM1=∑W1*input-img+Bias1 (20)
公式(20)中,IMG表示输入到第1层卷积层的原始输入图片,FM1表示第1层卷积层的特征图数据,在经过输入数据(原始输入图片)量化、权重量化以及偏置量化后,卷积公式如公式(21)所示:
α1代表第1层卷积层权重的量化参数,W1代表第1层卷积层的权重,Bias1代表第1层卷积层的偏置,Q(IMG)代表量化后的第1层卷积层的输入数据。
在进行模型反量化以及特征图量化后,得到量化后的Q(FM1),Q(FM1)代表量化后的第1层卷积层的特征图数据(量化后的第1层卷积层的卷积结果),如公式(22)所示:
公式(22)中,γ1代表第1层卷积层的特征图数据的量化参数。FM1表示第1层卷积层的特征图数据。
对于第二层卷积层,在模型参数量化以及偏置量化参数修正后,其卷积表达式如公式(23)所示:
公式(23)中,α2代表第2层卷积层权重的量化参数,W2代表第2层卷积层的权重,Bias2代表第2层卷积层的偏置,FM1表示第1层卷积层的特征图数据,Q(FM1)代表量化后的第1层卷积层的特征图数据,γ1代表第1层卷积层特征图的量化参数,为了使得量化后的偏置仍然能保持和乘累加后的特征图一致的量化乘数因子,需要对偏置的量化参数再次进行修正,和第一次对偏置的量化参数进行修正合并,得到量化后的Q(FM2),如公式(24)所示:
γ2代表第2层卷积层特征图数据的量化参数,Q(FM2)代表量化后的第2层卷积层的特征图数据。
应理解,量化模块110除了利用的上述的公式对偏置的量化参数进行修正外,还可以利用其他公式对偏置的量化参数进行修正。本申请实施例在此不作限制。
应理解,在本申请实施例中,对特征图进行反量化也可以是由特征图反量化器来执行。对特征图进行量化也可以是由特征图量化器来执行,对模型反量化可以是由模型反量化器来执行,对量化参数进行修正可以是有量化参数修正器来执行,特征图反量化器、特征图量化器、模型反量化器以及量化参数修正器可以集成在量化模块中,也可以分开设置。量化模块中还可以包括用于对模型进行量化的模型量化器以及量化参数获取模块等,本申请实施例在此不作限制。
下面将结合图4说明本申请提供的卷积神经网络***200。如图4所示,该***200包括图片量化器211、模型量化器212、乘法器213、加法器214,模型反量化模器215,特征图反量化器216,特征图量化器217。其中,图片量化器211、模型量化器212以及特征图量化器217可以集成在一个量化模块中,也可以分开设置。模型反量化模器215和特征图反量化器216也可以集成在一个反量化模块中,也可以分开设置。乘法器213和加法器214也可以集成在一个卷积模块中,也可以分开设置,本申请实施例在此不作限制。
如图4所示。图4所示的为***200对当前层卷积层为需要量化的卷积层的处理流程。模型量化器212通过训练,先对需要量化的每一层卷积层的权重和偏置进行量化,得到每一层卷积层量化后的权重和偏置。假设第1层卷积计算的数据为待量化的数据,则对于输入到卷积神经网络第1层卷积层的原始输入图片,图片量化器211对该原始输入图片进行图片量化,得到量化的图片,结合第1层卷积层量化后的权重和偏置,进行卷积计算。乘法器213将量化后的图片和第1层卷积层量化后的权重进行乘法运算,加法器214将乘法器的输出结果与第1层卷积层量化后的偏置进行加法运算,得到第1层卷积层的卷积结果。模型反量化器215将第1层的卷积结果进行模型反量化。根据第2层卷积层是否为需要量化的卷积层确定处理流程。
如果第2层卷积层为需要量化的卷积层,也就是说,如果第2层卷积计算的数据为待量化的数据,特征图量化器217将模型反量化器215的反量化结果进行特征图量化,并将特征图量化后的结果输入到乘法器213中,乘法器213将特征图量化后的结果与第2层卷积层量化后的权重进行乘法运算,加法器214将第2层卷积层量化后的偏置与乘法器211的输出结果进行相加,得到第2层卷积层的特征图数据。接着利用相同的处理流程处理后序的需要量化的卷积层。
如果第2层卷积层为不需要量化的卷积层,也就是说,如果第2层卷积计算的数据不是待量化的数据,特征图反量化器216将模型反量化器215的反量化结果进行特征图反量化,并将特征图反量化后的结果输入到乘法器213中,乘法器213将特征图反量化后的结果与第2层卷积层的权重进行乘法运算,加法器214将第2层卷积层的偏置与乘法器213的输出结果进行相加,得到第2层卷积层的特征图数据。接着利用相同的处理流程处理后序的不需要量化的卷积层。
可选的,该***还包括量化修正器218,量化修正器218可以对量化后的偏置进行修正,输入加法器214的偏置还可以是经过量化修正器218修正后的偏置。量化修正器218可以集成在模型量化器212中,也可以单独设置。
对于当前层为最后一层卷积层的情况,如果最后一层卷积层为需要量化的卷积层,模型反量化器215将最后一层卷积层的卷积结果先进行模型反量化、特征图反量化器216在将模型反量化器215结果进行特征图反量化后得到的结果便为所有卷积层的输出结果。如果最后一层卷积层为不需要量化的卷积层,则需要根据倒数第二层是否为需要量化的卷积层来确定倒数第二层输入到最后一层的特征图数据。
对于第1层卷积层而言,输入乘法器221的为量化后的图片,对于其他层卷积层而言,输入乘法器213为特征图量化器217的输出结果或者特征图反量化器216的输出结果。也就是说,对于一幅原始的图片的卷积计算,图片量化器211只有一次输入和输出,即对于第1层卷积层而言输入的为量化后的图片。对于其他卷积层。图片量化器211不进行输出。图4中的虚线所示的为仅对于第1层卷积层图片量化器211向乘法器213输入数据,对于其他卷积层图片量化器211不向乘法器213输入数据。
例如,假设总共有10层卷积层,如果第10层卷积层为需要量化的卷积层,在加法器214将第10层卷积层量化后的偏置与乘法器213的输出结果进行相加,得到第10层卷积层的特征图数据(卷积结果)后,模型反量化器215将第10层的卷积结果进行模型反量化。特征图反量化器216将模型反量化器215的结果进行特征图反量化后便得到整个卷积层的卷积结果。
同理,对于需要量化的第i层卷积层的处理流程和上述的相似。为了简洁,这里不再赘述。
本申请提供的卷积神经网络***,通过量化模块对该卷积层中需要量化的卷积层中每一层卷积层的权重、偏置以及输入该卷积层的输入数据进行量化,卷积模块利用量化后的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到每一层卷积层的计算结果。并且对量化的模型以及特征图进行反量化,使得量化满足可逆性。保证了量化的精度,可以使得利用该***得到的计算结果更加准确,提高了卷积神经网络***的精度和准确性。降低卷积神经网络的计算量,同时可以降低卷积神经网络模型以及卷积计算结果的存储数据量。
本申请还提供一种卷积神经网络量化的方法,该卷积神经网络量化的方法300可以应用在卷积神经网络***(装置)中,该卷积神经网络***中可以是上述的申请提供的卷积神经网络***,还可以是现有的卷积神经网络***,本申请实施例在此不作限制。图6示出了本申请提供的卷积神经网络量化的方法300的示意性流程图。该方法300可以由芯片执行,该芯片可以包括量化模块和卷积模块等。或者也可以由计算机***执行,该计算机***可以包括量化模块和卷积模块等,该芯片或者该计算机***可以是上述本申请提供的卷积神经网络***(装置)。本申请在此不作限制。如图5所示,该方法300包括:
S310,对该卷积神经网络的第i层卷积层的输入数据、该第i层卷积层的权重以及偏置分别进行量化,i为正整数。该第i层卷积计算的数据为待量化的数据。
S320,对量化后的该第i层卷积层的输入数据、量化后的该权重以及量化后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果。
本申请提供的卷积神经网络量化的方法,通过对该卷积层中需要量化的卷积层的权重、偏置以及输入该卷积层的输入数据进行量化,利用量化后的输入数据、量化后的权重以及量化后的偏置进行卷积计算,得到每一层卷积层的计算结果。可以使得得到的计算结果更加准确,降低卷积神经网络的计算量,同时可以降低卷积神经网络模型以及卷积计算结果的存储数据量,提高了卷积神经网络量化的精度。便于硬件设计上的实现。
可选的,作为一个实施例,如图6所示,在S320中,该对量化后的该第i层卷积层的输入数据、量化后的该权重以及量化后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果,包括:
S321,对该量化后的该第i层卷积层的输入数据以及该量化后的该权重进行乘法运算。
S322,对该乘法运算的结果与该量化后的该偏置进行加法运算,得到该第i层卷积层的卷积结果。
可选的,作为一个实施例,当i等于1时,该第i层卷积层的输入数据为原始输入图片;或者,当i大于1时,该第i层卷积层的输入数据为特征图数据。
可选的,作为一个实施例,如图7所示,当待执行第i+1层卷积计算的数据为待量化的数据时,该方法300还包括:
S330,将该第i层卷积层的卷积结果进行与该权重的量化以及该偏置的量化对应的反量化,其中,该反量化后的该第i层卷积层的卷积结果为该第i+1层卷积层的输入数据。
可选的,作为一个实施例,如图8所示,当待执行第i+1层卷积计算的数据不是待量化的数据时,该方法300还包括:
S340,将该第i层卷积层的卷积结果进行与该权重的量化以及该偏置的量化对应的反量化。
S350,将该反量化后的得到的结果进行特征图反量化。
S360,对该特征图反量化后的结果、该第i+1层卷积层的权重以及该第i+1层卷积层的偏置进行卷积计算,得到该第i+1层卷积层的卷积结果。
可选的,作为一个实施例,如图9所示,该方法300还包括:
S311,对量化后的该偏置进行修正。
在S320中,该对量化后的该第i层卷积层的输入数据、量化后的该权重以及量化后的该偏置进行卷积计算,包括:
对量化后的该第i层卷积层的输入数据、量化后的该权重以及该修正后的该偏置进行卷积计算,得到该第i层卷积层的卷积结果。
可选的,作为一个实施例,该方法300还包括:
获取该第i层卷积层的输入数据的量化参数、该第i层卷积层的该权重的量化参数以及该偏置的量化参数;
在S310中。该对该卷积神经网络的第i层卷积层的输入数据、该第i层卷积层的权重以及偏置分别进行量化,包括:
根据该第i层卷积层的输入数据的量化参数对该第i层卷积层的输入数据进行量化,根据该第i层卷积层的权重的量化参数对该权重进行量化,根据该第i层卷积层的偏置的量化参数对该偏置进行量化。
应理解,方法300中各个实施的具体的步骤的描述可以参考上述的卷积神经网络***相应的描述。例如,方法300中的各个实施例的量化或者反量化的公式可以利用上述的卷积神经网络***相应的公式等。为避免重复,这里不再赘述。
还应理解,上述只是为了帮助本领域技术人员更好地理解本申请实施例,而非要限制本申请实施例的范围。本领域技术人员根据所给出的上述示例,显然可以进行各种等价的修改或变化,或者可以新加入某些步骤等。或者上述任意两种或者任意多种实施例的组合。这样的修改、变化或者组合后的方案也落入本申请实施例的范围内。
还应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
还应理解,上文对本申请实施例的描述着重于强调各个实施例之间的不同之处,未提到的相同或相似之处可以互相参考,为了简洁,这里不再赘述。
本申请实施例还提供了一种计算机可读介质,用于存储计算机程序代码,该计算机程序包括用于执行上述方法300中本申请实施例的卷积神经网络量化的方法的指令。该可读介质可以是只读存储器(read-only memory,ROM)或随机存取存储器(random accessmemory,RAM),本申请实施例对此不做限制。
本申请还提供了一种计算机程序产品,所述计算机程序产品包括指令,当所述指令被执行时,以使得装置执行对应于上述方法中的操作。
本申请还提供了一种计算机***,该计算机***包括用于执行本申请实施例的卷积神经网络量化的方法的芯片或者装置。该芯片或者该装置可以是上述本申请提供的卷积神经网络***。
本申请实施例还提供了一种***芯片,该***芯片包括:处理单元和通信单元,该处理单元,例如可以是处理器,该通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行计算机指令,以使该通信装置内的芯片执行上述本申请实施例提供的任一种卷积神经网络量化的方法。
可选地,该计算机指令被存储在存储单元中。
可选地,该存储单元为该芯片内的存储单元,如寄存器、缓存等,该存储单元还可以是该终端内的位于该芯片外部的存储单元,如ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM等。其中,上述任一处提到的处理器,可以是一个CPU,微处理器,ASIC,或一个或多个用于控制上述的卷积神经网络量化的方法的程序执行的集成电路。该处理单元和该存储单元可以解耦,分别设置在不同的物理设备上,通过有线或者无线的方式连接来实现该处理单元和该存储单元的各自的功能,以支持该***芯片实现上述实施例中的各种功能。或者,该处理单元和该存储器也可以耦合在同一个设备上。
应理解,上文对本申请实施例的描述着重于强调各个实施例之间的不同之处,未提到的相同或相似之处可以互相参考,为了简洁,这里不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

1.一种卷积神经网络***,其特征在于,包括:
量化模块,用于对所述***的第i层卷积层的输入数据、所述第i层卷积层的权重以及偏置分别进行量化,i为正整数;
卷积模块,用于对量化后的所述第i层卷积层的输入数据、量化后的所述权重以及量化后的所述偏置进行卷积计算,得到所述第i层卷积层的卷积结果。
2.根据权利要求1所述的***,其特征在于,所述卷积模块包括:
乘法器,用于对所述量化后的所述第i层卷积层的输入数据以及所述量化后的所述权重进行乘法运算;
加法器,用于对所述乘法器的输出结果与所述量化后的所述偏置进行加法运算,得到所述第i层卷积层的卷积结果。
3.根据权利要求1或2所述的***,其特征在于:
当i等于1时,所述第i层卷积层的输入数据为原始输入图片;或者,
当i大于1时,所述第i层卷积层的输入数据为特征图数据。
4.根据权利要求1至3中任一项所述的***,其特征在于,当待执行第i+1层卷积计算的数据为待量化的数据时,
所述量化模块还用于:
将所述第i层卷积层的卷积结果进行与所述权重的量化以及所述偏置的量化对应的反量化,其中,所述反量化后的所述第i层卷积层的卷积结果为所述第i+1层卷积层的输入数据。
5.根据权利要求1至3中任一项所述的***,其特征在于,当待执行第i+1层卷积计算的数据不是待量化的数据时,所述量化模块还用于:
将所述第i层卷积层的卷积结果进行与所述权重的量化以及所述偏置的量化对应的反量化;
将所述反量化后的得到的结果进行特征图反量化;
所述卷积模块还用于:对所述特征图反量化后的结果、所述第i+1层卷积层的权重以及所述第i+1层卷积层的偏置进行卷积计算,得到所述第i+1层卷积层的卷积结果。
6.根据权利要求1至5中任一项所述的***,其特征在于,所述量化模块还用于:
对量化后的所述偏置进行修正;
所述卷积模块具体用于:对量化后的所述第i层卷积层的输入数据、量化后的所述权重以及所述修正后的所述偏置进行卷积计算,得到所述第i层卷积层的卷积结果。
7.根据权利要求6所述的***,其特征在于,所述***还包括:
量化参数获取模块,用于获取所述第i层卷积层的输入数据的量化参数、所述第i层卷积层的所述权重的量化参数以及所述偏置的量化参数;
所述量化模块具体用于:根据所述第i层卷积层的输入数据的量化参数对所述第i层卷积层的输入数据进行量化,根据所述第i层卷积层的权重的量化参数对所述权重进行量化,根据所述第i层卷积层的偏置的量化参数对所述偏置进行量化。
8.一种卷积神经网络量化的方法,其特征在于,包括:
对所述卷积神经网络的第i层卷积层的输入数据、所述第i层卷积层的权重以及偏置分别进行量化,i为正整数;
对量化后的所述第i层卷积层的输入数据、量化后的所述权重以及量化后的所述偏置进行卷积计算,得到所述第i层卷积层的卷积结果。
9.根据权利要求8所述的方法,其特征在于,所述对量化后的所述第i层卷积层的输入数据、量化后的所述权重以及量化后的所述偏置进行卷积计算,得到所述第i层卷积层的卷积结果,包括:
对所述量化后的所述第i层卷积层的输入数据以及所述量化后的所述权重进行乘法运算;
对所述乘法运算的结果与所述量化后的所述偏置进行加法运算,得到所述第i层卷积层的卷积结果。
10.根据权利要求8或9所述的方法,其特征在于:
当i等于1时,所述第i层卷积层的输入数据为原始输入图片;或者,
当i大于1时,所述第i层卷积层的输入数据为特征图数据。
11.根据权利要求8至10中任一项所述的方法,其特征在于,当待执行第i+1层卷积计算的数据为待量化的数据时,所述方法还包括:
将所述第i层卷积层的卷积结果进行与所述权重的量化以及所述偏置的量化对应的反量化,其中,所述反量化后的所述第i层卷积层的卷积结果为所述第i+1层卷积层的输入数据。
12.根据权利要求8至10中任一项所述的方法,其特征在于,当待执行第i+1层卷积计算的数据不是待量化的数据时,所述方法还包括:
将所述第i层卷积层的卷积结果进行与所述权重的量化以及所述偏置的量化对应的反量化;
将所述反量化后的得到的结果进行特征图反量化;
对所述特征图反量化后的结果、所述第i+1层卷积层的权重以及所述第i+1层卷积层的偏置进行卷积计算,得到所述第i+1层卷积层的卷积结果。
13.根据权利要求8至12中任一项所述的方法,其特征在于,所述方法还包括:
对量化后的所述偏置进行修正;
所述对量化后的所述第i层卷积层的输入数据、量化后的所述权重以及量化后的所述偏置进行卷积计算,包括:
对量化后的所述第i层卷积层的输入数据、量化后的所述权重以及所述修正后的所述偏置进行卷积计算,得到所述第i层卷积层的卷积结果。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
获取所述第i层卷积层的输入数据的量化参数、所述第i层卷积层的所述权重的量化参数以及所述偏置的量化参数;
所述对所述卷积神经网络的第i层卷积层的输入数据、所述第i层卷积层的权重以及偏置分别进行量化,包括:
根据所述第i层卷积层的输入数据的量化参数对所述第i层卷积层的输入数据进行量化,根据所述第i层卷积层的权重的量化参数对所述权重进行量化,根据所述第i层卷积层的偏置的量化参数对所述偏置进行量化。
15.一种计算机可读存储介质,用于存储计算机程序,其特征在于,所述计算机程序用于执行根据权利要求8至14中任一项所述的卷积神经网络量化的方法的指令。
CN201810603231.XA 2018-06-12 2018-06-12 卷积神经网络***和卷积神经网络量化的方法 Pending CN110598839A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810603231.XA CN110598839A (zh) 2018-06-12 2018-06-12 卷积神经网络***和卷积神经网络量化的方法
PCT/CN2019/090660 WO2019238029A1 (zh) 2018-06-12 2019-06-11 卷积神经网络***和卷积神经网络量化的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810603231.XA CN110598839A (zh) 2018-06-12 2018-06-12 卷积神经网络***和卷积神经网络量化的方法

Publications (1)

Publication Number Publication Date
CN110598839A true CN110598839A (zh) 2019-12-20

Family

ID=68842786

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810603231.XA Pending CN110598839A (zh) 2018-06-12 2018-06-12 卷积神经网络***和卷积神经网络量化的方法

Country Status (2)

Country Link
CN (1) CN110598839A (zh)
WO (1) WO2019238029A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258839A (zh) * 2020-02-16 2020-06-09 苏州浪潮智能科技有限公司 一种基于ResNet50网络的AI加速卡仿真测试***及其工作方法
CN111368972A (zh) * 2020-02-21 2020-07-03 华为技术有限公司 一种卷积层量化方法及其装置
CN111914996A (zh) * 2020-06-30 2020-11-10 华为技术有限公司 一种提取数据特征的方法和相关装置
CN112580492A (zh) * 2020-12-15 2021-03-30 深兰人工智能(深圳)有限公司 车辆检测方法及装置
CN112990438A (zh) * 2021-03-24 2021-06-18 中国科学院自动化研究所 基于移位量化操作的全定点卷积计算方法、***及设备
CN113420788A (zh) * 2020-10-12 2021-09-21 黑芝麻智能科技(上海)有限公司 卷积神经网络中基于整数的融合卷积层以及融合卷积方法
CN113762497A (zh) * 2020-06-04 2021-12-07 合肥君正科技有限公司 一种卷积神经网络模型低比特推理优化的方法
CN113762500A (zh) * 2020-06-04 2021-12-07 合肥君正科技有限公司 一种卷积神经网络在量化时提高模型精度的训练方法
CN113850374A (zh) * 2021-10-14 2021-12-28 安谋科技(中国)有限公司 神经网络模型的量化方法、电子设备及介质
WO2022088063A1 (zh) * 2020-10-30 2022-05-05 华为技术有限公司 神经网络模型的量化方法和装置、数据处理的方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113468935B (zh) * 2020-05-08 2024-04-02 上海齐感电子信息科技有限公司 人脸识别方法
CN113780513B (zh) * 2020-06-10 2024-05-03 杭州海康威视数字技术股份有限公司 网络模型量化、推理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105760933A (zh) * 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置
US20160328646A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization
CN106951962A (zh) * 2017-03-22 2017-07-14 北京地平线信息技术有限公司 用于神经网络的复合运算单元、方法和电子设备
CN107239826A (zh) * 2017-06-06 2017-10-10 上海兆芯集成电路有限公司 在卷积神经网络中的计算方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203624B (zh) * 2016-06-23 2019-06-21 上海交通大学 基于深度神经网络的矢量量化***及方法
CN107657316B (zh) * 2016-08-12 2020-04-07 北京深鉴智能科技有限公司 通用处理器与神经网络处理器的协同***设计
CN115841137A (zh) * 2017-06-06 2023-03-24 格兰菲智能科技有限公司 一种用于对待量化数据进行定点化处理的方法及计算装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328646A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization
CN105760933A (zh) * 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置
CN106951962A (zh) * 2017-03-22 2017-07-14 北京地平线信息技术有限公司 用于神经网络的复合运算单元、方法和电子设备
CN107239826A (zh) * 2017-06-06 2017-10-10 上海兆芯集成电路有限公司 在卷积神经网络中的计算方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SHU-CHANG ZHOU; YU-ZHI WANG; HE WEN; QIN-YAO HE; YU-HENG ZOU: "Balanced Quantization: An Effective and Efficient Approach to Quantized Neural Networks", 《JOURNAL OF COMPUTER SCIENCE & TECHNOLOGY》 *
蔡瑞初 等: "面向"边缘"应用的卷积神经网络量化与压缩方法", 《计算机应用》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258839A (zh) * 2020-02-16 2020-06-09 苏州浪潮智能科技有限公司 一种基于ResNet50网络的AI加速卡仿真测试***及其工作方法
CN111258839B (zh) * 2020-02-16 2022-11-29 苏州浪潮智能科技有限公司 一种基于ResNet50网络的AI加速卡仿真测试***及其工作方法
CN111368972A (zh) * 2020-02-21 2020-07-03 华为技术有限公司 一种卷积层量化方法及其装置
CN111368972B (zh) * 2020-02-21 2023-11-10 华为技术有限公司 一种卷积层量化方法及其装置
CN113762500B (zh) * 2020-06-04 2024-04-02 合肥君正科技有限公司 一种卷积神经网络在量化时提高模型精度的训练方法
CN113762497A (zh) * 2020-06-04 2021-12-07 合肥君正科技有限公司 一种卷积神经网络模型低比特推理优化的方法
CN113762500A (zh) * 2020-06-04 2021-12-07 合肥君正科技有限公司 一种卷积神经网络在量化时提高模型精度的训练方法
CN113762497B (zh) * 2020-06-04 2024-05-03 合肥君正科技有限公司 一种卷积神经网络模型低比特推理优化的方法
CN113919479A (zh) * 2020-06-30 2022-01-11 华为技术有限公司 一种提取数据特征的方法和相关装置
CN111914996A (zh) * 2020-06-30 2020-11-10 华为技术有限公司 一种提取数据特征的方法和相关装置
CN113420788A (zh) * 2020-10-12 2021-09-21 黑芝麻智能科技(上海)有限公司 卷积神经网络中基于整数的融合卷积层以及融合卷积方法
WO2022088063A1 (zh) * 2020-10-30 2022-05-05 华为技术有限公司 神经网络模型的量化方法和装置、数据处理的方法和装置
CN112580492A (zh) * 2020-12-15 2021-03-30 深兰人工智能(深圳)有限公司 车辆检测方法及装置
CN112990438A (zh) * 2021-03-24 2021-06-18 中国科学院自动化研究所 基于移位量化操作的全定点卷积计算方法、***及设备
CN112990438B (zh) * 2021-03-24 2022-01-04 中国科学院自动化研究所 基于移位量化操作的全定点卷积计算方法、***及设备
CN113850374A (zh) * 2021-10-14 2021-12-28 安谋科技(中国)有限公司 神经网络模型的量化方法、电子设备及介质

Also Published As

Publication number Publication date
WO2019238029A1 (zh) 2019-12-19

Similar Documents

Publication Publication Date Title
CN110598839A (zh) 卷积神经网络***和卷积神经网络量化的方法
CN110363279B (zh) 基于卷积神经网络模型的图像处理方法和装置
CN110610237A (zh) 模型的量化训练方法、装置及存储介质
CN112508125A (zh) 一种图像检测模型的高效全整数量化方法
US10491239B1 (en) Large-scale computations using an adaptive numerical format
CN111488986A (zh) 一种模型压缩方法、图像处理方法以及装置
Hong et al. Daq: Channel-wise distribution-aware quantization for deep image super-resolution networks
EP4087239A1 (en) Image compression method and apparatus
CN110826685A (zh) 神经网络卷积计算的方法和装置
CN111105017B (zh) 神经网络量化方法、装置及电子设备
CN110647974A (zh) 深度神经网络中的网络层运算方法及装置
CN113780549A (zh) 溢出感知的量化模型训练方法、装置、介质及终端设备
WO2022111002A1 (zh) 用于训练神经网络的方法、设备和计算机可读存储介质
Peric et al. Floating point and fixed point 32-bits quantizers for quantization of weights of neural networks
CN112990438A (zh) 基于移位量化操作的全定点卷积计算方法、***及设备
CN111937011A (zh) 一种神经网络模型权重参数的确定方法及设备
CN112561050B (zh) 一种神经网络模型训练方法及装置
CN115062777B (zh) 卷积神经网络的量化方法、量化装置、设备及存储介质
CN114048853A (zh) 神经网络的量化方法、装置、计算机设备及存储介质
CN115705486A (zh) 量化模型的训练方法、装置、电子设备和可读存储介质
US11823043B2 (en) Machine learning with input data domain transformation
CN117348837A (zh) 浮点精度模型的量化方法、装置、电子设备以及存储介质
CN113850374A (zh) 神经网络模型的量化方法、电子设备及介质
CN114298291A (zh) 一种模型量化处理***及一种模型量化处理方法
CN114065913A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191220

RJ01 Rejection of invention patent application after publication