一种基于忆阻器的存内计算阵列结构

文档序号:32309534发布日期:2022-11-23 11:06阅读:88来源:国知局
一种基于忆阻器的存内计算阵列结构

1.本发明涉及集成电路领域,尤其涉及一种基于忆阻器的存内计算阵列结构。


背景技术:

2.近年来,摩尔定律逐渐逼近物理极限,晶体管尺寸难以进一步缩小,导致芯片算力和能源趋于瓶颈。与之相反,人工智能算法不断迭代演进,网络层数越来越多,结构越来越复杂,参数规模越来越大。并且,由于计算与储存单元分离,传统冯诺依曼架构的硬件系统还面临着存储墙和功耗墙问题。这些挑战导致传统硬件系统难以高效处理神经网络等数据密集型任务。
3.基于此,学者们模仿人脑存算一体神经形态架构,使用忆阻器构成交叉阵列结构,同时实现计算和存储功能,大幅度提升计算并有效缓解了现有瓶颈。但是,由于忆阻器存在多种非理想器件特性,使得使用忆阻器存算一体硬件系统实现高精度浮点型连续模型依旧存在困难。所以采用低精度数据进行运算尤其是二值(1bit)输入、权重无疑具有极大的应用场景。
4.然而,在现有硬件实现二值神经网络模型工作中往往存在着互补金属氧化物半导体(complementary metal oxide semiconductor,cmos)工艺兼容性、二值权重改写成本高、阵列结构复杂、阵列面积大、硬件抗噪能力弱、通常需要使用模数转换器(analog-to-digital converter,adc)或灵敏放大器(sense amplifier,sa)导致外围电路功耗高,以及需要通用数字处理器实现归一化层和激活层等问题,导致无法充分发挥基于忆阻器的存内计算阵列结构的优势。


技术实现要素:

5.本发明的目的在于提供一种基于忆阻器的存内计算阵列结构,以解决现有硬件实现二值神经网络模型无法充分发挥基于忆阻器的存内计算阵列结构的优势的问题。
6.第一方面,本发明提供一种基于忆阻器的存内计算阵列结构,所述存内计算阵列结构包括:
7.多个存内计算阵列单元串联组成的阵列列结构、多个所述存内计算阵列单元并排放置形成的阵列行结构,以及在每行所述阵列行结构的连接处对应设置的输出反相器;
8.其中,所述存内计算阵列单元包括使能信号端、工作电压端、忆阻器读取电压端和编程电压端,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述使能信号端依次连接,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述工作电压端依次连接,用于形成行控制信号;所述阵列列结构一列中对应的多个所述存内计算阵列单元的多个所述忆阻器读取电压端依次连接,所述阵列列结构一列中对应的多个所述存内计算阵列单元的多个所述编程电压端依次连接,用于形成列控制信号;
9.所述阵列列结构的输出结果串联在一起作为对应的所述输出反相器的电压输入,所述输出反相器将每一行所述阵列行结构的计算结果以逻辑电平进行输出。
10.采用上述技术方案的情况下,本发明实施例提供的基于忆阻器的存内计算阵列结构,所述存内计算阵列结构包括:多个存内计算阵列单元串联组成的阵列列结构、多个所述存内计算阵列单元并排放置形成的阵列行结构,以及在每行所述阵列行结构的连接处对应设置的输出反相器;其中,所述存内计算阵列单元包括使能信号端、工作电压端、忆阻器读取电压端和编程电压端,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述使能信号端依次连接,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述工作电压端依次连接,用于形成行控制信号;所述阵列列结构一列中对应的多个所述存内计算阵列单元的多个所述忆阻器读取电压端依次连接,所述阵列列结构一列中对应的多个所述存内计算阵列单元的多个所述编程电压端依次连接,用于形成列控制信号;所述阵列列结构的输出结果串联在一起作为对应的所述输出反相器的电压输入,所述输出反相器将每一行所述阵列行结构的计算结果以逻辑电平进行输出,可以将存内计算阵列单元两两串联形成电阻分压电路,实现二值权重,并且通过输出反相器实现二值神经网络中的归一化和激活函数功能,避免了复杂通用数字处理器的使用,从而可以高效实现二值神经网络向前传播的过程,同时通过输出反相器,将模拟量的计算结果转换为逻辑电平,直接用作下一层输入,省去了模数转换器的使用,本技术实施例所述的基于忆阻器的存内计算阵列结构具有cmos工艺兼容、面积小、可拓展性强、高计算速度、低功耗和强抗噪能力等优势,为在算力有限的边缘计算应用场景下硬件高效实现二值神经网络模型提供可能。
11.在一种可能的实现方式中,所述存内计算阵列单元包括:忆阻器单元、反相器和场效应晶体管,所述忆阻器单元包括第一忆阻器和第二忆阻器;
12.所述场效应晶体管包括所述使能信号端、所述编程电压端和连接端;所述反相器包括所述工作电压端和反相器连接端;所述忆阻器读取电压端包括两个所述忆阻器子读取电压端,所述第一忆阻器包括第一忆阻器子读取电压端和第一忆阻器连接端,所述第二忆阻器包括第二忆阻器子读取电压端和第二忆阻器连接端;
13.所述第一忆阻器连接端和所述第二忆阻器连接端相连接,所述场效应晶体管对应的所述连接端和所述第一忆阻器连接端连接,所述场效应晶体管对应的所述连接端和所述反相器连接端连接。
14.在一种可能的实现方式中,所述反相器包括p型晶体管和n型晶体管,所述p型晶体管包括所述工作电压端、第一连接端和第一输出连接端,所述n型晶体管包括接地端、第二连接端和第二输出连接端,所述第一连接端和所述第二连接端连接,并且所述第一连接端和所述第二连接端与所述第一忆阻器连接端连接,所述第一输出连接端和所述第二输出连接端连接。
15.在一种可能的实现方式中,所述忆阻器单元被配置为,在对所述忆阻器读取电压端施加读取电压信号后,所述第一忆阻器连接端和所述第二忆阻器连接端的连接处根据所述忆阻器单元的阻值大小进行电压分配,作为所述反相器的输入;
16.所述反相器被配置为,在反相器输入大于或者等于反相器阈值转变电压时,输出结果置为0,在所述反相器输入小于所述反相器阈值转变电压时,输出结果保持工作电压。
17.在一种可能的实现方式中,所述存内计算阵列单元配置为:通过调整所述第一忆阻器对应的所述忆阻器读取电压端的读取电压,以及所述第二忆阻器对应的所述忆阻器读取电压端的读取电压完成二值权重控制、完成输入控制和乘法控制。
18.在一种可能的实现方式中,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述反相器的所述工作电压端依次连接,用于在不同的工作电压下,多个所述反相器对相同的矩阵相乘乘法结果输出不同的电压,完成输出电压结果的平移变换,以实现二值神经网络中的归一化层功能。
19.在一种可能的实现方式中,每个所述输出反相器被配置为,在工作状态时,若所述输出反相器对应的反相器输入大于或者等于输出反相器阈值转变电压时,控制输出结果从高电平转变为低电平;若所述输出反相器对应的所述反相器输入小于所述输出反相器阈值转变电压时,输出结果保持高电平,以实现二值神经网络中的二值激活函数功能。
20.在一种可能的实现方式中,所述存内计算阵列单元被配置为:基于预先训练好的二值卷积神经网络卷积层权重、归一化层权重和全连接层权重,通过所述编程电压端进行编程,完成正负1权重硬件映射;
21.所述存内计算阵列单元还被配置为:基于所述归一化层权重确定归一化系数,基于所述归一化系数确定每一输出节点与零点的位置关系,得到平移参数,结合多个所述反相器输出的多个工作电压,完成所述输出电压结果的平移变换。
22.在一种可能的实现方式中,所述阵列列结构和所述阵列行结构被配置为:在将目标待分类图片转换为黑白图像输入到计算单元中后,完成卷积层和归一化层计算,得到归一化层结果,将所述归一化层结果输入至所述输出反相器,完成二值函数激活。
23.在一种可能的实现方式中,所述输出反相器被配置为:将所述输出反相器的输出电压作为下一层的输入电压,完成二值卷积前向传播,直至完成卷积层计算,将所述输出电压作为全连接分类层的输入,完成二值全连接网络的前向传播,将对应的前向传播结果进行排序,得到所述目标待分类图片的分类结果。
附图说明
24.此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
25.图1示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构的电路示意图;
26.图2示出了本技术实施例提供的一种存内计算阵列单元的电路结构示意图;
27.图3示出了本技术实施例提供的一种阵列结构存内计算结果的示意图;
28.图4示出了本技术实施例提供的一种归一化层实现的示意图;
29.图5示出了本技术实施例提供的一种二值激活函数实现的示意图;
30.图6示出了本技术实施例提供的一种硬件实现二值卷积神经网络模型的方法流程示意图;
31.图7示出了本技术实施例提供的一种实现二值卷积神经网络的结构示意图;
32.图8示出了本技术实施例提供的一种mnist数据集的示意图;
33.图9示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构中反相器输入电压与输出电压关系的示意图;
34.图10示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构实现二值神经网络中的归一化层的示意图;
35.图11示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构抗噪能力的示意图;
36.图12示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构的卷积神经网络图像分类准确率的示意图;
37.图13示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构的功耗和面积与已有工作对比的示意图。
38.附图标记
39.存内计算阵列单元-a;阵列列结构-10;阵列行结构-20;输出反相器-30;使能信号端-v
en
;工作电压端-v
dd
;忆阻器读取电压端-v
input
;编程电压端-v
program
;忆阻器单元-a1;反相器-a2;场效应晶体管-a3;第一忆阻器-a11;第二忆阻器-a12;第一忆阻器子读取电压端-v
input(l)
;第二忆阻器子读取电压端-v
input(r)

具体实施方式
40.为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一阈值和第二阈值仅仅是为了区分不同的阈值,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
41.需要说明的是,本发明中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
42.本发明中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b的结合,a和c的结合,b和c的结合,或a、b和c的结合,其中a,b,c可以是单个,也可以是多个。
43.图1示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构的电路示意图,所述存内计算阵列结构包括:
44.多个存内计算阵列单元a串联组成的阵列列结构10、多个所述存内计算阵列单元a并排放置形成的阵列行结构20,以及在每行所述阵列行结构的连接处对应设置的输出反相器30;
45.其中,所述存内计算阵列单元a包括使能信号端v
en
、工作电压端v
dd
、忆阻器读取电压端v
input
(v
input(l)
/v
input(r)
)和编程电压端v
program
,所述阵列行结构20一行中对应的多个所述存内计算阵列单元a的多个所述使能信号端v
en
依次连接,所述阵列行结构20一行中对应的多个所述存内计算阵列单元a的多个所述工作电压端v
dd
依次连接,用于形成行控制信号;所述阵列列结构10一列中对应的多个所述存内计算阵列单元a的多个所述忆阻器读取电压
端v
input
(v
input(l)
/v
input(r)
)依次连接,所述阵列列结构10一列中对应的多个所述存内计算阵列单元a的多个所述编程电压端v
program
依次连接,用于形成列控制信号;
46.所述阵列列结构10的输出结果串联在一起作为对应的所述输出反相器30的电压输入,所述输出反相器30将每一行所述阵列行结构的计算结果以逻辑电平进行输出。
47.本发明实施例提供的基于忆阻器的存内计算阵列结构,所述存内计算阵列结构包括:多个存内计算阵列单元串联组成的阵列列结构、多个所述存内计算阵列单元并排放置形成的阵列行结构,以及在每行所述阵列行结构的连接处对应设置的输出反相器;其中,所述存内计算阵列单元包括使能信号端、工作电压端、忆阻器读取电压端和编程电压端,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述使能信号端依次连接,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述工作电压端依次连接,用于形成行控制信号;所述阵列列结构一列中对应的多个所述存内计算阵列单元的多个所述忆阻器读取电压端依次连接,所述阵列列结构一列中对应的多个所述存内计算阵列单元的多个所述编程电压端依次连接,用于形成列控制信号;所述阵列列结构的输出结果串联在一起作为对应的所述输出反相器的电压输入,所述输出反相器将每一行所述阵列行结构的计算结果以逻辑电平进行输出,可以将存内计算阵列单元两两串联形成电阻分压电路,实现二值权重,并且通过输出反相器实现二值神经网络中的归一化和激活函数功能,避免了复杂通用数字处理器的使用,从而可以高效实现二值神经网络向前传播的过程,同时通过输出反相器,将模拟量的计算结果转换为逻辑电平,直接用作下一层输入,省去了模数转换器的使用,本技术实施例所述的基于忆阻器的存内计算阵列结构具有cmos工艺兼容、面积小、可拓展性强、高计算速度、低功耗和强抗噪能力等优势,为在算力有限的边缘计算应用场景下硬件高效实现二值神经网络模型提供可能。
48.可选的,图2示出了本技术实施例提供的一种存内计算阵列单元的电路结构示意图,如图2所示,所述存内计算阵列单元a包括:忆阻器单元(memristor(l)/memristor(r))a1、反相器a2和场效应晶体管a3,所述忆阻器单元a1包括第一忆阻器a11和第二忆阻器a12。
49.所述场效应晶体管a3包括所述使能信号端v
en
、所述编程电压端v
program
和连接端;所述反相器a2包括所述工作电压端v
dd
和反相器连接端;所述忆阻器读取电压端v
input
包括两个所述忆阻器子读取电压端,所述第一忆阻器a11包括第一忆阻器子读取电压端v
input(l)
和第一忆阻器连接端,所述第二忆阻器a12包括第二忆阻器子读取电压端v
input(r)
和第二忆阻器连接端;
50.所述第一忆阻器连接端和所述第二忆阻器连接端相连接,所述场效应晶体管对应的所述连接端和所述第一忆阻器连接端连接,所述场效应晶体管对应的所述连接端和所述反相器连接端连接。
51.可选的,参见图2所述反相器包括p型晶体管和n型晶体管,所述p型晶体管包括所述工作电压端v
dd
、第一连接端和第一输出连接端,所述n型晶体管包括接地端gnd、第二连接端和第二输出连接端,所述第一连接端和所述第二连接端连接,并且所述第一连接端和所述第二连接端与所述第一忆阻器连接端连接,所述第一输出连接端vout和所述第二输出连接端vout连接。
52.可选的,所述忆阻器单元被配置为,在对所述忆阻器读取电压端施加读取电压信号后,所述第一忆阻器连接端和所述第二忆阻器连接端的连接处根据所述忆阻器单元的阻
值大小进行电压分配,作为所述反相器的输入;
53.所述反相器被配置为,在反相器输入大于或者等于反相器阈值转变电压时,输出结果置为0,在所述反相器输入小于所述反相器阈值转变电压时,输出结果保持工作电压。
54.可选的,所述存内计算阵列单元配置为:通过调整所述第一忆阻器对应的所述忆阻器读取电压端的读取电压,以及所述第二忆阻器对应的所述忆阻器读取电压端的读取电压完成二值权重控制、完成输入控制和乘法控制。
55.在本技术中,存内计算阵列单元包含由两个串联的互补忆阻器组成的忆阻器单元,以及一个用于电压方法的反相器,和一个忆阻器权重编程晶体管(场效应晶体管)形成三个晶体管两个忆阻器(3t2r)组成的结构,忆阻器单元可以由一对处于不同高低阻态的忆阻器组成,进一步的,存内计算阵列单元可以为3t2r结构,在第一忆阻器和第二忆阻器左右两端施加读取电压信号后,忆阻器中间连接点处会根据两个忆阻器电阻的比值大小进行电压分配,并作为反相器的输入,反相器p型晶体管接工作电压v
dd
,n型晶体管接地。在工作时,若反向器输入达到反相器阈值转变电压时,输出结果从v
dd
转变为0v,若反相器输入未达到反相器阈值转变电压时,输出结果保持v
dd

56.其中,反相器阈值转变电压的可选范围可以是0.5v-1v,本技术实施例对该具体数值不作限定,可以根据实际应用场景做调整。
57.表一示出了本技术实施例提供的一种二值权重、输入和乘法实现方法的表格,二值输入可以通过调整忆阻器单元左右两端读电压实现,左端为高电压、右端为低电压时为正1输入,反之,当左端为低电压右端为高电压时为负1输入。正负1二值化权重可以通过忆阻器阻值大小关系实现,当左端忆阻器(第一忆阻器)为高阻,右端忆阻器(第二忆阻器)为低阻时为正1权重,反之,当左端忆阻器为低阻,右端忆阻器为高阻时为负1权重。二值乘法通过对第一忆阻器和第二忆阻器施加读取电压实现,结果由输出电压表示,当输出电压为0v时乘法结果为负1,当输出电压结果为工作电压时,乘法结果为正1。
58.表一
[0059][0060][0061]
在本技术中,表二示出了本技术实施例提供的一种存内计算阵列单元的操作电压条件,该存内计算阵列单元包含初始化工作模式,编程模式和计算模式。在初始化模式下,输入使能电压信号(从使能信号端v
en
输入的电压信号)选中待操作的忆阻器单元,并将待操作的忆阻器单元中的忆阻器读取端(v
input(l)
或v
input(r)
)接地,另一读取端浮空形成初始化电路回路。然后输入初始化电压vp(编程电压端v
program
对应的电压),对该忆阻器进行初始
化。一系列典型值为:使能信号为脉冲电压信号(vrwl),幅值为1.3-1.8v,脉宽为100ns-1μs;初始化电压vp为脉冲电压信号,幅值为2.5-3.3v,脉宽为100ns-1μs。在编程模式下分为电阻从高阻改写为低阻set和电阻从低阻改写为高阻reset两个子模式。
[0062]
在set模式下,输入使能电压信号选中待操作忆阻器,并将待操作忆阻器读取端(v
input(l)
或v
input(r)
)接地,另一读取端浮空形成set编程电路回路。然后输入编程电压vp,对该忆阻器进行set编程。一系列典型值为:使能信号为脉冲电压信号,幅值为1.5-2v,脉宽为50ns-500ns。编程电压vp为脉冲电压信号,幅值为1-1.5v,脉宽为50ns-500ns。
[0063]
在reset模式下,输入使能电压信号选中待操作忆阻器,并将待操作忆阻器的编程端vp和一读取端同时浮空形成reset编程电路回路。然后从一读取端(v
input(l)
或v
input(r)
)输入reset电压,对该忆阻器进行reset编程。一系列典型值为:使能信号为脉冲电压信号,幅值为3-3.3v,脉宽为200ns-700ns;reset编程电压vl或vr为脉冲电压信号,幅值为1.5-2v,脉宽为200ns-700ns。
[0064]
在计算模式下,使能电压信号和编程端vp均接地。忆阻器读取端vl和vr根据输入符号分别施加高低读取电平,单元内反相器工作电压为vdd,输出反相器工作电压为vi。一系列典型值为:vl或vr为脉冲电压信号,幅值为0.3-1.2v,脉宽为10ns~200ns;vdd和vi为脉冲电压信号,幅值为1.4-2.1v,脉宽为10ns-200ns。
[0065]
表二
[0066][0067]
在本技术中,如图1所示,数组串联在一起的存内计算阵列单元组成了阵列的列结构,其输出结果串联在一起作为输出反相器的电压输入,代表了向量向量乘法的计算结果。输入反相器的工作电压为vi,将每一行的计算结果以逻辑电平进行输出。其中,每一行串联存内计算阵列单元的反相器工作电压端,使能信号端分别连接在一起,形成行控制信号。将多行串联存内计算阵列单元并排放置,形成了阵列的行结构,用于并行向量矩阵乘法的计算。每一行存内计算阵列单元共享忆阻器读取电压端对应的电压以及编程电压端对应的电压,形成列控制信号。
[0068]
在本技术中,图3示出了本技术实施例提供的一种阵列结构存内计算结果的示意图,如图3所示,横轴表示矩阵向量乘法结果,纵轴表示输出电压,图3示出了25个正负1输入与25个正负1权重相乘后的25种乘加计算结果下串联输出电压。由图3可知,对于每一种乘
加结果,均存在唯一与之对应的输出电压,且呈相关特性,因此,可以使用该存内存内计算阵列结构通过存内计算得到乘加运算结果。
[0069]
在本技术中,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述反相器的所述工作电压端依次连接,用于在不同的工作电压下,多个所述反相器对相同的矩阵相乘乘法结果输出不同的电压,完成输出电压结果的平移变换,以实现二值神经网络中的归一化层功能。
[0070]
可选的,图4示出了本技术实施例提供的一种归一化层实现的示意图,在二值网络中,由于归一化层厚存在二值激活函数,所以输出结果仅与乘加结果的符号有关,归一化层的功能是对乘加的结果做平移变换,从而影响乘加结果的符号,改变输出结果。本发明通过调整串联的反向器的工作电压可以实现归一化层的功能,具体包括:在不同的工作电压下,反相器会对相同的矩阵向量乘法结果输出不同的电压,表现为输出电压结果的平移变换,从而实现了二值神经网络中的归一化层功能。
[0071]
在本技术中,每个所述输出反相器被配置为,在工作状态时,若所述输出反相器对应的反相器输入大于或者等于输出反相器阈值转变电压时,控制输出结果从高电平转变为低电平;若所述输出反相器对应的所述反相器输入小于所述输出反相器阈值转变电压时,输出结果保持高电平,以实现二值神经网络中的二值激活函数功能。
[0072]
图5示出了本技术实施例提供的一种二值激活函数实现的示意图,输出反向器p型晶体管接工作电压高电平vi,n型晶体管接低电平地。在工作时,若反向器输入达到反相器阈值转变电压时,输出结果从高电平转变为低电平;反之,若反向器输入未达到反相器阈值转变电压时,输出结果保持高电平。由于输出结果具有二值特性,所以实现了二值神经网络中的二值激活函数功能。同时由于输出值为逻辑电平,可以直接输入可编程逻辑阵列的输入输出端口,也可以直接用于下一层网络的输入。
[0073]
所述存内计算阵列单元被配置为:基于预先训练好的二值卷积神经网络卷积层权重、归一化层权重和全连接层权重,通过所述编程电压端进行编程,完成正负1权重硬件映射;
[0074]
在本技术中,所述存内计算阵列单元还被配置为:基于所述归一化层权重确定归一化系数,基于所述归一化系数确定每一输出节点与零点的位置关系,得到平移参数,结合多个所述反相器输出的多个工作电压,完成所述输出电压结果的平移变换。
[0075]
在本技术中,所述阵列列结构和所述阵列行结构被配置为:在将目标待分类图片转换为黑白图像输入到计算单元中后,完成卷积层和归一化层计算,得到归一化层结果,将所述归一化层结果输入至所述输出反相器,完成二值函数激活。
[0076]
在本技术中,所述输出反相器被配置为:将所述输出反相器的输出电压作为下一层的输入电压,完成二值卷积前向传播,直至完成卷积层计算,将所述输出电压作为全连接分类层的输入,完成二值全连接网络的前向传播,将对应的前向传播结果进行排序,得到所述目标待分类图片的分类结果。
[0077]
图6示出了本技术实施例提供的一种硬件实现二值卷积神经网络模型的方法流程示意图,如图6所示,所述方法包括:
[0078]
步骤401:使用电脑预先训练好二值卷积神经网络卷积层、归一化层、全连接层的权重。
[0079]
步骤402:将卷积层和全连接层的权重通过对忆阻器单元进行编程改写阻值的方法写入忆阻器阵列中实现正负一权重映射。
[0080]
步骤403:根据归一化系数确定每一输出节点与零点的位置关系,得到平移参数,按照平移参数,调整单元内反相器工作电压,使输出电压平移,从而实现归一化层功能而无需使用复杂的通用数字处理器。
[0081]
完成初始化后,执行步骤404。
[0082]
步骤404:将待分类图片转换为黑白图像,并根据每一个像素点的像素值将不同读电压脉冲输入到计算单元中。
[0083]
步骤405:每一个计算单元会根据分压得到乘法结果,通过串联多个反相器的输出结果得到完整的向量矩阵乘法结果。
[0084]
步骤406:重复多次该过程,实现矩阵乘法的卷积操作。
[0085]
由于预先设定好单元内反相器的工作电压,相当于自动实现了归一化功能。
[0086]
步骤407:归一化后的电压输出结果作为输入电压输入到输出反相器,得到高低逻辑电平从而实现二值激活函数,并做为下一层网络的输入。
[0087]
步骤408:重复操作直到完成卷积层计算,将该输出电压结果作为全连接分类层的输入,完成二值全连接网络的前向传播。
[0088]
步骤409:将传播结果进行排序,得到图片的分类结果。
[0089]
在本技术中,图7示出了本技术实施例提供的一种实现二值卷积神经网络的结构示意图,如图7所示,网络由三层卷积层和两层全连接网络组成。其中三层卷积层卷积核个数为32,32,25,卷积核大小为5
×
5。全连接隐层节点为50,两层权重个数分别为5000和500。图片经过二值化处理后输入到卷积层中,进行卷积操作。卷积结果送入归一化层和激活函数层中进行后续前向传播。当三层卷积完成后,结果送入全连接分类网络中,根据输出的大小给出最终的图片分类结果。
[0090]
在本技术中,图8示出了本技术实施例提供的一种mnist数据集的示意图,可以包含70000张手写数字图片,其中训练集60000张,测试集10000张。本技术是在mnist数据集上进行测试,其平均识别率达到95%,权重噪声容忍度达到20%。由于在图片分类推理过程中无需数模转换器和通用数字处理器,相较于已有工作功耗降低约3倍面积降低10倍。
[0091]
在本技术中,图9示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构中反相器输入电压与输出电压关系的示意图,如图9所示,反相器输入电压从0.4v变化到0.8v过程中,当反向器输入达到阈值转变电压(0.65v)时,输出结果从高电平转变为低电平;反之,当反向器输入未达到阈值转变电压时,输出结果保持高电平。该二值特性用于二值激活函数,实现二值输出。
[0092]
在本技术中,图10示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构实现二值神经网络中的归一化层的示意图,如图10(a)和(b)所示,在进行矩阵向量乘法时通过修改串联反相器的工作电压可以得到多条输出电压曲线。通过得到输出电压的平移特性,可以实现归一化层中的平移变换功能,从而无需引入额外的通用数字处理器就可以直接实现归一化层。
[0093]
在本技术中,图11示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构抗噪能力的示意图,图中展示了基于忆阻器的存内计算阵列结构在进行向量向量乘法时
不同计算结果随权重噪声的分布变化。可以看出,即使加在权重上的高斯分布噪声达到20%,该阵列依然能够将不同的计算结果区分开,没有交叠,说明个该基于忆阻器的存内计算阵列结构具有极强的抗噪能力。
[0094]
在本技术中,图12示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构的卷积神经网络图像分类准确率的示意图,基于忆阻器的存内计算阵列结构的二值卷积神经网络在mnist数据集上具有良好表现,平均准确率为95.2%,与现有基于传统cmos数字电路系统实现的结果相当。
[0095]
在本技术中,图13示出了本技术实施例提供的一种基于忆阻器的存内计算阵列结构的功耗和面积与已有工作对比的示意图,如图13(a)和(b)所示,相较于含有复杂片上外围电路如模/数转换器的其它阵列工作,由于在推理过程中无需读出电流,而是直接将结果作为下一层网络的输入,所以本阵列无需模/数转换器设计。大幅度降低了阵列核心面积(约10倍)和阵列功耗(约3倍)。
[0096]
本发明实施例提供的基于忆阻器的存内计算阵列结构,所述存内计算阵列结构包括:多个存内计算阵列单元串联组成的阵列列结构、多个所述存内计算阵列单元并排放置形成的阵列行结构,以及在每行所述阵列行结构的连接处对应设置的输出反相器;其中,所述存内计算阵列单元包括使能信号端、工作电压端、忆阻器读取电压端和编程电压端,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述使能信号端依次连接,所述阵列行结构一行中对应的多个所述存内计算阵列单元的多个所述工作电压端依次连接,用于形成行控制信号;所述阵列列结构一列中对应的多个所述存内计算阵列单元的多个所述忆阻器读取电压端依次连接,所述阵列列结构一列中对应的多个所述存内计算阵列单元的多个所述编程电压端依次连接,用于形成列控制信号;所述阵列列结构的输出结果串联在一起作为对应的所述输出反相器的电压输入,所述输出反相器将每一行所述阵列行结构的计算结果以逻辑电平进行输出,可以将存内计算阵列单元两两串联形成电阻分压电路,实现二值权重,并且通过输出反相器实现二值神经网络中的归一化和激活函数功能,避免了复杂通用数字处理器的使用,从而可以高效实现二值神经网络向前传播的过程,同时通过输出反相器,将模拟量的计算结果转换为逻辑电平,直接用作下一层输入,省去了模数转换器的使用,本技术实施例所述的基于忆阻器的存内计算阵列结构具有cmos工艺兼容、面积小、可拓展性强、高计算速度、低功耗和强抗噪能力等优势,为在算力有限的边缘计算应用场景下硬件高效实现二值神经网络模型提供可能。
[0097]
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
[0098]
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不
脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1