一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种修正可变电阻器件阵列点乘误差的方法与流程

2022-04-07 03:42:03 来源:中国专利 TAG:


1.本发明涉及一种基于可变电阻器件阵列的存内计算方法,尤其涉及一种修正可变电阻器件阵列点乘误差的方法。


背景技术:

2.传统的计算架构在面临人工智能算法等高性能需求的计算任务的时候,其存算分离的架构造成计算效率的极大降低。利用可变电阻器件(包括忆阻器、pcm、mram等)阵列可以实现存内计算,与以往的冯诺依曼计算架构不同的是其采用了模拟信号使得在存储器阵列中可以利用基尔霍夫定律和欧姆定律完成计算过程。这种新式计算架构在功耗,速度上有着极大的优势,是后冯诺依曼时代的重点研发的新式计算架构。利用可变电阻器件交叉阵列,则可以进一步利用电路特性来实现输入电压向量和可变电阻器件电导矩阵的点积运算,以此来加速矩阵乘法的计算和提升神经网络的性能。但是,现有的可变电阻器件阵列往往受到制作工艺等限制,阵列中各个可变电阻器件之间的电路连接会无法避免的存在一定的线路电阻,根据电路的分压定理,这会导致非理想的电压下降,使得可变电阻器件的输出结果产生偏差。随着可变电阻器件阵列的规模增加,线路电阻的影响也会逐渐加大,这种偏差在可变电阻器件阵列规模大于128
×
128时会十分明显。因此当我们在大规模可变电阻器件阵列上部署神经网络时,这种非理想特性就会使得神经网络的输出产生偏差,影响神经网络的性能,甚至可能会造成神经网络完全失效。
3.现有技术方案一般是增加可变电阻器件的电阻值以减小在线路电阻上的分压,或者在可变电阻器件阵列的输出后端做补偿,修正可变电阻器件阵列由于线路电阻等非理想因素导致的输出偏差。现有技术方案中增加可变电阻器件的电阻值的方法效果有限,一是可变电阻器件阻值范围的提高有限,二是这种方法应用在更大的可变电阻器件交叉阵列中仍然会存在上述问题。在可变电阻器件阵列的输出后端做补偿的方案会增加系统的复杂程度,并且该方案并没有在源头可变电阻器件阵列上解决问题,致使最终的补偿效果受到一些条件的限制而达不到要求,例如该校正方案面对动态范围较大的输入和权值的时候修订输出偏差的能力有限,校正效果不足。


技术实现要素:

4.发明目的:针对以上问题,本发明提出一种修正可变电阻器件阵列点乘误差的方法,能够显著提高可变电阻器件阵列当中线路电阻引起的矩阵运算误差的修正效果。
5.技术方案:本发明所采用的技术方案是一种修正可变电阻器件阵列点乘误差的方法,包括以下步骤:
6.(1)将目标电导矩阵初始化写入可变电阻器件阵列;
7.(2)计算可变电阻器件阵列的有效电导矩阵和有效电阻矩阵;
8.具体的,可以采用,包括:对可变电阻器件阵列施加至少m组相互正交的电压向量v
in
,测量对应的n组输出电流向量i

out
,利用v
in
·geffective
=i

out
计算出有效电导矩阵geffective

9.该步骤还可以采用电路建模仿真法来计算可变电阻器件阵列的有效电导矩阵和有效电阻矩阵,包括以下步骤:
10.步骤2.1、建立可变电阻器件阵列电路模型,考虑线路电阻后得到可变电阻器件阵列的电路方程组a
·
i=v
in
,其中a为系数矩阵,i为可变电阻器件阵列上所有结点电流组成的向量,v
in
为m组相互正交的输入电压向量;
11.步骤2.2、根据公式i=a-1vin
,将对应的逆矩阵代入,求得输出电流向量i;
12.步骤2.3、根据电路的电流叠加定律,由向量i求得阵列的输出电流向量i

out

13.步骤2.4、利用正交电压向量法求得有效电导矩阵g
effective

14.(3)将步骤(2)所得的有效电导矩阵与目标电导矩阵对比,若满足收敛条件,则该方法执行完毕,否则继续执行以下步骤:
15.将差值矩阵乘以调节系数η得到误差电导矩阵,根据此误差矩阵来调节实际硬件阵列上每个可变电阻器件的阻值,即调节实际可变电阻器件的电导矩阵g
write
为g
write
=g

write-g
error
;其中g
error
为误差电导矩阵,g

write
为上一次实际写入可变电阻器件的电导矩阵;调节之后,重复执行步骤(2)和(3),直到满足步骤(3)中的停止条件。
16.步骤(3)中所述的收敛条件为有效电导矩阵与目标电导矩阵对比所得的差值矩阵中各个元素的绝对值小于所设阈值。
17.当上述算法无法收敛时,令步骤(2)中每次求得的有效电导乘以系数k,通过调整k的值使算法收敛。
18.上述方法可存储在计算机可读存储介质中,以计算机程序产品的形式存在。该程序执行如前所述的修正可变电阻器件阵列点乘误差的方法中的步骤。
19.有益效果:相比于现有技术,本发明具有以下优点:该技术直接对任意类型的可变电阻器件阵列的电导/电阻值进行补偿调节,而不是形成计算结果后对结果进行估计和修正,因此本发明对于可变电阻器件阵列的点乘误差修正效果更好。该技术方案在考虑阵列存在线间电阻的情况下,合理调节可变电阻器件阵列的电导值,显著提高了可变电阻阵列做点乘运算输出的正确率。除此之外,本技术还提出了一种全新的电导矩阵增益方法,提升了算法的收敛性和通用性,使得该技术可以在任意规模的可变电阻器件阵列上使用,并且保证算法可以快速收敛。同时,本方法并未使用任何微分关系式,仅使用了较为简单的梯度下降法,使得本方法更适用于计算机模拟和代码编写,降低了学习成本,更具有泛用性。本发明能够显著提高可变电阻器件阵列当中线路电阻引起的矩阵运算误差的修正效果,有广泛应用价值和潜力。该技术应用在可变电位器阵列上,由于算法收敛速度快,因此可变电位器阵列与控制设备之间的通信数据量大幅减少,极大地降低了系统能耗。该技术应用于忆阻器阵列上,由于算法的快速的收敛性,忆阻器的读写次数大幅减少,寿命显著提高。
附图说明
20.图1是一种典型的考虑了线路电阻r0影响的忆阻器阵列电路图;
21.图2是本发明所述的修正可变电阻器件阵列点乘误差的方法流程框图。
22.图3是本发明所述的电导调节算法收敛性的仿真分析结果图。
具体实施方式
23.下面以一种典型的可变电阻器件——忆阻器为例,结合附图和实施例对本发明的技术方案作进一步的说明。
24.实施例1
25.在实际硬件中,可以通过测量忆阻器阵列的实际输出来计算忆阻器阵列的有效电导矩阵和有效电阻矩阵。在该情形下,本发明所述的修正可变电阻器件阵列点乘误差的方法,其流程如图2所示,包括以下步骤:
26.步骤1:确定忆阻器阵列运算参数
27.把将要写入的目标电导矩阵g
target
转化为目标阻值矩阵r
target
,其中g
target
为事先指定的电导矩阵,且r
target
中的每个元素与g
target
的元素满足倒数关系。对于忆阻器阵列输入的电压向量v
in
和输出的电流向量i
out
,忆阻器的运算结果应满足关系v
in
·gtarget
=i
out
。对忆阻器阵列进行初始化读写,写入的电导矩阵应满足g
write
=g
target
(即电阻矩阵满足r
write
=r
target
),此时由于存在线路电阻,实际忆阻器阵列的有效电导/电阻与目标电导/电阻之间存在误差,需要调节使得实际值接近目标电导/电阻值。
28.步骤2:求忆阻器阵列的有效电导矩阵g
effective
和有效电阻矩阵r
effective
29.如步骤1所述,在理想(不考虑线间电阻)的忆阻器阵列的点积运算中,电压和电流满足公式v
in
·gtarget
=i
out
。而对于非理想的点积运算,阵列的电导不再是理想电导,因此则有公式v
in
·geffectiv
e=i

out
,其中v
in
是大小为1
×
n的电压输入向量,g
effective
是忆阻器阵列的有效电导矩阵(即考虑线间电阻后的等效电导矩阵),i

out
是1
×
n的电流输出向量,它的值与i
out
不同。
30.i

out
的值为已知量,在实际硬件中,通过测量阵列的输出可以得到相应的电流输出向量i

out
,而如果是使用软件模拟,通过电路仿真或列出电路的电流方程可求得对应的电流输出向量i

out

31.因此,v
in
和i

out
均为已知量,此时我们需要求解的是有效电导矩阵g
effective
。我们运用正交电压向量法,对忆阻器阵列施加不同的正交电压值,并使用仪器测量对应的电流输出,将数据传入专用处理设备,得到有效电导矩阵。使用正交电压向量法求解该等效电导矩阵g
effective
,具体的该方法如下:
32.假设忆阻器阵列的规模为m
×
n。m为输入电压向量v
in
的长度,n是输出电流向量i

out
的长度,依次向忆阻器阵列输入至少m组相互正交的电压向量,便可通过输出的m组电流向量反推出有效电导矩阵g
effective

33.例如,用m个正交单位电压向量作为基向量组:首先设电压向量v
in
中第一个元素v1为1,其他元素为0,得到一组电压输入向量v
in
。然后利用公式v
in
·geffective
=i

out
和v
in
中只有一个元素为1的特点,可以算出电导矩阵g第一行的值,该值恰好等于i

out

34.然后再设v
in
中v2为1,其他元素为0,按照上文所述步骤即可求得电导矩阵第二行。以此类推,直至设vn为1,其他元素为0,最终求得有效电导矩阵g
effective
。然后将等效电导矩阵钟每个元素取倒数,即可得到有效电阻矩阵r
effective

35.步骤3:利用梯度下降逼近法接近目标阻值
36.将上述步骤所测得的有效电导g
effective
与目标电导g
target
相减,若所得差值矩阵中各个元素的绝对值小于事先设定好的阈值,该方法执行完毕,否则继续执行剩下的步骤:

r0→r22

r0→
r0→…→
i2(该列最末尾),由此我们可以列出支路方程:
[0049][0050]
形如的上标22表示该方程是以忆阻器r
22
为核心结点列出的支路方程,下标mn则表示是第m行第n列的忆阻器rmn上流过的电流imn的系数。
[0051]
根据n2个忆阻器结点便可以列出n2个支路方程,得到电路的阵列方程组。
[0052]
步骤2.2:根据线性代数知识,建立的方程组可以写成a
·
i=v
in
的形式,a为系数矩阵,i为阵列上所有结点电流组成的向量,v
in
为方程组右侧输入电压组成的正交电压向量,根据公式i=a-1vin
,将对应的逆矩阵代入,即可求得向量i。
[0053]
步骤2.3:向量i包含了忆阻器阵列上所有结点的电流信息,那么根据电路的电流叠加定律,由向量i即可求得阵列的(列)输出向量i

out
,该向量的维度为1
×
n。
[0054]
步骤2.4:根据发明所述的正交电压向量法,遍历所有可能的正交电压向量,得到正交电压向量法所需的电流输出向量i

out
后,进一步求得有效电导矩阵g
effective

[0055]
上述修正忆阻器阵列点乘误差的方法,可以推广至其他可变电阻器件组成的阵列中,例如相变存储器(pcm)阵列,磁性随机存储器(mram)阵列等。
[0056]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0057]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0058]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0059]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献