神经网络权重矩阵调整方法、写入控制方法以及相关装置与流程

文档序号:26493489发布日期:2021-09-03 20:50阅读:62来源:国知局
神经网络权重矩阵调整方法、写入控制方法以及相关装置与流程

1.本发明涉及人工智能技术领域,尤其涉及一种神经网络权重矩阵调整方法、写入控制方法以及相关装置。


背景技术:

2.为了解决传统冯诺依曼计算体系结构瓶颈,存内计算(computing-in-memory,cim)芯片得到人们的广泛关注,其基本思想是直接利用存储器进行逻辑计算,从而减少存储器与处理器之间的数据传输量以及传输距离,降低功耗的同时提高性能。
3.由于存内计算芯片的存算一体特性,存内计算芯片适用于神经网络运算场景,通过预先将训练好的神经网络算法的权重矩阵写入存内计算芯片的存储单元阵列中,待处理信号通过并行输入,基于欧姆定律与基尔霍夫定律,待处理信号与对应权重直接在存储单元阵列中执行向量-矩阵乘加运算,存储单元阵列的输出电流/电流信号通过adc(模数转换器)量化后作为输出结果。
4.在实际应用中,如果神经网络算法的权重分布过小或过大(参见图1或参见图2,其中,圆圈表示存储单元,其内的数字表示其内预存的权重值,横向表示行输入,即输入信号,比如图1中的第一行的输入为7,第二行的输入为5,第三行的输入为3,从上到小的箭头表示输出,比如第一列的输出为7,第二列的输出为7,第三列的输出为248,每列输出信号均输入一adc,用于将该列的模拟输出信号转换为数字信号,供后续应用;其中,图1示出了第一列以及第二列的输出电压/电流太小,超出adc下限量程;图2示出了三列存储单元的输出电压/电流太大,超出adc上限量程),或者输入信号过小或过大,都可能导致存储单元阵列的模拟电压/电流输出值过小或过大,可能会超出adc的下限或上限量程;通常adc对中间值的量化精度最高,对两边的值量化精度较差,当adc的输入超过下限或上限量程时,对应的输出被直接截断成最小或最大值,从而降低了运算精度。


技术实现要素:

5.针对现有技术中的问题,本发明提供一种神经网络权重矩阵调整方法、写入控制方法以及相关装置、电子设备以及计算机可读存储介质,能够至少部分地解决现有技术中存在的问题。
6.为了实现上述目的,本发明采用如下技术方案:
7.第一方面,提供一种神经网络权重矩阵调整方法,包括:
8.判断神经网络权重矩阵的权重分布是否低于第一预设阈值;
9.若是,将该神经网络权重矩阵中的所有权重值均乘以一第一常数;
10.若否,判断该神经网络权重矩阵的权重分布是否高于第二预设阈值,其中,该第二预设阈值大于该第一预设阈值;
11.若该神经网络权重矩阵的权重分布高于第二预设阈值,则将该神经网络权重矩阵中的所有权重值均除以一第二常数;
12.其中,该第一常数以及该第二常数均大于1。
13.进一步地,该将该神经网络权重矩阵中的所有权重值均乘以一第一常数后,还包括:
14.判断处理后的权重矩阵中的各权重值的位数是否超出第三预设阈值;
15.若是,截取各权重值超出该第三预设阈值的位得到第一权重阵列以及第二权重阵列;
16.其中,该第一权重阵列为将各权重值的位数超出该第三预设阈值的位截去后剩余的权重阵列,用于存入一存储单元阵列;该第二权重阵列为将各权重值的位数超出该第三预设阈值的位截取出来得到的权重阵列,用于存入另一存储单元阵列或输入算术运算电路。
17.进一步地,神经网络权重矩阵调整方法还包括:
18.若处理后的权重矩阵中的各权重值的位数均未超出该第三预设阈值,则将处理后的权重阵列用于存入一存储单元阵列。
19.进一步地,神经网络权重矩阵调整方法还包括:
20.当该第二权重阵列存入另一存储单元阵列时,将该第一权重阵列对应的存储单元阵列后的adc输出结果与该第二权重阵列对应的存储单元阵列后的adc输出结果结合;
21.当该第二权重阵列输入该算术运算电路时,将该第一权重阵列对应的存储单元阵列后的adc输出结果与该算术运算电路的输出结果结合。
22.进一步地,该将该神经网络权重矩阵中的所有权重值均除以一第二常数包括:
23.将各权重值除以该第二常数得到第三权重阵列;
24.将各权重值除以该第二常数后的溢出位另存为第四权重阵列;
25.其中,该第三权重阵列用于存入一存储单元阵列;该第四权重阵列用于存入另一存储单元阵列或输入算术运算电路。
26.进一步地,神经网络权重矩阵调整方法还包括:
27.当该第四权重阵列存入另一存储单元阵列时,将该第三权重阵列对应的存储单元阵列后的adc输出结果与该第四权重阵列对应的存储单元阵列后的adc输出结果结合;
28.当该第四权重阵列输入该算术运算电路时,将该第三权重阵列对应的存储单元阵列后的adc输出结果与该算术运算电路的输出结果结合。
29.第二方面,提供一种神经网络权重矩阵写入控制方法,包括:
30.根据数据调整指令控制移位寄存器对其输入的各权重值进行移位操作,并且,将该移位寄存器对其输入的权重值进行移位后溢出的位及该权重值在该神经网络权重矩阵中的地址存入缓存器,其中,该数据调整指令包括:移位方向以及移位位数;
31.将该缓存器中的数据存入一存储单元阵列或输入算术运算电路;
32.其中,该数据调整指令为神经网络权重矩阵的权重分布不均时产生;该移位寄存器连接一写入模块;该写入模块连接另一存储单元阵列,用于将该移位寄存器移位后的数据写入另一存储单元阵列。
33.进一步地,神经网络权重矩阵写入控制方法还包括:
34.当该缓存器中的数据输入算术运算电路时,将该另一存储单元阵列后的adc输出结果与该算术运算电路的输出结果结合;
35.当该缓存器中的数据存入一存储单元阵列时,将该存储单元阵列后的adc输出结果与该另一存储单元阵列后的adc输出结果结合。
36.第三方面,提供一种神经网络权重矩阵调整装置,包括:
37.第一判断模块,判断神经网络权重矩阵的权重分布是否低于第一预设阈值;
38.权重放大模块,若神经网络权重矩阵的权重分布低于第一预设阈值,将该神经网络权重矩阵中的所有权重值均乘以一第一常数;
39.第二判断模块,若神经网络权重矩阵的权重分布不低于第一预设阈值,判断该神经网络权重矩阵的权重分布是否高于第二预设阈值,其中,该第二预设阈值大于该第一预设阈值;
40.权重缩小模块,若该神经网络权重矩阵的权重分布高于第二预设阈值,则将该神经网络权重矩阵中的所有权重值均除以一第二常数;
41.其中,该第一常数以及该第二常数均大于1。
42.第四方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述的神经网络权重矩阵调整方法的步骤。
43.第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的神经网络权重矩阵调整方法的步骤。
44.本发明提供的神经网络权重矩阵调整方法、写入控制方法以及相关装置、电子设备以及计算机可读存储介质,适用于在利用存内计算芯片执行神经网络运算前对训练后的神经网络权重矩阵进行处理,该方法包括:判断神经网络权重矩阵的权重分布是否低于第一预设阈值;若是,将该神经网络权重矩阵中的所有权重值均乘以一第一常数;若否,判断该神经网络权重矩阵的权重分布是否高于第二预设阈值,其中,该第二预设阈值大于该第一预设阈值;若该神经网络权重矩阵的权重分布高于第二预设阈值,则将该神经网络权重矩阵中的所有权重值均除以一第二常数;其中,该第一常数以及该第二常数均大于1。通过将整体分布不均匀的神经网络权重矩阵成倍增大或成倍缩小,以便使得将处理后的权重矩阵存储存储单元阵列进行存内计算后得到的信号处于adc(adc设置在存储单元阵列之后,用于将各存储单元列的输出转换为数字信号)的有效量程内,进而提高运算精度。
45.为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
46.为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
47.图1示出了在存内计算芯片的存储单元阵列中执行矩阵运算时存储单元列的输出电流/电压太小导致超过adc下限量程;
48.图2示出了在存内计算芯片的存储单元阵列中执行矩阵运算时存储单元列的输出电流/电压太大导致超过adc上限量程;
49.图3示出了本发明实施例提供的神经网络权重矩阵调整方法的应用场景;
50.图4是本发明实施例中的神经网络权重矩阵调整方法的流程示意图一;
51.图5示出了本发明实施例提供的神经网络权重矩阵调整方法的原理图;
52.图6示出了利用本发明实施例提供的神经网络权重矩阵调整方法调整后的权重阵列存在权重值超位数的情况。
53.图7是本发明实施例中的神经网络权重矩阵调整方法的流程示意图二;
54.图8示出了本发明实施例中放大权重阵列后分割权重阵列的一种原理图;
55.图9示出了本发明实施例中放大权重阵列后分割权重阵列的另一种原理图;
56.图10示出了本发明实施例中步骤s400的具体步骤;
57.图11示出了本发明实施例中缩小权重阵列后分割权重阵列的一种原理图;
58.图12是本发明实施例中的神经网络权重矩阵调整装置的结构框图;
59.图13示出了本发明实施例提供的神经网络权重矩阵写入控制方法的应用场景;
60.图14是本发明实施例中的神经网络权重矩阵写入控制方法的流程示意图;
61.图15为本发明实施例电子设备的结构图。
具体实施方式
62.为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
63.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
64.需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
65.需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
66.图3示出了本发明实施例提供的神经网络权重矩阵调整方法的应用场景;如图3所示,编译软件1连接存内计算芯片2中的编程电路,用于将利用本发明实施例提供的神经网络权重矩阵调整方法调整后的神经网络权重矩阵通过编程电路写入存内计算芯片2中的存储单元阵列中,在应用该神经网络处理输入数据时,输入数据流经过一定的预处理后传输至存储单元阵列中,与存储单元阵列中预先写入的神经网络权重矩阵进行神经网络运算,存储单元阵列的输出数据流经过adc模块转换为数字信号,输出运算结果。
67.值得说明的是,图3中仅示例性列举出存内计算芯片2中的几个电路模块,本领域
技术人员可以理解的是,该存内计算芯片2中还可以设有寄存器、后处理模块等相关的功能电路,另外,本领域技术人员可以理解的是,该编程电路也可以称为写入模块或者读写模块,用于对存储单元阵列中每个存储单元(可采用可编程半导体器件实现,如浮栅mos管)进行编程或称写入数据。
68.其中,编译软件可为目前已经开发或者尚未开发出的编译处理软件,也可以是一段编程的计算机程序,可在计算机设备中执行,也可以在处理芯片或移动便携设备中执行,本发明实施例对此不作限制。
69.另外,对于存内计算芯片来说,对于可重复编程使用场所的存内计算芯片来说,可以在其内设置编程电路,对于不需要调整神经网络权重矩阵的应用场所来说,为了减小芯片的体积,可以不设置编程电路,而是在出厂时预先通过编程设备将调整后的最终神经网络权重矩阵写入存内计算芯片中。
70.图4是本发明实施例中的神经网络权重矩阵调整方法的流程示意图一;如图4所示,该神经网络权重矩阵调整方法可以包括以下内容:
71.步骤s100:判断神经网络权重矩阵的权重分布是否低于第一预设阈值;
72.若是,执行步骤s200;若否,执行步骤s300;
73.其中,该神经网络权重矩阵是在神经网络训练阶段训练好的神经网络权重矩阵,权重分布可以是均值或概率分布等统计学指标,具体可由设计人员根据实际adc的量程来设置。该第一预设阈值由设计人员根据具体统计要求以及硬件需求设置。
74.步骤s200:将所述神经网络权重矩阵中的所有权重值均乘以一第一常数;
75.即:将神经网络权重矩阵中的所有权重值均乘以一个常数n,以增大网络权重,进而将增大后的权重矩阵写入存储单元阵列后,在应用时,针对相同的输入数据流,能够成倍地增大存储单元阵列的输出模拟电流。
76.其中,常数n通常可设置为2的整数倍,相当于移位。
77.举例来说,参见图5,对于一个二进制的权重矩阵来说,将原始神经网络权重矩阵乘以8,即将二进制数左移3位,得到放大后的权重矩阵。
78.步骤s300:判断所述神经网络权重矩阵的权重分布是否高于第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
79.若是,执行步骤s400;若否,执行步骤s500;
80.其中,第二预设阈值由设计人员根据具体统计要求以及硬件需求设置。
81.步骤s400:将所述神经网络权重矩阵中的所有权重值均除以一第二常数;
82.其中,所述第一常数以及所述第二常数均大于1,第一常数和第二常数可以相同也可以不相同。值得说明的是,乘以2与除以1/2的运算结果是相同的,因此,本发明所要求保护的范围,对于乘或除的表述并非对本发明要求保护的范围的限定,对于相同或等效的运算过程均应包括在本发明要求保护的范围内。
83.即:如果权重分布高于第二预设阈值,则将该权重矩阵写入存储单元阵列后,在应用阶段,存储单元阵列输出的模拟电压/电流可能超出adc的量化上限,此时,把所有权重除以一个常数m(m通常为2的整数倍,相当于往右移位),以减小网络权重,进而把应用阶段中,针对相同的输入数据流,减小后的网络权重能够使得存储单元阵列输出的模拟电压/电流减小到adc合适的量程。
84.步骤s500:将神经网络权重矩阵用于存入一存储单元阵列。
85.其中,本步骤中的神经网络权重矩阵指步骤s100中的神经网络权重矩阵(若该权重矩阵的权重分布既不低于第一预设阈值也不高于第二预设阈值)或者步骤s200处理后得到的权重矩阵或者步骤s400处理后的权重矩阵。
86.具体地,将权重矩阵存入一个存储单元阵列中,在应用阶段,向该存储单元阵列输入输入数据流,在存储单元阵列中,该输入数据流与权重阵列进行模拟向量-矩阵乘法运算,运算结果以存储单元阵列的输出模拟电压/电流形式传输至存储单元阵列后的adc,adc将模拟电压/电流转换为数字信号。
87.综上所述,本发明实施例提供的神经网络权重矩阵调整方法,通过将整体分布不均匀的神经网络权重矩阵成倍增大或成倍缩小,以便使得将处理后的权重矩阵存储存储单元阵列进行存内计算后得到的信号处于adc(adc设置在存储单元阵列之后,用于将各存储单元列的输出转换为数字信号)的有效量程内,进而提高运算精度。
88.值得说明的是,对于步骤s200中将所述神经网络权重矩阵中的所有权重值均乘以一第一常数以增大网络权重来说,理想情况下是增大后的权重阵列中所有的权重值均满足要求,但是本领域技术人员可以理解的是,对于权重分布比较不均匀的阵列来说,增大后的权重阵列中,有些较大的权重值可能会超过位数上限(也可以称为移位后存在溢出位),例如,参见图6,假设权重精度为8比特,乘以常数8(左移3位)之后,则第3行第2列的权重值将超过位数上限。对于这种情况,参见图7,本发明实施例提供的神经网络权重矩阵调整方法还可以包括:
89.步骤s600:判断处理后的权重矩阵中的各权重值的位数是否超出第三预设阈值;
90.若是,执行步骤s700;若否,执行步骤s500;
91.其中,第三预设阈值可为算法的精度位数,如8位,16位等,由设计人员根据具体统计要求以及硬件需求设置。
92.步骤s700:截取各权重值超出该第三预设阈值的位得到第一权重阵列以及第二权重阵列;
93.其中,该第一权重阵列(也可称为标准矩阵)为将各权重值的位数超出该第三预设阈值的位截去后剩余的权重阵列,用于存入存内计算芯片中的存储单元阵列,执行模拟向量-矩阵乘法运算;该第二权重阵列为将各权重值的位数超出该第三预设阈值的位截取出来得到的权重阵列,用于存入另一存储单元阵列或输入算术运算电路,值得说明的是,第二权重阵列可能是一个稀疏矩阵或者是普通的权重矩阵。
94.对于稀疏矩阵来说,可将稀疏矩阵输入一个算术运算电路中执行运算,运算所对应的一个输入为稀疏矩阵中的元素,另一个输入为上述的输入数据流中对应该元素对应的权重值所对应的输入数据。
95.举例来说,该算术运算电路可为常规的数字电路,比如乘法器,也可以为cpu,具体可先将该稀疏矩阵存储一存储器,再由一存储器中调入cpu进行乘法运算。
96.当第二权重阵列为普通权重阵列时,可将该权重阵列存入另一存储单元阵列,由另一存储单元阵列对该第二权重阵列以及输入数据流执行模拟向量-矩阵乘法运算。
97.值得说明的是,在进行截取时,需要对应记录数据的地址,以便对截取得到的矩阵进行运算时,选择对应的输入数据。
98.图8示出了本发明实施例中放大权重阵列后分割权重阵列的一种原理图;如图8所示,对应图6所示超位数情况,将高于8比特的部分截断放到一个新的权重矩阵,该权重矩阵为一个稀疏矩阵。标准矩阵仍然基于存算一体(向量-矩阵乘法运算)的方式进行处理,而稀疏矩阵部分则可以通过常规数字电路进行处理,最后把两者进行结合即为最后的输出。
99.图8是分步骤对本发明实施例的原理进行详细说明,在实际实施时,为了有效节约程序,参见图9,可在增大权重的同时,直接将溢出的位存入另一矩阵中,而不需要区分增大步骤以及分割步骤。
100.在一个可选的实施例,该调整方法还可以包括:
101.当该第二权重阵列存入另一存储单元阵列时,将该第一权重阵列对应的存储单元阵列后的adc输出结果与该第二权重阵列对应的存储单元阵列后的adc输出结果结合;
102.当该第二权重阵列输入该算术运算电路时,将该第一权重阵列对应的存储单元阵列后的adc输出结果与该算术运算电路的输出结果结合。
103.本领域技术人员可以理解的是,结合的方式可以对第一权重阵列以及第二权重阵列的结果进行叠加,结合的方式也可以是在叠加的基础上对叠加后的结果减小一定倍数,具体可以根据后续电路量化精度等参数进行选择。
104.在一个可选的实施例中,对于步骤s400中将所述神经网络权重矩阵中的所有权重值均除以一第二常数以减小网络权重来说,理想情况下是减小后的权重阵列中所有的权重值均满足要求,但是本领域技术人员可以理解的是,对于权重分布比较不均匀的阵列来说,减小后的权重阵列中,有些权重值右移位后,可能会出现溢出位,对于这种情况,参见图10,该步骤s400可以包括以下内容:
105.步骤s410:将各权重值除以该第二常数得到第三权重阵列;
106.步骤s420:将各权重值除以该第二常数后的溢出位另存为第四权重阵列;
107.其中,该第三权重阵列用于存入一存储单元阵列,执行模拟向量-矩阵乘法运算;该第四权重阵列用于存入另一存储单元阵列或输入算术运算电路,第四权重阵列的运算具体参见第二权重阵列的运算,在此不再赘述。
108.具体地,将各权重值除以该第二常数相当于往右移位,将溢出位另存为第四权重阵列。
109.值得说明的是,在进行移位时或将溢出位另存为一个矩阵时,需要对应记录数据的地址(即在矩阵中的地址),以便对截取得到的矩阵进行运算时,选择对应的输入数据。
110.图11示出了本发明实施例中缩小权重阵列后分割权重阵列的一种原理图;如图11所示,将原始神经网络权重矩阵中的各权重值除以8,相当于将各二进制权重值右移3位,得到标准矩阵,将溢出位另存为溢出矩阵,由于图示中移位后得到的标准矩阵以及溢出矩阵均不是稀疏矩阵,因此,可利用两个存储单元阵列分别处理标准矩阵以及溢出矩阵,两个存储单元阵列的输入数据流相同,将两个存储单元阵列的输出结合后,输入adc中进行转换。
111.值得说明的是,调整后产生的新矩阵(例如图8、图9或图11中所示的标准矩阵、稀疏矩阵或溢出矩阵),若权重分布不均,还可以继续利用本发明实施例提供的调整方法进行调整,直到矩阵的权重分布合适为止,例如,对于调整后产生的新矩阵,权重偏小,可以再乘以一个常数以调整到合适的分布。
112.在一个进一步地实施例中,该神经网络权重矩阵调整方法还包括:
113.当该第四权重阵列存入另一存储单元阵列时,将该第三权重阵列对应的存储单元阵列后的adc输出结果与该第四权重阵列对应的存储单元阵列后的adc输出结果结合;
114.当该第四权重阵列输入该算术运算电路时,将该第三权重阵列对应的存储单元阵列后的adc输出结果与该算术运算电路的输出结果结合。
115.本领域技术人员可以理解的是,结合的方式可以对第三权重阵列以及第四权重阵列的结果进行叠加,结合的方式也可以是在叠加的基础上对叠加后的结果增大一定倍数,具体可以根据后续电路量化精度等参数进行选择。
116.综上所述,本发明实施例提供的神经网络权重矩阵调整方法,通过将整体分布不均匀的神经网络权重矩阵成倍增大或成倍缩小,以便使得将处理后的权重矩阵存储存储单元阵列进行存内计算后得到的信号处于adc(adc设置在存储单元阵列之后,用于将各存储单元列的输出转换为数字信号)的有效量程内,进而提高运算精度。
117.基于同一发明构思,本申请实施例还提供了一种神经网络权重矩阵调整装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于神经网络权重矩阵调整装置解决问题的原理与上述方法相似,因此神经网络权重矩阵调整装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
118.图12是本发明实施例中的神经网络权重矩阵调整装置的结构框图;如图12所示,该神经网络权重矩阵调整装置可以包括:第一判断模块10、权重放大模块20、第二判断模块30以及权重缩小模块40。
119.第一判断模块10,判断神经网络权重矩阵的权重分布是否低于第一预设阈值;
120.权重放大模块20,若神经网络权重矩阵的权重分布低于第一预设阈值,将该神经网络权重矩阵中的所有权重值均乘以一第一常数;
121.第二判断模块30,若神经网络权重矩阵的权重分布不低于第一预设阈值,判断该神经网络权重矩阵的权重分布是否高于第二预设阈值,其中,该第二预设阈值大于该第一预设阈值;
122.权重缩小模块40,若该神经网络权重矩阵的权重分布高于第二预设阈值,则将该神经网络权重矩阵中的所有权重值均除以一第二常数;
123.其中,该第一常数以及该第二常数均大于1。
124.本发明实施例还提供一种神经网络权重矩阵写入控制方法,图13示出了本发明实施例提供的神经网络权重矩阵写入控制方法的应用场景;如图13所示,该场景下,待写入权重输入存内计算芯片2’中的移位寄存器中,移位寄存器对权重进行移位后,经写入模块写入存储单元阵列对应的存储单元中,在应用该神经网络处理输入数据时,输入数据流经过一定的预处理后传输至存储单元阵列中,与存储单元阵列中预先写入的神经网络权重矩阵进行神经网络运算,存储单元阵列的输出数据流经过adc模块转换为数字信号,输出运算结果。
125.值得说明的是,图13中仅示例性列举出存内计算芯片2’中的几个电路模块,本领域技术人员可以理解的是,该存内计算芯片2’中还可以设有寄存器、后处理模块等相关的功能电路,另外,存储单元阵列中每个存储单元可采用可编程半导体器件实现,如浮栅mos
管。
126.另外,该移位寄存器还连接一片外缓存器1’,用于缓存数据。
127.其中,由控制模块执行本发明实施例提供的神经网络权重矩阵写入控制方法,参见图14,该神经网络权重矩阵写入控制方法可以包括以下内容:
128.步骤s1000:根据数据调整指令控制移位寄存器对其输入的各权重值进行移位操作,并且,将该移位寄存器对其输入的权重值进行移位后溢出的位及该权重值在该神经网络权重矩阵中的地址存入缓存器;
129.其中,该数据调整指令包括:移位方向以及移位位数。
130.具体地,可预先判断该神经网络权重矩阵的权重分布是否低于第一预设阈值,或者,是否高于第二预设阈值,若是,产生数据调整指令。
131.另外,神经网络权重矩阵是在神经网络训练阶段训练好的神经网络权重矩阵,权重分布可以是均值或概率分布等统计学指标。该第一预设阈值以及第二预设阈值由设计人员根据具体统计要求以及硬件需求设置,其中,第二预设阈值大于第一预设阈值。
132.若神经网络权重矩阵的权重分布低于第一预设阈值,则数据调整指令中的移位方向为向左移动,以增大网络权重,进而将增大后的权重矩阵写入存储单元阵列后,在应用时,针对相同的输入数据流,能够成倍地增大存储单元阵列的输出模拟电流,移动位数由设计人员根据具体统计要求以及硬件需求设置;若神经网络权重矩阵的权重分布高于第二预设阈值,则数据调整指令中的移位方向为向右移动,以减小网络权重,进而把应用阶段中,针对相同的输入数据流,减小后的网络权重能够使得存储单元阵列输出的模拟电压/电流减小到adc合适的量程,移动位数设计人员根据具体统计要求以及硬件需求设置。
133.值得说明的是,移位操作后得到的阵列作为标准矩阵,由存储单元阵列执行神经网络运算,移位后溢出的位及该权重值在该神经网络权重矩阵中的地址另存为一个阵列存入缓存器,这个阵列可以是一个稀疏矩阵也可以是一个普通的权重阵列;
134.步骤s2000:将该缓存器中的数据存入一存储单元阵列或输入算术运算电路;
135.具体地,当缓存器中的数据为一个稀疏矩阵时,则将该稀疏矩阵输入一个算术运算电路执行运算,当该缓存器中的数据为一个普通权重矩阵时,输入一个存储单元阵列进行处理,具体可参见第二权重阵列的处理过程,在此不再赘述。
136.其中,该数据调整指令为神经网络权重矩阵的权重分布不均时产生;该移位寄存器连接一写入模块;该写入模块连接另一存储单元阵列,用于将该移位寄存器移位后的数据写入另一存储单元阵列。
137.本发明实施例提供的神经网络权重矩阵写入控制方法,通过利用移位寄存器在权重写入过程中将整体分布不均匀的神经网络权重矩阵成倍增大或成倍缩小,以便使得将处理后的权重矩阵存储存储单元阵列进行存内计算后得到的信号处于adc(adc设置在存储单元阵列之后,用于将各存储单元列的输出转换为数字信号)的有效量程内,进而提高运算精度。
138.在一个可选的实施例中,神经网络权重矩阵写入控制方法还包括:
139.当该缓存器中的数据输入算术运算电路时,将该另一存储单元阵列后的adc输出结果与该算术运算电路的输出结果结合;
140.当该缓存器中的数据存入一存储单元阵列时,将该存储单元阵列后的adc输出结
果与该另一存储单元阵列后的adc输出结果结合。
141.本领域技术人员可以理解的是,结合的方式可以对两个存储单元阵列或者一个存储单元阵列和一个算术运算电路的结果进行叠加,结合的方式也可以是在叠加的基础上对叠加后的结果减小一定倍数或者增大一定倍数,具体可以根据后续电路量化精度等参数进行选择。
142.上述实施例阐明的装置,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
143.在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现下述步骤:
144.判断神经网络权重矩阵的权重分布是否低于第一预设阈值;
145.若是,将该神经网络权重矩阵中的所有权重值均乘以一第一常数;
146.若否,判断该神经网络权重矩阵的权重分布是否高于第二预设阈值,其中,该第二预设阈值大于该第一预设阈值;
147.若该神经网络权重矩阵的权重分布高于第二预设阈值,则将该神经网络权重矩阵中的所有权重值均除以一第二常数;
148.其中,该第一常数以及该第二常数均大于1。
149.从上述描述可知,本发明实施例提供的电子设备,可用于神经网络权重矩阵调整,通过将整体分布不均匀的神经网络权重矩阵成倍增大或成倍缩小,以便使得将处理后的权重矩阵存储存储单元阵列进行存内计算后得到的信号处于adc(adc设置在存储单元阵列之后,用于将各存储单元列的输出转换为数字信号)的有效量程内,进而提高运算精度。
150.下面参考图15,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
151.如图15所示,电子设备600包括中央处理单元(cpu)/mcu601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram))603中的程序而执行各种适当的工作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602、以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
152.以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
153.特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现下述步骤:
154.判断神经网络权重矩阵的权重分布是否低于第一预设阈值;
155.若是,将该神经网络权重矩阵中的所有权重值均乘以一第一常数;
156.若否,判断该神经网络权重矩阵的权重分布是否高于第二预设阈值,其中,该第二预设阈值大于该第一预设阈值;
157.若该神经网络权重矩阵的权重分布高于第二预设阈值,则将该神经网络权重矩阵中的所有权重值均除以一第二常数;
158.其中,该第一常数以及该第二常数均大于1。
159.从上述描述可知,本发明实施例提供的计算机可读存储介质,可用于神经网络权重矩阵调整,通过将整体分布不均匀的神经网络权重矩阵成倍增大或成倍缩小,以便使得将处理后的权重矩阵存储存储单元阵列进行存内计算后得到的信号处于adc(adc设置在存储单元阵列之后,用于将各存储单元列的输出转换为数字信号)的有效量程内,进而提高运算精度。
160.在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
161.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
162.为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
163.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
164.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
165.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
166.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
167.本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
168.本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
169.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
170.以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1