一种面向近似神经网络重训练的乘法器及其重训练算法制造技术

技术编号:37483272 阅读:19 留言:0更新日期:2023-05-07 09:23
本发明专利技术提供一种面向近似神经网络重训练的乘法器及其重训练算法,其中乘法器包括多个近似Booth编码模块、多个部分积产生模块和加法器;每个所述近似Booth编码模块接收权重输入中对应位置的多比特数据,并对多比特数据进行编码;每个所述部分积产生模块接收相应所述近似Booth编码模块输出的多比特数据编码结果,并将多比特数据编码结果与特征图数据进行操作得到部分积;所述加法器将所有部分积累加,得到最终输出结果。本发明专利技术通过使用高基数Booth编码以减少部分积数目,并且在近似Booth编码和部分积产生模块引入近似,从而减小乘法器的面积和能耗开销。器的面积和能耗开销。器的面积和能耗开销。

【技术实现步骤摘要】
一种面向近似神经网络重训练的乘法器及其重训练算法


[0001]本专利技术属于近似计算和数字运算器件
,尤其涉及一种面向近似神经网络重训练的乘法器及其重训练算法。

技术介绍

[0002]卷积神经网络CNN如今已经被广泛地应用于如图像分类、目标检测等计算机视觉任务中。许多边缘硬件设备如智能摄像头,需要在边缘侧对拍摄的图片进行实时处理,以完成如人脸识别、车辆检测等任务。然而,边缘侧严格的面积和能耗限制给神经网络加速硬件的设计和实现带来了巨大挑战。近似计算就是针对此问题的重要解决方法。
[0003]近似计算利用数字信号处理、神经网络等应用固有的容错性,通过在运算器件中引入一定的误差,减小硬件的面积和能耗,同时使得应用性能的下降在允许范围内。在神经网络中,乘法运算的使用率、能耗最高,同时乘法器的面积也远大于加法器等其他运算器件,因此设计合适的近似乘法器以替换精确乘法器能够使得加速硬件更好地匹配于边缘侧场景。
[0004]用近似乘法器直接替换精确乘法器,会造成神经网络准确率的大幅下降,尤其是对于复杂任务。通过模拟近似乘法器的运算行为进行重训练,可以补偿由近似乘法器引起的精度下降。然而,由于乘法运算过程中会引入无规律的错误(例如部分积的生成和部分积的累加),因此只能在训练中通过查找表模拟并且很难用GPU加速。因此,目前使用的重训练方法的设计局限于较小的网络和相对简单的任务。为了避免重训练的困难,一些现有的工作从分析CNN中每一层的容错性开始,然后为每一层分配不同的近似乘法器,甚至在一些关键层使用精确乘法器,以达到通过降低精度损失来减少重训练开销的目的。然而,这种穷尽式设计空间探索方法对网络结构过于敏感,CNN网络结构稍有改变就可能导致近似乘法器阵列的失效,从而无法保证准确率。也有些工作为了保证近似神经网络加速硬件的通用性,将多种可能的近似乘法器组成不同的计算阵列,然后由每层路由器选择;这却导致面积显著增加,同时在复杂任务中仍有较高的准确率退化。

技术实现思路

[0005]本专利技术针对现有技术中的不足,提供一种面向近似神经网络重训练的乘法器及其重训练算法。
[0006]第一方面,本专利技术提供一种面向近似神经网络重训练的乘法器,包括:
[0007]多个近似Booth编码模块、多个部分积产生模块和加法器;
[0008]每个所述近似Booth编码模块接收权重输入中对应位置的多比特数据,并对多比特数据进行编码;
[0009]每个所述部分积产生模块接收相应所述近似Booth编码模块输出的多比特数据编码结果,并将多比特数据编码结果与特征图数据进行操作得到部分积;
[0010]所述加法器将所有部分积累加,得到最终输出结果。
[0011]进一步地,采用多个高基数Booth编码以减少所述部分积的数目。
[0012]进一步地,所述采用多个高基数Booth编码以减少所述部分积的数目,包括:
[0013]从权重输入尾部开始依次进行基

8Booth编码;
[0014]如果编码至权重输入头部时需要进行符号位扩展才可进行基

8Booth编码,则对头部采用比基

8Booth编码更低基数进行编码。
[0015]进一步地,所述每个近似Booth编码模块将基

8Booth编码真值表中编码结果为+3或

3的全部置为0;去除了+3和

3的编码结果后,其余编码结果在每个所述部分积产生模块中与特征图输入的乘积均通过移位产生。
[0016]进一步地,将所述权重中的每组4比特重新编码成3比特,并存储3比特编码后的权重;将每个所述近似Booth编码模块的输入从4比特减小到3比特,以减小每个所述近似Booth编码模块的的开销。
[0017]第二方面,本专利技术提供一种如第一方面所述的面向近似神经网络重训练的乘法器的重训练算法,包括:
[0018]设置整数类型权重输入中存在编码结果为
±
3的状态为无效状态,将浮点权重稀疏量化至距离其最近的整数类型有效状态上;
[0019]采用稀疏量化感知训练方法进行重训练以使得权重全部处于Booth编码全部正确的有效状态。
[0020]进一步地,所述采用稀疏量化感知训练方法进行重训练以使得权重全部处于Booth编码全部正确的有效状态,包括:
[0021]将神经网络中每一层的权重W通过提出的伪稀疏量化模块得到稀疏量化感知权重伪稀疏量化模块将浮点类型的权重先稀疏量化至距离其最近的整数类型有效状态上,再反量化回浮点类型,以实现权重W的稀疏量化和训练;
[0022]神经网络中每一层的偏置参数b通过伪量化模块得到量化感知偏置伪量化模块将浮点类型的偏置先量化至整数类型,再反量化回浮点类型,以实现偏置参数b的量化和训练;
[0023]使用和进行每一层的前向计算,并将计算结果结果通过伪量化模块得到每一层的输出结果;
[0024]通过反向传播算法实现神经网络中每一层权重和偏置参数的更新。
[0025]本专利技术提供一种面向近似神经网络重训练的乘法器及其实现方法,其中乘法器包括多个近似Booth编码模块、多个部分积产生模块和加法器;每个所述近似Booth编码模块接收权重输入中对应位置的多比特数据,并对多比特数据进行编码;每个所述部分积产生模块接收相应所述近似Booth编码模块输出的多比特数据编码结果,并将多比特数据编码结果与特征图数据进行操作得到部分积;所述加法器将所有部分积累加,得到最终输出结果。本专利技术通过使用高基数Booth编码以减少部分积数目,并且在近似Booth编码和部分积产生模块引入近似,从而减小乘法器的面积和能耗开销。同时,通过提出的与此近似乘法器相匹配的重训练算法,能够在使用此乘法器的近似神经网络上实现高效重训练。
附图说明
[0026]为了更清楚地说明本专利技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027]图1为本专利技术实施例提供的Booth乘法器完成8bit特征图乘6bit权重的运算图。
[0028]图2为本专利技术实施例提供的Booth编码划分示意图;
[0029]图3为本专利技术实施例提供的8bit
×
6bit近似乘法器结构示意图;
[0030]图4为本专利技术实施例提供的伪量化模块示意图;
[0031]图5为本专利技术实施例提供的伪稀疏量化模块示意图;
[0032]图6为本专利技术实施例提供的稀疏量化感知训练示意图;
[0033]图7为本专利技术实施例提供的一种面向近似神经网络重训练的乘法器的重训练算法流程图。
具体实施方式
[0034]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向近似神经网络重训练的乘法器,其特征在于,包括多个近似Booth编码模块、多个部分积产生模块和加法器;每个所述近似Booth编码模块接收权重输入中对应位置的多比特数据,并对多比特数据进行编码;每个所述部分积产生模块接收相应所述近似Booth编码模块输出的多比特数据编码结果,并将多比特数据编码结果与特征图数据进行操作得到部分积;所述加法器将所有部分积累加,得到最终输出结果。2.根据权利要求1所述的面向近似神经网络重训练的乘法器,其特征在于,采用多个高基数Booth编码以减少所述部分积的数目。3.根据权利要求2所述的面向近似神经网络重训练的乘法器,其特征在于,所述采用多个高基数Booth编码以减少所述部分积的数目,包括:从权重输入尾部开始依次进行基

8Booth编码;如果编码至权重输入头部时需要进行符号位扩展才可进行基

8Booth编码,则对头部采用比基

8Booth编码更低基数进行编码。4.根据权利要求3所述的面向近似神经网络重训练的乘法器,其特征在于,所述每个近似Booth编码模块将基

8Booth编码真值表中编码结果为+3或

3的全部置为0;去除了+3和

3的编码结果后,其余编码结果在每个所述部分积产生模块中与特征图输入的乘积均通过移位产生。5.根据权利要...

【专利技术属性】
技术研发人员:刘伟强余天洋吴比
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1