一种适用于神经网络的乘加计算方法和计算电路与流程

文档序号:16883455发布日期:2019-02-15 22:24阅读:506来源:国知局
一种适用于神经网络的乘加计算方法和计算电路与流程

本发明涉及模拟集成电路技术领域,特别是涉及一种应用于神经网络的乘加计算方法和电路。



背景技术:

神经网络,是一种运算模型,由大量的节点相互联接构成。每个节点代表一种激励函数,每两个节点间的连接代表一个权重。人工神经网络的输出依网络的连接方式、权重值和激励函数的不同而不同。近年来,人工神经网络和深度学习取得了很大的进展,神经网络的大规划并行性使其具有快速处理某些任务的潜在能力,因而在模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域均表现出了良好的智能特性。

随着神经网络的不断深入各领域的应用,所需解决的问题也越来越复杂,神经网络具有大量复杂的、并行的乘加运算,需要消耗大量的计算资源,传统上一般采用计算机对数据进行离线处理和分析,这种数据处理方式在很大程度上限值了神经网络在实时系统中的应用。以最常用的卷积神经网络为例,一次运算中存在着大量的乘加运算,传统的数字运算方法实现乘法运算时随着乘数比特位的增加,存在着占用面积大、功耗大等问题,因此,提出一种适用于神经网络的乘加方法,在满足硬件资源低功耗、高速的前提下,完成神经网络中大规模的乘加计算任务具有十分重要的意义。



技术实现要素:

本发明所要解决的技术问题是:提出一种适用于神经网络的乘加计算方法和计算电路,以满足神经网络计算规模和精度要求,并实现低功耗、高速度的完成计算任务。

本发明为解决上述技术问题采用以下技术方案:

一方面,提出一种适用于神经网络的乘加计算电路,包括乘法计算电路阵列和累加计算电路。

乘法计算电路阵列由m组相同的乘法计算电路级联而成;各组乘法计算电路用于将神经网络的输入数据与神经网络权重系数相乘,并将所得乘积各bit位上的数据依次输入到累加计算电路中。

累加计算电路,用于在时间域内将乘法计算电路阵列输出的各组乘积中各bit位上的数据完成累加,并将所得时间量化的结果经tdc电路转化成数字量后再进行相加移位操作,得到神经网络的输出数据。

乘法计算电路阵列有2m组输入端和m组输出端;累加计算电路有m组输入端和一组输出端;累加计算电路的m组输入端分别和乘法计算电路阵列的m组输出端对应相连。

每组乘法计算电路有两组输入端和一组输出端;神经网络的各组输入数据分别从各组乘法计算电路的第一输入端送入;神经网络的各组权重系数分别从各组乘法计算电路的第二输入端送入;神经网络的输出数据从累加计算电路的输出端送出。

第m组乘法计算电路的第一输入端输入第m输入数据,这是1个8bit位数据;第m组乘法计算电路的第二输入端输入第m组权重系数,包括8个8bit位数据,分别是第m组第一权重系数、第m组第二权重系数、第m组第三权重系数、第m组第四权重系数、第m组第五权重系数、第m组第六权重系数、第m组第七权重系数和第m组第八权重系数;第m组乘法计算电路的输出端输出第m组乘积,包括8组数据,分别是第m组第一乘积、第m组第二乘积、第m组第三乘积、第m组第四乘积、第m组第五乘积、第m组第六乘积、第m组第七乘积,第m组第八乘积;第m组第一乘积到第八乘积中都包含8个1bit位数据;累加计算电路的输出端输出8个8bit位数据。

进一步提出,各组乘法计算电路均由一组乘法阵列单元和八组相互独立的选择移位单元组成;乘法阵列单元,用于将神经网络的输入数据和特征乘数相乘,得到特征乘积;选择移位单元,根据神经网络的权重系数对特征乘积进行选择和移位操作,得到神经网络的输入数据与神经网络权重系数的乘积,并将所得乘积各bit位上的数据依次输入到累加计算电路中。

八组选择移位单元包括第一选择移位单元、第二选择移位单元、第三选择移位单元、第四选择移位单元、第五选择移位单元、第六选择移位单元、第七选择移位单元和第八选择移位单元。

乘法阵列单元有一组输入端和一组输出端;每组选择移位单元都有两组输入端和一组输出端;乘法阵列单元的输入端与乘法计算电路的第一输入端相连;乘法阵列单元的输出端和各组选择移位单元的第一输入端形成共享连接;各组选择移位单元的第二输入端分别和乘法计算电路的第二输入端相连;每组选择移位单元的输出端分别与乘法计算电路的输出端相连。

乘法阵列单元输出n个特征乘积、每个特征乘积是一个8bit位数据,其中n是8或者4或者2或者1;n个特征乘积作为第一到第八选择移位单元的共享输入数据,自第一到第八选择移位单元的第一输入端输入;第一到第八选择移位单元的第二输入端依照顺序对应输入第一到第八权重系数;第一到第八选择移位单元依照顺序分别输出第一到第八乘积各bit位上的数据。

进一步提出,乘法阵列单元由8个或者4个或者2个或者1个计算子单元组成,分别称为八阶量化、四阶量化、二阶量化和一阶量化。

八阶量化乘法阵列单元的特征乘数分别是1,3,5,7,9,11,13,15;四阶量化乘法阵列单元的特征乘数分别是1,3,5,7;二阶量化乘法阵列单元的特征乘数分别是1,3;一阶量化乘法阵列单元的特征乘数是1。

八阶量化乘法阵列单元的特征乘积是1×input,3×input,5×input,7×input,9×input,11×input,13×input,15×input;四阶量化乘法阵列单元的特征乘积是1×input,3×input,5×input,7×input;二阶量化乘法阵列单元的特征乘积是1×input,3×input;一阶量化乘法阵列单元的特征乘积是1×input。

进一步提出,累加计算电路由延时累加电路、tdc转换电路和相加移位电路依次串联构成。延时累加电路有m组输入端和八组输出端;tdc转换电路有八组输入端和八组输出端;相加移位电路有八组输入端和一组输出端;延时累加电路的m组输入端分别和乘法计算电路阵列的m组输出端对应相连;延时累加电路的八组输出端分别和tdc转换电路的八组输入端对应相连;tdc转换电路的八组输出端分别和相加移位电路的八组输入端对应相连;相加移位电路的输出端就是累加计算电路的输出端。

进一步提出,延时累加电路是8条相互独立的可控延时链构成的求和阵列;可控延时链的数量等于乘法计算电路阵列输出乘积的比特位的数量;任意一条可控延时链完成m组乘积某bit位数据在时间域内的一次累加。

每条可控延时链由m个可控延时块顺序串联而成;奇数位置上的可控延时块的触发信号是时钟上升沿;偶数位置上的可控延时块的触发信号是时钟下降沿;每个可控延时块都有两个输入端,第一输入端均用于接收时间参考信号,第二输入端分别与延时累加电路的m组输入端对应连接,用于接收m组乘积某bit位数据;每个可控延时块有一个输出端,输出叠加延时量后的时间信号。

另一方面,提出一种适用于神经网络的乘加计算方法,借助于前面所述的乘加计算电路而实现。乘加计算方法包括一种乘法计算方法和一种累加计算方法,具体步骤如下:

步骤101:采用片上训练方式对每组乘法计算电路中乘法阵列单元的阶数进行实时量化,以n阶量化乘法阵列单元进行神经网络实际计算;

步骤102:每组乘法计算电路中,n阶量化乘法阵列单元向第一至第八选择移位单元提供n个特征乘积作为共享输入;

步骤103:每组乘法计算电路中,一个计算周期内,每个选择移位单元将权重系数高四位的十进制数值、权重系数低四位的十进制数值分别与n阶量化乘法阵列单元的特征乘数进行比较并输出各组乘积,具体如下:

步骤103-a:权重系数高四位的十进制数值与特征乘数一致且不为0时,则直接输出对应的特征乘积各bit位的数据;权重系数低四位的十进制数值与特征乘数一致且不为0时,选择对应的特征乘积,则直接输出对应的特征乘积各bit位的数据;并进入步骤104;

步骤103-b:权重系数高四位的十进制数值与特征乘数不一致且不为0时,对特征乘积进行移位操作,输出所得结果各bit位的数据;权重系数低四位的十进制数值与特征乘数不一致且不为0时,对特征乘积进行移位操作,输出所得结果各bit位的数据;并进入步骤104;

步骤103-c:权重系数高四位的十进制数值为0时,则直接输出0;权重系数低四位的十进制数值为0时,则直接输出0;并进入步骤104;

步骤104:第一组到第m组乘积中ibit位上的数据依次输入到第i+1条延时链的m个可控延时块中,其中i为0到7之中的任意一个自然数;

在触发信号时刻,可控延时块根据所输入数据的不同数值而输出不同的延时量,具体如下:当输入数据是0时,可控延时块输出延时量为δt;当输入数据是1时,可控延时块输出延时量为2δt;在非触发信号时刻,无论输入数据是0或者1,可控延时块均输出延时量为δt;

步骤105:第i+1条可控延时链完成第一组到第m组乘积中ibit位上的数据在时间域内的一次累加;当神经网络计算规模超过可控延时块级联数量m时,动态控制各条可控延时链迭代计算次数;

步骤106:使用tdc转换电路,将每条可控延时链输出的延时量转化成十进制的数字量;

步骤107:使用相加移位电路对数字量进行相加和右移位操作,得到神经网络的输出数据。

进一步提出,每组乘法计算电路中,片上训练方式具体步骤如下:

步骤201:神经网络权重系数初始化;训练数据集设置;得到预训练神经网络nn0;

步骤202,包括两个同时开展的部分,具体如下:

步骤202-a:采用测试数据集对预训练神经网络nn0进行测试,得到网络精度初始值a;

步骤202-b:初始化乘法阵列单元的量化阶数为一阶,并采用一阶量化后的乘法计算电路替换预训练神经网络nn0中的标准乘法计算电路,得到一阶量化神经网络nn1;采用测试数据集对一阶量化神经网络nn1进行训练,得到网络精度实际值b;

步骤203:引入网络精度限值q,判断b和a×q的大小关系:若b>a×q,则进入步骤209;若b<a×q,则进入步骤204;

步骤204:提高乘法阵列单元的量化阶数为二阶,并采用二阶量化后的乘法计算电路替换预训练神经网络nn0中的标准乘法计算电路,得到二阶量化神经网络nn2;采用测试数据集对二阶量化神经网络nn2进行训练,得到网络精度实际值b;

步骤205:引入网络精度限值q,判断b和a×q的大小关系:若b>a×q,则进入步骤209;若b<a×q,则进入步骤206;

步骤206:提高乘法阵列单元的量化阶数为四阶,并采用四阶量化后的乘法计算电路替换预训练神经网络nn0中的标准乘法计算电路,得到四阶量化神经网络nn4;采用测试数据集对四阶量化神经网络nn4进行训练,得到网络精度实际值b;

步骤207:引入网络精度限值q,判断b和a×q的大小关系:若b>a×q,则进入步骤209;若b<a×q,则进入步骤208;

步骤208:提高乘法阵列单元的量化阶数为八阶,并采用八阶量化后的乘法计算电路替换预训练神经网络nn0中的标准乘法计算电路,得到八阶量化神经网络nn8;进入步骤209;

步骤209:结束乘法阵列单元量化阶数的片上训练,以当前量化阶数的乘法阵列单元进行神经网络实际计算。

进一步提出,每组乘法计算电路中,根据乘法阵列单元的量化阶数,步骤103-b中对特征乘积进行移位操作,具体如下:

当乘法阵列单元的量化阶数为八时:对特征乘积1×input左移1位得到2×input;对特征乘积1×input左移2位得到4×input;对特征乘积3×input左移1位得到6×input;对特征乘积1×input左移3位得到8×input;对特征乘积5×input左移1位得到10×input;对特征乘积3×input左移2位得到12×input;对特征乘积7×input左移1位得到14×input。

当乘法阵列单元的量化阶数为四时:对特征乘积1×input左移1位得到2×input;对特征乘积1×input左移2位得到4×input;对特征乘积3×input左移1位得到6×input;对特征乘积1×input左移3位得到8×input;对特征乘积3×input左移2位得到12×input;对特征乘积1×input左移2位得到4×input,近似表示5×input;对特征乘积3×input左移1位得到6×input,近似表示7×input;对特征乘积1×input左移3位得到8×input,近似表示9×input和10×input;对特征乘积3×input左移2位得到12×input,近似表示11×input、13×input、14×input和15×input。

当乘法阵列单元的量化阶数为二时:对特征乘积1×input左移1位得到2×input;对特征乘积1×input左移2位得到4×input;对特征乘积3×input左移1位得到6×input;对特征乘积1×input左移3位得到8×input;对特征乘积3×input左移2位得到12×input;对特征乘积1×input左移2位得到4×input,近似表示5×input;对特征乘积3×input左移1位得到6×input,近似表示7×input;对特征乘积1×input左移3位得到8×input,近似表示9×input和10×input;对特征乘积3×input左移2位得到12×input,近似表示11×input、13×input、14×input和15×input。

当乘法阵列单元的量化阶数为一时:对特征乘积1×input左移1位得到2×input;对特征乘积1×input左移2位得到4×input;对特征乘积1×input左移3位得到8×input;对特征乘积1×input左移1位得到2×input,近似表示3×input;对特征乘积1×input左移2位得到4×input,近似表示5×input、6×input、7×input;对特征乘积1×input左移3位得到8×input,近似表示9×input、10×input、11×input、12×input、13×input、14×input、15×input。

进一步提出,步骤105中动态控制各条可控延时链迭代计算次数,具体步骤如下:

步骤301:神经网络的计算规模为w,将w组数据分成k段m组数据和一段n组数据,其中k是大于等于1的整数,n是大于等于1且小于m的整数;

步骤302:以时间信号yj-1为输入,各条可控延时链对第j段m组数据开展第j次累加计算,输出时间量yj=yj-1+δtj,其中j是从1到k的自然数;

步骤303:以时间信号yk为输入,各条可控延时链对n组数据开展累加计算,输出时间量y=yk+δt。

本发明采用以上技术方案与现有技术相比,具有以下技术效果;

1、针对神经网络不同的计算规模和精度要求,提出一种乘加计算方法,采用片上训练方式动态实时调整乘法阵列单元的量化阶数,以当前n阶量化乘法阵列单元进行神经网络实际计算,使得精确度和功耗达到最优。

2、每组乘法计算电路中,八组选择移位单元共享一组乘法阵列单元的输出,因此在同一个计算周期内,这八组选择移位单元可同时开展乘法计算,显著提高了电路的运算速率;并且每组乘法计算电路中仅有一组乘法阵列单元,因此相比现有技术,显著降低了乘法电路的功耗,提高了电路吞吐率。

3、延时累加电路是可控延时链构建的求和阵列,基于延时信号具有可叠加性,因此根据神经网络的每层网络计算规模,动态调整求和阵列的迭代次数,即各可控延时链的迭代次数,从而满足不同网络层计算规模的差异性,节省硬件存储空间、降低计算的复杂度、减小数据调度。

4、延时累加电路中,数字量被直接转换为时间量进行累加操作,在完成期望的迭代次数后,由tdc电路将最终得到的时间里进行数字转换。全部累加过程在时间域内完成,消除了外电路非理想效应的影响;在保证累加精度的同时,可以减小电路的复杂度,使其电路易于实现。并且,时域内电路转换速度快、效率高,使得延时累加电路在低功耗高速环境下运行,满足了实际应用中的需求。

附图说明

图1是本发明提出的一种适用于神经网络的乘加计算电路的方框示意图;

图2是本发明提出的一种适用于神经网络的乘加计算电路中的一组乘法计算电路的方框示意图;

图3是本发明提出的采用片上训练方式动态实时调整所述乘法阵列单元的量化阶数的控制逻辑图,以dnn网络为例;

图4是本发明提出的一种适用于神经网络的乘加计算电路中的延时累加电路的原理示意图。

具体实施方式

具体实施例一:

图1是本发明提出的一种适用于神经网络的乘加计算电路的方框示意图,图中所示的乘加计算电路包括乘法计算电路阵列和累加计算电路。

乘法计算电路阵列由m组相同的乘法计算电路级联而成;各组乘法计算电路用于将神经网络的输入数据与神经网络权重系数相乘,并将所得乘积各bit位上的数据依次输入到累加计算电路中。

累加计算电路,用于在时间域内将乘法计算电路阵列输出的各组乘积中各bit位上的数据完成累加,并将所得时间量化的结果经tdc电路转化成数字量后再进行相加移位操作,得到神经网络的输出数据。

乘法计算电路阵列有2m组输入端和m组输出端;累加计算电路有m组输入端和一组输出端;累加计算电路的m组输入端分别和乘法计算电路阵列的m组输出端对应相连。

每组乘法计算电路有两组输入端和一组输出端;神经网络的各组输入数据分别从各组乘法计算电路的第一输入端送入;神经网络的各组权重系数分别从各组乘法计算电路的第二输入端送入;神经网络的输出数据从累加计算电路的输出端送出。

累加计算电路由延时累加电路、tdc转换电路和相加移位电路依次串联构成。延时累加电路有m组输入端和八组输出端;tdc转换电路有八组输入端和八组输出端;相加移位电路有八组输入端和一组输出端;延时累加电路的m组输入端分别和乘法计算电路阵列的m组输出端对应相连;延时累加电路的八组输出端分别和tdc转换电路的八组输入端对应相连;tdc转换电路的八组输出端分别和相加移位电路的八组输入端对应相连;相加移位电路的输出端就是累加计算电路的输出端。

本实施例结合图1对乘法计算电路的输出数据给出具体说明,如下:

第m组乘法计算电路的第一输入端输入第m输入数据,这是1个8bit位数据;第m组乘法计算电路的第二输入端输入第m组权重系数,包括8个8bit位数据,分别是第m组第一权重系数、第m组第二权重系数、第m组第三权重系数、第m组第四权重系数、第m组第五权重系数、第m组第六权重系数、第m组第七权重系数和第m组第八权重系数。

第m组乘法计算电路的输出端输出第m组乘积,包括8组数据,如下:

第m组第一乘积pm-1=第m输入数据×第m组第一权重系数;

第m组第二乘积pm-2=第m输入数据×第m组第二权重系数;

第m组第三乘积pm-3=第m输入数据×第m组第三权重系数;

第m组第四乘积pm-4=第m输入数据×第m组第四权重系数;

第m组第五乘积pm-5=第m输入数据×第m组第五权重系数;

第m组第六乘积pm-6=第m输入数据×第m组第六权重系数;

第m组第七乘积pm-7=第m输入数据×第m组第七权重系数;

第m组第八乘积pm-8=第m输入数据×第m组第八权重系数;

第m组第一乘积到第八乘积中都包含8个1bit位数据,第m组乘积pm是一个8×8的矩阵,如下:

具体实施例二:

图2是本发明提出的一种适用于神经网络的乘加计算电路中的一组乘法计算电路的方框示意图。

如图2所示,每一组乘法计算电路均由一组乘法阵列单元和八组相互独立的选择移位单元组成;乘法阵列单元,用于将神经网络的输入数据和特征乘数相乘,得到特征乘积;选择移位单元,根据神经网络的权重系数对特征乘积进行选择和移位操作,得到神经网络的输入数据与神经网络权重系数的乘积,并将所得乘积各bit位上的数据依次输入到累加计算电路中。

八组选择移位单元包括第一选择移位单元、第二选择移位单元、第三选择移位单元、第四选择移位单元、第五选择移位单元、第六选择移位单元、第七选择移位单元和第八选择移位单元。

乘法阵列单元有一组输入端和一组输出端;每组选择移位单元都有两组输入端和一组输出端;乘法阵列单元的输入端与乘法计算电路的第一输入端相连;乘法阵列单元的输出端和各组选择移位单元的第一输入端形成共享连接;各组选择移位单元的第二输入端分别和乘法计算电路的第二输入端相连;每组选择移位单元的输出端分别与乘法计算电路的输出端相连。

乘法阵列单元输出n个特征乘积、每个特征乘积是一个8bit位数据,其中n是8或者4或者2或者1;n个特征乘积作为第一到第八选择移位单元的共享输入数据,自第一到第八选择移位单元的第一输入端输入;第一到第八选择移位单元的第二输入端依照顺序对应输入第一到第八权重系数;第一到第八选择移位单元依照顺序分别输出第一到第八乘积各bit位上的数据。

乘法阵列单元由8个或者4个或者2个或者1个计算子单元组成,分别称为八阶量化、四阶量化、二阶量化和一阶量化。

八阶量化乘法阵列单元的特征乘数分别是1,3,5,7,9,11,13,15;四阶量化乘法阵列单元的特征乘数分别是1,3,5,7;二阶量化乘法阵列单元的特征乘数分别是1,3;一阶量化乘法阵列单元的特征乘数是1。

八阶量化乘法阵列单元的特征乘积是1×input,3×input,5×input,7×input,9×input,11×input,13×input,15×input;四阶量化乘法阵列单元的特征乘积是1×input,3×input,5×input,7×input;二阶量化乘法阵列单元的特征乘积是1×input,3×input;一阶量化乘法阵列单元的特征乘积是1×input。

每组乘法计算电路中,根据乘法阵列单元的量化阶数,对特征乘积进行移位操作,具体如下:

当乘法阵列单元的量化阶数为八时:对特征乘积1×input左移1位得到2×input;对特征乘积1×input左移2位得到4×input;对特征乘积3×input左移1位得到6×input;对特征乘积1×input左移3位得到8×input;对特征乘积5×input左移1位得到10×input;对特征乘积3×input左移2位得到12×input;对特征乘积7×input左移1位得到14×input。

当乘法阵列单元的量化阶数为四时:对特征乘积1×input左移1位得到2×input;对特征乘积1×input左移2位得到4×input;对特征乘积3×input左移1位得到6×input;对特征乘积1×input左移3位得到8×input;对特征乘积3×input左移2位得到12×input;对特征乘积1×input左移2位得到4×input,近似表示5×input;对特征乘积3×input左移1位得到6×input,近似表示7×input;对特征乘积1×input左移3位得到8×input,近似表示9×input和10×input;对特征乘积3×input左移2位得到12×input,近似表示11×input、13×input、14×input和15×input。

当乘法阵列单元的量化阶数为二时:对特征乘积1×input左移1位得到2×input;对特征乘积1×input左移2位得到4×input;对特征乘积3×input左移1位得到6×input;对特征乘积1×input左移3位得到8×input;对特征乘积3×input左移2位得到12×input;对特征乘积1×input左移2位得到4×input,近似表示5×input;对特征乘积3×input左移1位得到6×input,近似表示7×input;对特征乘积1×input左移3位得到8×input,近似表示9×input和10×input;对特征乘积3×input左移2位得到12×input,近似表示11×input、13×input、14×input和15×input。

当乘法阵列单元的量化阶数为一时:对特征乘积1×input左移1位得到2×input;对特征乘积1×input左移2位得到4×input;对特征乘积1×input左移3位得到8×input;对特征乘积1×input左移1位得到2×input,近似表示3×input;对特征乘积1×input左移2位得到4×input,近似表示5×input、6×input、7×input;对特征乘积1×input左移3位得到8×input,近似表示9×input、10×input、11×input、12×input、13×input、14×input、15×input。

通过对本实施例的分析,可见八阶量化的乘法计算电路可以精确计算出16个乘积;四阶量化的乘法计算电路可以精确计算出12个乘积和近似计算出4个乘积;二阶量化的乘法计算电路可以精确计算出8个乘积和近似计算出8个乘积;一阶量化的乘法计算电路,相当于取消了乘法阵列结构,直接将输入数据输入到选择移位单元,可以精确计算出5个乘积和近似计算出11个乘积。

可见,共享乘法器中的乘法阵列实时量化的阶数越多,乘法器计算的精度越高,但是速度降低、损耗增加;而乘法阵列量化的阶数越少,乘法器计算的精度越低,但是功耗显著降低,并且电路的吞吐率和速度显著提高。尤其是一阶实时量化后,实现了完全解放共享乘法器,取消了共享乘法阵列,将乘法用移位和相加的方法替换实现,对于精确度要求不高的应用场景,完全解放乘法器具有很大的优势,实现了乘法的超低功耗近似计算,大大提高了电路的工作效率。

具体实施例三:

图3是本发明提出的采用片上训练方式动态实时调整所述乘法阵列单元的量化阶数的控制逻辑图。结合图3,本实施例以dnn的片上训练为优选,采用片上训练方式将各乘法阵列单元的阶数量化为四阶,具体如下:

步骤201:dnn权重系数初始化;训练数据集设置;得到预训练dnn;

步骤202,包括两个同时开展的部分,具体如下:

步骤202-a:采用测试数据集对预训练dnn进行测试,得到网络精度初始值a;

步骤202-b:初始化乘法阵列单元的量化阶数为一阶,并采用一阶量化后的乘法计算电路替换预训练dnn中的标准乘法计算电路,得到dnn1;采用测试数据集对dnn1进行训练,得到网络精度实际值b;

步骤203:引入网络精度限值q,此时b<a×q,则进入步骤4;

步骤204:提高乘法阵列单元的量化阶数为二阶,并采用二阶量化后的乘法计算电路替换预训练dnn中的标准乘法计算电路,得到dnn2;采用测试数据集对dnn2进行训练,得到网络精度实际值b;

步骤205:引入网络精度限值q,此时b<a×q,则进入步骤6;

步骤206:提高乘法阵列单元的量化阶数为四阶,并采用四阶量化后的乘法计算电路替换预训练dnn中的标准乘法计算电路,得到dnn4;采用测试数据集对dnn4进行训练,得到网络精度实际值b;

步骤207:引入网络精度限值q,此时b>a×q,则结束乘法阵列单元量化阶数的片上训练,以四阶量化的乘法阵列单元进行dnn实际计算。

具体实施例四:

图4是本发明提出的一种适用于神经网络的乘加计算电路中的延时累加电路的原理示意图。结合图4,对延时累加电路开展具体说明,如下:

延时累加电路是8条相互独立的可控延时链构成的求和阵列;根据具体实施例一可知,可控延时链的数量等于乘法计算电路阵列输出乘积的比特位的数量。

每条可控延时链由m个可控延时块顺序串联而成;奇数位置上的可控延时块del1的触发信号是时钟上升沿;偶数位置上的可控延时块del2的触发信号是时钟下降沿;每个可控延时块都有两个输入端,第一输入端均用于接收时间参考信号,第二输入端分别与延时累加电路的m组输入端对应连接,用于接收m组乘积某bit位数据;每个可控延时块有一个输出端,输出叠加延时量后的时间信号。

在触发信号时刻,可控延时块根据所输入数据的不同数值而输出不同的延时量,具体如下:当输入数据是0时,可控延时块输出延时量为δt;当输入数据是1时,可控延时块输出延时量为2δt;在非触发信号时刻,无论输入数据是0或者1,可控延时块均输出延时量为δt

以四阶量化的乘法计算电路阵列为例,对延时累加电路中的第三条可控延时链的累加过程,详细说明如下:

输入到第五条可控延时链进行累加计算的数据,是第一组到第m组乘积中的第4bit位上的数据,具体:其中1≤j≤8;

输入数据数量为8m个,根据该计算规模,动态控制第五条可控延时链的迭代计算次数为8。

第一次迭代时,以时间信号y0为输入,第五条可控延时链上各延时块依次输入则延时链输出时间量y1=y0+δt1;第二次迭代时,以时间信号y1为输入,第五条可控延时链上各延时块依次输入则延时链输出时间量y2=y1+δt2=y0+δt1+δt2;经过8次迭代后,第五条延时链输出时间量为此时要对该输出时间量里包含的本征延时量tin进行消除,即通过多次迭代计算后,第五条可控延时链只输出一个时间延时量tdelay=y-y0,该延时量的长短代表了输入的数据信号中“1”的数量。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1