用于卷积神经网络卷积运算和全连接运算电路的制作方法

文档序号:15853391发布日期:2018-11-07 10:32阅读:479来源:国知局
用于卷积神经网络卷积运算和全连接运算电路的制作方法

本发明涉及电子信息以及深度学习技术领域,具体涉及用于卷积神经网络卷积运算和全连接运算电路。

背景技术

随着基于神经网络的人工智能解决方案的需求越来越多,在一些移动平台如无人机、机器人等都应用卷积神经网络构建,这些都正在深刻的改变人类的生产和生活方式。而对应在卷积神经网络专用硬件设计研究方面,已有基于cpu、gpu、fpga、asic和rram等新型器件的实现方式。从云端到移动端,不同应用场景对卷积神经网络的计算能力提出了不同的需求,再加上卷积神经网络的结构多样、数据量大、计算量大,也给硬件实现神经网络算法设计提出了巨大挑战。其中,卷积神经网络的硬件架构的核心是卷积运算的硬件架构。

在现有技术中,一种是应用传统的数字电路进行卷积神经网络卷积运算的硬件架构的电路设计,如fpga、asic、gpu和cpu等。但随着工艺尺寸的减小,电路节点漏电增大、电源电压降低。在一定的计算精度下,就要消耗大量的电路计算资源和存储资源。即整体电路的功耗、面积、速度和精度等性能不断受到限制。另一种是基于新器件进行cnn硬件电路设计实现,如rram等。但是这种新型器件工艺与cmos工艺不完全兼容,且同样存在计算度量的分辨精度受限问题。



技术实现要素:

本申请提供用于卷积神经网络卷积运算和全连接运算电路。在摩尔定律工艺下,以电压、电流为计算量的传统数模电路在速度和精度等性能上不断受到限制,而相关研究表明模拟时域运算电路可以有更高精度等性能优势,本申请就基于常规的模拟时域运算电路实现用于卷积神经网络卷积运算,卷积运算的硬件电路架构完全兼容cmos加工工艺,进而在达到很高的时间计算精度的同时,减少用于存储的集成电路数量和相应功耗的损耗。

本申请公开的用于卷积神经网络卷积运算和全连接运算电路具体实施方案如下:

根据第一方面,一种实施例中提供一种基于时域计算的卷积运算电路包括:

卷积权重输入模块,具有参考脉冲信号输入端、卷积核权重值输入端、超前滞后控制信号输入端、正输出端和负输出端;所述参考脉冲信号输入端用于输入参考脉冲信号,所述卷积核权重值输入端用于输入表示卷积核权重值的信号,所述控制信号输入端用于输入超前滞后控制信号;所述卷积权重输入模块用于根据所述超前滞后控制信号来判断卷积核权重值输入端接收到的信号所表示的卷积核权重值的负和正,当判断为负时,则通过其负输出端输出,当判断为非负时,则通过其正输出端输出;

卷积模块,包括一路或多路独立的卷积子模块;每路所述卷积子模块具有核权重值正输入端、核权重值负输入端、待卷积值输入端、以及输出端;所述待卷积值输入端用于输入表示待卷积值的信号;所述核权重值正输入端用于接收所述卷积权重输入模块的正输出端输出的信号,所述卷积子模块用于将其核权重值正输入端接收的信号进行放大,并将放大后的信号作为加数进行累加计算;所述核权重值负输入端用于接收所述卷积权重输入模块的负输出端输出的信号,所述卷积子模块用于将其核权重值负输入端接收的信号进行放大,并将放大后的信号作为减数进行累减计算,其中所述卷积子模块对信号进行放大的倍数为所述待卷积值;所述卷积子模块通过其输出端来输出表示最终计算结果的信号。

进一步,所述卷积权重输入模块包括:

第一数字时间转换器,具有输入端、控制端和输出端;所述第一数字时间转换器的输入端与所述参考脉冲信号输入端连接,用于接收所述参考脉冲信号;所述第一数字时间转换器的控制端与所述卷积核权重值输入端连接,用于输入所述表示卷积核权重值的信号;所述第一数字时间转换器当接收到用于所述表示卷积核权重值的信号时,通过其输出端输出第一脉冲信号,其中第一脉冲信号与所述参考脉冲信号的时差为所述卷积核权重值;

第零数字时间转换器,具有输入端、控制端和输出端;所述第零数字时间转换器的输入端与所述参考脉冲信号输入端连接,用于接收所述参考脉冲信号;所述第零数字时间转换器的控制端与所述超前滞后控制信号输入端连接,用于接收所述超前滞后控制信号;所述第零数字时间转换器当接收到用于所述超前滞后控制信号时,通过其输出端输出第二脉冲信号,其中第二脉冲信号与所述参考脉冲信号的时差为所述超前滞后控制信号的值;

第一边沿检测器,具有超前正输入端、滞后负输入端、正输出端以及负输出端;所述第一边沿检测器的超前正输入端与所述第一数字时间转换器的输出端相连,用于接收所述第一脉冲信号;所述第一边沿检测器的滞后负输入端与所述第零数字时间转换器的输出端相连,用于接收所述第二脉冲信号;所述第一边沿检测器当先检测到第一脉冲信号的边沿时,通过其正输出端输出一脉冲信号,当先检测到第二脉冲信号的边沿时,通过其负输出端输出一脉冲信号;其中所述脉冲信号的宽度等于所述第一脉冲信号边沿与所述第二脉冲信号对应边沿的时差,所述第一边沿检测器的正输出端为所述卷积权重输入模块的正输出端,所述第一边沿检测器的负输出端为所述卷积权重输入模块的负输出端。

进一步,所述卷积子模块包括:

时间放大器,具有正输入端、负输入端、控制端、正输出端和负输出端;所述时间放大器的控制端为所述待卷积值输入端连接;所述时间放大器的正输入端为所述核权重值正输入端,所述时间放大器的负输入端为所述核权重值负输入端;所述时间放大器用于将其正输入端接收的信号进行放大,并通过其正输出端输出;所述时间放大器用于将其负输入端接收的信号进行放大,并通过其负输出端输出;其中对信号进行放大的倍数为其控制端接收的信号所对应的值;

时间寄存器,具有正输入端、负输入端和输出端;所述时间寄存器的正输入端与所述时间放大器的正输出端相连,所述时间寄存器的负输入端与所述时间放大器的负输出端相连,所述时间寄存器的输出端为所述卷积子模块的输出端;所述时间寄存器用于将其正输入端接收的信号作为加数进行累加计算,以及将其负输入端接收的信号作为减数进行累减计算,并通过其输出端输出表示最终计算结果的信号;

进一步,所述卷积运算电路还包括:

卷积层偏置输入模块,具有参考脉冲信号输入端、卷积层偏置值输入端、超前滞后控制信号输入端、正输出端和负输出端;所述卷积层偏置输入模块的参考脉冲信号输入端用于输入所述参考脉冲信号;所述卷积层偏置值输入端用于输入表示卷积层偏置值的信号;所述卷积层偏置输入模块的超前滞后控制信号输入端用于输入超前滞后控制信号;所述卷积层偏置输入模块用于根据所述超前滞后控制信号来判断卷积层偏置值输入端接收到信号所表示的卷积层偏置值的负和正,当判断为负时,则通过其负输出端输出,当判断为非负时,则通过其正输出端输出。

所述卷积子模块还具有卷积层偏置值正输入端和卷积层偏置值负输入端;

所述卷积子模块的卷积层偏置值正输入端接收所述卷积层偏置输入模块的正输出端输出的脉冲信号,所述卷积子模块还用于将其卷积层偏置值正输入端接收的信号作为加数进行累加计算;所述卷积子模块的卷积层偏置值负输入端接收所述卷积层偏置输入模块的负输出端输出的脉冲信号,所述卷积子模块还用于将其卷积层偏置值负输入端接收的信号作为减数进行累减计算;所述卷积子模块通过其输出端来输出表示最终计算结果的信号。

进一步,所述卷积层偏置输入模块包括:

第三数字时间转换器,具有输入端、控制端和输出端;所述第三数字时间转换器的输入端与所述参考脉冲信号输入端连接,用于接收所述参考脉冲信号;所述第三数字时间转换器的控制端与所述卷积层偏置值输入端连接,用于输入所述表示卷积层偏置值的信号;所述第三数字时间转换器当接收到用于所述表示表示卷积层偏置值的信号时,通过其输出端输出第三脉冲信号,其中第三脉冲信号与所述参考脉冲信号的时差为所述卷积层偏置值;

第二数字时间转换器,具有输入端、控制端和输出端;所述第二数字时间转换器的输入端与所述参考脉冲信号输入端连接,用于接收所述参考脉冲信号;所述第二数字时间转换器的控制端与所述超前滞后控制信号输入端连接,用于接收所述超前滞后控制信号;所述第二数字时间转换器当接收到用于所述超前滞后控制信号时,通过其输出端输出第四脉冲信号,其中第四脉冲信号与所述参考脉冲信号的时差为所述超前滞后控制信号的值;

第二边沿检测器,具有超前正输入端、滞后负输入端、正输出端以及负输出端;所述第二边沿检测器的超前正输入端与所述第三数字时间转换器的输出端相连,用于接收所述第三脉冲信号;所述第二边沿检测器的滞后负输入端与所述第二数字时间转换器的输出端相连,用于接收所述第四脉冲信号;所述第二边沿检测器当先检测到第三脉冲信号的边沿时,通过其正输出端输出一脉冲信号,当先检测到第四脉冲信号的边沿时,通过其负输出端输出一脉冲信号;其中所述脉冲信号的宽度等于所述第三脉冲信号边沿与所述第四脉冲信号对应边沿的时差,

第一双通道选择开关,其具有正输入端、负输入端、正输出端和负输出端;所述第一双通道选择开关的正输入端与所述第二边沿检测器的正输出端相连,用于接收所述第二边沿检测器的正输出端输出的信号;所述第一双通道选择开关的负输入端与所述第二边沿检测器的负输出端相连,用于接收所述第二边沿检测器的负输出端输出的信号;当所述第一双通道选择开关正输入端先于其负输入端输入信号时,通过所述第一双通道选择开关的正输出端输出所接收到的信号,所述第一双通道选择开关的负输出端不输出信号;当所述第一双通道选择开关的负输入端先于其正输入端输入信号,则通过所述第一双通道选择开关的负输出端输出所接收到的信号,所述第一双通道选择开关的正输出端不输出信号;所述第一双通道选择开关的正输出端为所述卷积层偏置输入模块的正输出端,所述第一双通道选择开关的负出端为所述卷积层偏置输入模块的负输出端。

根据第二方面,一种实施例中提供一种基于时域计算的卷积神经网络全连接电路,包括:

全连接模块,包括一路或多路独立的全连接子模块;每路全连接子模块具有待全连接值输入端、全连接值输入端、以及输出端;所述待全连接值输入端用于输入表示待全连接运算值的信号;所述全连接值输入端用于输入全连接运算值的信号;所述全连接子模块用于将其全连接值输入端输入的信号进行放大,并将放大后的信号作为加数进行累加计算,其中所述全连接子模块对信号进行放大的倍数为所述待全连接运算值;所述全连接子模块通过其输出端来输出表示最终结果的信号。

进一步,所述全连接子模块包括:

第二时间放大器,具有输入端、控制端、和输出端;所述第二时间放大器的控制端用于输入表示所述待全连接运算值的信号;所述第二时间放大器的输入端用于输入表示所述全连接运算值的信号,所述第二时间放大器用于将其输入端接收的信号进行放大,并通过其输出端输出,其中对信号进行放大的倍数为其控制端接收的信号所对应的值;

第二时间寄存器,具有输入端和输出端;所述第二时间寄存器的输入端与所述第二时间放大器的输出端相连,所述时间寄存器的输出端为所述全连接子模块的输出端;所述第二时间寄存器用于将其输入端接收的信号作为加数进行累加计算,并通过其输出端输出表示最终计算结果的信号。

进一步,所述卷积神经网络全连接电路还包括:

全连接层偏置输入模块,具有参考脉冲信号输入端、全连接层偏置值输入端、超前滞后控制信号输入端、正输出端和负输出端;所述全连接层偏置输入模块的参考脉冲信号输入端用于输入所述参考脉冲信号;所述全连接层偏置值输入端用于输入表示全连接层偏置值的信号;所述全连接层偏置输入模块的超前滞后控制信号输入端用于输入超前滞后控制信号;所述全连接层偏置输入模块用于根据所述超前滞后控制信号来判断全连接层偏置值输入端接收到信号所表示的全连接层偏置值的负和正,当判断为负时,则通过其负输出端输出,当判断为非负时,则通过其正输出端输出。

所述全连接子模块还具有全连接层偏置值正输入端和全连接层偏置值负输入端;

所述全连接子模块的全连接层偏置值正输入端接收所述全连接层偏置输入模块的正输出端输出的脉冲信号,所述全连接子模块还用于将其全连接层偏置值正输入端接收的信号作为加数进行累加计算;所述全连接子模块的全连接层偏置值负输入端接收所述全连接层偏置输入模块的负输出端输出的脉冲信号,所述全连接子模块还用于将其全连接层偏置值负输入端接收的信号作为减数进行累减计算;所述全连接子模块通过其输出端来输出表示最终计算结果的信号。

进一步,所述全连接层偏置输入模块包括:

第五数字时间转换器,具有输入端、控制端和输出端;所述第五数字时间转换器的输入端与所述参考脉冲信号输入端连接,用于接收所述参考脉冲信号;所述第五数字时间转换器的控制端与所述全连接层偏置值输入端连接,用于输入所述表示全连接层偏置值的信号;所述第五数字时间转换器当接收到用于所述表示表示全连接层偏置值的信号时,通过其输出端输出第五脉冲信号,其中第五脉冲信号与所述参考脉冲信号的时差为所述全连接层偏置值;

第四数字时间转换器,具有输入端、控制端和输出端;所述第四数字时间转换器的输入端与所述参考脉冲信号输入端连接,用于接收所述参考脉冲信号;所述第四数字时间转换器的控制端与所述超前滞后控制信号输入端连接,用于接收所述超前滞后控制信号;所述第四数字时间转换器当接收到用于所述超前滞后控制信号时,通过其输出端输出第六脉冲信号,其中第六脉冲信号与所述参考脉冲信号的时差为所述超前滞后控制信号的值;

第三边沿检测器,具有超前正输入端、滞后负输入端、正输出端以及负输出端;所述第三边沿检测器的超前正输入端与所述第五数字时间转换器的输出端相连,用于接收所述第五脉冲信号;所述第三边沿检测器的滞后负输入端与所述第四数字时间转换器的输出端相连,用于接收所述第六脉冲信号;所述第三边沿检测器当先检测到第五脉冲信号的边沿时,通过其正输出端输出一脉冲信号,当先检测到第六脉冲信号的边沿时,通过其负输出端输出一脉冲信号;其中所述脉冲信号的宽度等于所述第五脉冲信号边沿与所述第六脉冲信号对应边沿的时差,

第二双通道选择开关,其具有正输入端、负输入端、正输出端和负输出端;所述第二双通道选择开关的正输入端与所述第三边沿检测器的正输出端相连,用于接收所述第三边沿检测器的正输出端输出的信号;所述第二双通道选择开关的负输入端与所述第三边沿检测器的负输出端相连,用于接收所述第三边沿检测器的负输出端输出的信号;当所述第二双通道选择开关正输入端先于其负输入端输入信号时,通过所述第二双通道选择开关的正输出端输出所接收到的信号,所述第二双通道选择开关的负输出端不输出信号;当所述第二双通道选择开关的负输入端先于其正输入端输入信号,则通过所述第二双通道选择开关的负输出端输出所接收到的信号,所述第二双通道选择开关的正输出端不输出信号;所述第二双通道选择开关的正输出端为所述全连接层偏置输入模块的正输出端,所述第二双通道选择开关的负出端为所述全连接层偏置输入模块的负输出端。

根据第三方面,一种实施例中提供用于卷积神经网络运算的电路,包括:

第一方面所述的卷积运算电路,其中,当所述卷积运算电路中所述卷积子模块用于输出的表示最终计算结果的信号为非正值时,输出为0脉宽的脉冲信号;

第二方面所述用于卷积神经网络全连接运算电路;

激活池化模块,用于接收所述卷积运算电路的每一路所述卷积子模块输出端输出表示最终计算结果的脉冲信号,输出其中脉宽最宽的信号,给所述卷积神经网络全连接运算电路中的每一路所述全连接子模块的所述全连接值输入端。

依据上述实施例的卷积运算电路,由于基于常规的模拟时域计算电路,在时域上完成卷积神经网络卷积运算相应的乘累加等运算,使得卷积神经网络运算电路能够完全兼容cmos工艺,具有很高的时间计算精度且能节省额外存储面积和降低相应功耗。

附图说明

图1为一种卷积神经网络的结构图;

图2为一种单隐藏层卷积神经网络结构图;

图3为另一种实施例的图像数据信息;

图4为另一种实施例的卷积神经网络卷积计算的流程图;

图5为另一种实施例的卷积神经网络一个特征图谱数据应用relu激活后的数据变化图;

图6为另一种实施例的卷积神经网络一个特征图谱数据池化过程图;

图7为另一种实施例的卷积神经网络全连接的计算过程;

图8为另一种实施例的卷积神经网络结构框图;

图9为另一种实施例的模拟时间域的卷积运算电路连接图;

图10为另一种实施例的数字时间转换器结构图;

图11为另一种实施例的时间寄存器原理图;

图12为另一种实施例的卷积层偏置电路连接图;

图13为另一种实施例的全连接模块和全连接偏置电路连接图;

图14为另一种实施例的模拟时间域的卷积运算电路连接图;

图15为另一种实施例的卷积神经网络网络参数写入时域电路的位置图;

图16为另一种实施例的卷积神经网络网络参数的提取规则图;

图17为另一种实施例的cadence-ams平台硬件仿真模型图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。

另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。

本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。

卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,一般可以分为输入层、隐藏层和输出层,隐藏层又可分为卷积层和池化层。

下面用一个具体的实例讲解下卷积神经网络的结构,如图1所示,为一种卷积神经网络的结构图。该卷积神经网络输入的是一张a*a分辨率的图像,例如28*28分辨率的图像。

卷积层c1用m个n*n的卷积核对上述图像做卷积运算,获得m个b*b分辨率的图像,一般还会加偏置和激活的操作,便于理解卷积神经网络的结构省略了这两个步骤。

采样层s2对卷积层c1获得的m个b*b分辨率的图像进行采样操作获得m个b/2*b/2分辨率的图像。

卷积层c3用12个5*5的卷积核对采样层s2获得6个12*12分辨率的图像进行卷积运算,获得12个8*8分辨率的图像。

采样层s3对卷积层c3获得的12个8*8分辨率的图像进行采样操作获得12个4*4分辨率的图像。

输出层是对采样层s3获得的12个4*4分辨率的图像进行全连接输出,得到图像的12个特征信息。

从上述例子中卷积神经网络采用两个卷积层,并且输出层的全连接输出也是一种特殊的卷积运算,所以卷积计算是卷积神经网络的运算的核心。

在本发明实施例中,采用模拟时间域的方式实现的硬件电路架构实现对在卷积神经网络的卷积运算。

实施例一:

请参考图2,为一种单隐藏层卷积神经网络结构图;

输入层输入的是像素点为7*7的minist数据集图像信息,进行4位量化,小数取2位。minist数据集多张灰度图片,可以用一个数字数组来表示一张图片,每张图片包含7*7个像素点。每一张图片都有对应的标签,也就是图片对应的数字,例如图3所示,为图片信息为数字“0”的图片和对应图像像素点的数值,每张图片里的每一个像素点的数值都表示该张图片里的某个像素点的强度值。minist数据集的训练数据集标签是介于0到9的数字,用来描述给定图片里表示的数字。称为唯一向量,一个唯一向量除了某一位数字1以外其余各维度数字都是0,所以此例中数字n将表示成一个只有在第n维度(从0开始)数字为1的10维向量。比如,图3所示标签0将表示成([1,0,0,0,0,0,0,0,0,0])。其标签就是一个[10000,10]的数字矩阵。本实施例中,选取6个4*4大小的卷积核,根据如下公式,获得图像特征数据(yk):

其中,k代表卷积核的个数(如k=1,2,3,4,5,6),m代表卷积核大小(此例中4位量化m=4*4),wcik是卷积层权重,bck为卷积核偏置,xi为输入的图像数据。

池化层最大下采样操作取dim=2,全连接层的权重是2*2*10=40个,进行4位量化,小数取0位,全连接层的偏置为10个1,采用4位量化,小数取2位。全连接层的卷积公式是:

zout_channeli是代表全连接运算结果,fk()是代表激活池化变换函数,yk是上一层卷积计算层输出值,k代表全连接层偏置个数(k=1.2.3.4...k为自然数),i代表全连接输出分类通道编号,m代表通道个数(如m=4*4=16),wdik是全连接权重,bdk为全连接层偏置。

下面通过具体的实例讲解卷积神经网络计算的过程,输入图3所示的图像数据信息。

如图4所示,为卷积神经网络卷积计算的流程图,在该图中,输入图像中与卷积核相应大小的图像块中的数值与卷积核矩阵中的相应位置的数值相乘并将各个乘积相加,将相加得到的值与卷积的偏置值相加,得到该图像块所对应的特征图谱中的数据,该数据在特征图谱中的位置与所述图像块在输入图像中的位置相对应。

具体的,图4中,bij表示图像数据,aij表示卷积核中的数据、bck表示卷积的偏置值、dij表示特征图谱中的值,其中i、j、c、k为自然数,其中,卷积核有n个,相应的特征图谱也生成n个;具体例如,b32为表示为第三列第二行的图像数据,其数值为1;a23表示为卷积核中的第二列第三行的数据,其数值为0.75;bc4表示为位于第四行的偏置值,其数值为0;t33表示为特征图谱中第三列第三行的数据,其数值为-34.50。

如果计算t11,则

t11=∑bij*aij+bc1=(b11*va11+b12*a12+b12*a12+b13*a13+b14*a14+b21*a21+b22*a22+b23*a23+b24*a24+b31*a31+b32*a32+b33*a33+b34*a34+b41*a41+b42*a42+b43*a43+b44*a44)+bc1=2.25

依次类推,得到输入图像中的16个图像块分别与一个卷积核卷积,得到的16个数据,以形成一个特征图谱。以此类推,得到6个卷积核所对应的6个特征图谱。

如图5所示,为卷积神经网络第一个特征图谱的数据应用relu激活后的数据变化。此例中relu激活的操作相当于去负数的过程,将第一个特征图谱数据中小于0的数值置0操作。

如图6所示,为卷积神经网络第一个特征图谱数据池化过程。池化过程指将特征图谱矩阵等分成偶数个小块,获取每个小块中的最大值,形成池化后的矩阵。例如在特征图谱数据中(t11,t12,t21,t22)、(t31,t32,t41,t42)、(t13,t14,t23,t24)和(t33,t34,t43,t44)中各取最大值,形成2*2的矩阵。

如图7所示,为卷积神经网络全连接的计算过程。先对池化后的特征图谱按照指定顺序进行展开,将6个特征图谱展开形成一个1*24的数列集,在进行对其进行卷积核为10*24数值为1的阵列的卷积运算,全连接层运算的偏置为1*10的数列,其中1*10的数列中数值都是1。全连接运算后得到10*1的数列,输出数列中各项的值,通过逻辑分类器判断10*1数列中各个值之间的大小,其中最大值多对应的位置(比如此例中0的位置87.25数值最大),就是输入图片的原始图像标签图像信息,本例子就是数字“0”的图像。

基于上述卷积神经网络的计算步骤,设计基于模拟时间域计算的单隐藏层神经网络的电路架构。

如图8所示,为模拟时间域的卷积运算结构框图。卷积神经网络包括卷积权重输入模块110、卷积模块120、卷积层偏置输入模块130、激活池化模块140、全连接模块150和全连接层偏置输入模块160.

卷积权重输入模块110,具有参考脉冲信号输入端1、卷积核权重值输入端2、超前滞后控制信号输入端24、正输出端3和负输出端4;所述参考脉冲信号输入端1用于输入参考脉冲信号,所述卷积核权重值输入端2用于输入表示卷积核权重值的信号,所述控制信号输入端24用于输入超前滞后控制信号;所述卷积权重输入模块用于根据所述超前滞后控制信号来判断卷积核权重值输入端接收到的信号所表示的卷积核权重值的负和正,当判断为负时,则通过其负输出4端输出,当判断为非负时,则通过其正输出端3输出;

卷积模块120,包括一路或多路独立的卷积子模块121;每路所述卷积子模块121具有核权重值正输入端5、核权重值负输入端6、待卷积值输入端22、以及输出端9;所述待卷积值输入端22用于输入表示待卷积值的信号;所述核权重值正输入端5用于接收所述卷积权重输入模块的正输出端3输出的信号,所述卷积子模块121用于将其核权重值正输入端5接收的信号进行放大,并将放大后的信号作为加数进行累加计算;所述核权重值负输入端6用于接收所述卷积权重输入模块的负输出端4输出的信号,所述卷积子模块121用于将其核权重值负输入端6接收的信号进行放大,并将放大后的信号作为减数进行累减计算,其中所述卷积子模块对信号进行放大的倍数为所述待卷积值;所述卷积子模块121通过其输出端9来输出表示最终计算结果的信号。

卷积层偏置输入模块130,具有参考脉冲信号输入端10、卷积层偏置值输入端11、超前滞后控制信号输入端25、正输出端12和负输出端13;所述卷积层偏置输入模块130的参考脉冲信号输入端10用于输入所述参考脉冲信号;所述卷积层偏置值输入端11用于输入表示卷积层偏置值的信号;所述卷积层偏置输入模块130的超前滞后控制信号输入端25用于输入超前滞后控制信号;所述卷积层偏置输入模块130用于根据所述超前滞后控制信号来判断卷积层偏置值输入端11接收到信号所表示的卷积层偏置值的负和正,当判断为负时,则通过其负输出端13输出,当判断为非负时,则通过其正输出端12输出。

所述卷积子模块121还具有卷积层偏置值正输入端7和卷积层偏置值负输入端8;

所述卷积子模块121的卷积层偏置值正输入端7接收所述卷积层偏置输入模块的正输出端12输出的脉冲信号,所述卷积子模块121还用于将其卷积层偏置值正输入端12接收的信号作为加数进行累加计算;所述卷积子模块121的卷积层偏置值负输入端8接收所述卷积层偏置输入模块的负输出端13输出的脉冲信号,所述卷积子模块121还用于将其卷积层偏置值负输入端8接收的信号作为减数进行累减计算;所述卷积子模块121通过其输出端来输出表示最终计算结果的信号。

当所述卷积运算电路的所述卷积子模块121用于输出的表示最终计算结果的信号为非正值时,输出为0脉宽的脉冲信号;

全连接模块150,包括一路或多路独立的全连接子模块151;每路全连接子模块151具有待全连接值输入端23、全连接值输入端14、以及输出端17;所述待全连接值输入端23用于输入表示待全连接运算值的信号;所述全连接值输入端14用于输入全连接运算值的信号;所述全连接子模块151用于将其全连接值输入端14输入的信号进行放大,并将放大后的信号作为加数进行累加计算,其中所述全连接子模块151对信号进行放大的倍数为所述待全连接运算值;所述全连接子模块151通过其输出端17来输出表示最终结果的信号。

全连接层偏置输入模块160,具有参考脉冲信号输入端18、全连接层偏置值输入端19、超前滞后控制信号输入端26、正输出端20和负输出端21;所述全连接层偏置输入模块160的参考脉冲信号输入端18用于输入所述参考脉冲信号;所述全连接层偏置值输入端19用于输入表示全连接层偏置值的信号;所述全连接层偏置输入模块160的超前滞后控制信号输入端26用于输入超前滞后控制信号;所述全连接层偏置输入模块160用于根据所述超前滞后控制信号来判断全连接层偏置值输入端19接收到信号所表示的全连接层偏置值的负和正,当判断为负时,则通过其负输出端21输出,当判断为非负时,则通过其正输出端20输出。

所述全连接子模块151还具有全连接层偏置值正输入端15和全连接层偏置值负输入端16;

所述全连接子模块151的全连接层偏置值正输入端15接收所述全连接层偏置输入模块160的正输出端20输出的脉冲信号,所述全连接子模块151还用于将其全连接层偏置值正输入端15接收的信号作为加数进行累加计算;所述全连接子模块151的全连接层偏置值负输入端16接收所述全连接层偏置输入模块160的负输出端21输出的脉冲信号,所述全连接子模块151还用于将其全连接层偏置值负输入端16接收的信号作为减数进行累减计算;所述全连接子模块151通过其输出端17来输出表示最终计算结果的信号。

激活池化模块140,用于接收所述卷积运算电路的每一路所述卷积子模块输出端输出表示最终计算结果的脉冲信号,输出其中脉宽最宽的信号,给所述卷积神经网络全连接运算电路中的每一路所述全连接子模块的所述全连接值输入端14。

如图9所示,为模拟时间域的卷积运算电路原理图。根据如图4所示的,单隐藏层卷积神经网络运算中,基于卷积运算结构而搭建的硬件电路图。硬件电路由数字时间转换器(dtc)、边沿检测器(pfd)、时间放大器(ta)和时间寄存器(tr)构成。

dtc包括两个输入端和一个输出端,一个输入端用于输入参考脉冲信号,另一个输入端用于输入表示数值的脉冲信号,如果输出端用于输出超前的脉冲信号,命名该输出端为超前控制输出端,如果输出滞后的参考脉冲信号,命名为滞后控制输出端。

pfd包括两个输入端和两个输出端,用于输出一个脉宽为两个输入信号间时差的脉冲信号。设定两个输入端一个为正输入端(超前正输入端inp),另一个为负输出端(滞后负输入端inn),则对应正输入端输出信号的输出端称为正输出端(up端),对应负输出端输出信号的输出端为负输出端(dn端)。正输入端用于输入代表非负数值的脉冲信号,相对应的正输出端输出的脉冲信号代表非负数值的输出,负输入端用于输入代表负数值的脉冲信号,相应对应的负输出端输出的脉冲信号代表负数值的输出。

ta包括三个输入端和两个输出端,用于对输入的信号进行放大。其中两个输入端与两个输出端相对应,设定其中两个输入端中一个为正输入端,相对应输出信号的输出端为正输出端,另一个为负输入端,相对应输出信号的输出端为负输出端。另一个输入端用于输入数值脉冲信号,此数值脉冲信号就是ta的正输入端或负输入端信号欲将进行放大的放大倍数。

tr包括两个输入端和一个输出端,用于对输入的脉宽信号进行累加或累减运算,并将累加或累减的结果从输出端输出。设定一个输入端为正输入端,tr用于对正输入端输入的脉宽信号进行累加运算。设定另一个输入端为负输入端,tr用于对负输入端输入的脉宽信号进行累减运算。

由图9所示,其中,dtc0为第一数字时间转换器,dtc1为第二数字时间转换器,pfd1为第一边沿检测器,ta1为第一时间放大器,ta2为第二时间放大器,ta3为第三时间放大器,ta4为第四时间放大器,tr1为第一时间寄存器,tr2为第二时间寄存器,tr3为第三时间寄存器,tr4为第四时间寄存器。

首先将4位量化(卷积核为4*4的数列)卷积核权重的aij脉冲信号依次输入到dtc1,dtc0输入控制信号,dtc1和dtc0分别输出两个有延时的相同脉宽的时钟信号,dtc0将时钟信号输出至后面pfd1的滞后负输入端inn;dtc1将时钟信号输出至后面pfd1的超前正输入端inp。dtc0作为数字时间转换器的控制电路,实现对aij为正值的正输入或aij为负值的负输入的控制,也就是图中所标出的超前控制和滞后控制。

具体工作过程为:

例如,当4位量化权重aij输入为正数序列时,假设卷积核权重为aij(0.00,0.25,0.50,0.75,1.00,1.25,1.50,1.75),先进行二进制转换得到[0000,0001,0010,0011,0100,0101,0110,0111];设定dtc0的控制端输入控制信号为[1000],dtc1的控制端为[[1000]-[aij]],产生超前时钟边沿差为|[aij]|*δt,δt是dtc0和dtc1时钟输出的最小延迟时间单位,pfd1内部负向滞后输入端引入b(脉冲延迟单元),pfd1的up端开关选通,输出正权重信息的(b+|[aij]|*δt)时域脉宽信号,pfd1的dn端开关进入断开状态输出0.

当4位量化权重aij输入为负数序列时,例如,假设卷积核权重为aij[-0.25,-0.50,-0.75,-1.00,-1.25,-1.50,-1.75],先进行二进制转换得到[1001,1010,1011,1100,1101,1110,1111]时,设定dtc0的控制端输入控制信号为[1000],dtc1的控制端为[aij],dtc1输出滞后dtc0的信号,滞后值为|[[aij]-[1000]]|*δt,其中,在pfd1内部正向超前输入端引入b(脉冲延迟单元),在pfd1的dn端开关选通输出负权重信息的(b+|[[aij]-[1000]]|*δt)时域脉宽信号,pfd1的up端开关断开输出0。

pfd1可以与一个或多个ta并联连接。具体连接方式是,每个ta的正输入端与pfd1的up输出端连接,用于完成对卷积运算中为非负数值的乘法操作,并从相应的正输出端输出脉冲信号,用于给tr做加数进行累加运算。负输入端与pfd的dn输出端连接,用于完成卷积运算中为负数值的乘法操作,并从相应的负输出端输出脉冲信号,用于给tr做减数进行累减运算。也就是,每个用于卷积乘法运算的ta输出乘积后的脉宽信号输出给时间寄存器tr,用于卷积的累加或累减的运算。最终通过tr输出端输出的脉宽信号就是卷积运算的结果。

如图10所示,为数字时钟转换器dtc的信号输入输出图和电路图。数字时钟转换器dtc包含两个数字到时间转换器dtc0和dtc1,数字到时间转换器dtc0或者dtc1用于输入一参考脉冲信号以及数字信号控制m1,用于输出一个与所述参考脉冲信号之间时延为|m1|的脉冲信号,这样输出的脉冲信号与输入的参考脉冲信号的时延表示了输入的数字信号(m1)的值。其中,dtc0包括:串连耦接的晶体管t1和晶体管t2,第一电容器cd,第二电容器cl,第一放大器和第二放大器,其中,晶体管t1和晶体管t2的控制端耦接在一起接收参考脉冲信号,晶体管t1的第一端与电源耦接,晶体管t1的第二端在节点a与晶体管t2的第一端耦接,晶体管t2的第二端与地耦接;第一电容器cd和第二电容器cl耦接在节点a与地之间;其中第二电容器cl的电容值基于所述数字信号控制m1而变化。第一放大器的输入端与所述节点a耦接,第一放大器的输出端与第二放大器的输入端耦接,第二放大器的输出端输出与所述参考脉冲信号之间时延为|m1|的脉冲信号。dtc1与dtc0具有类似的结构,在此不再赘述。

本实施例中,边沿检测器用于检测数字时间转换器dtc输出的两个信号的边沿,然后输出一个时域脉冲信号,输出的脉冲信号的脉冲宽度等于上述两个信号上升沿之间的时延宽度,或者两个信号下降沿之间的时延宽度。即从而输出一个脉冲宽度表示数字信号m1的大小。边沿检测器可以由鉴相器(pd,phasedetector)或鉴频鉴相器(pfd,phasefrequencydetector)等来实现,本实施例中采用pfd(鉴频鉴相器),用于比较数字时间转换器dtc(dtc0-dtc1)输出的两个信号边沿之间的时间差,并把它转换为一个方波信号的脉宽。以pfd(鉴频鉴相器)为例,pfd的输入端可以设置为上边沿有效或者下边沿有效,这样增加了设置的灵活性,以便于处理带符号位的计算,当其中一个输入端口出现了有效的信号边沿时,其对应的输出信号变为高电平,当另一个输入端口接着出现了有效信号边沿时,其对应的输出信号也变为高电平,但是这个高电平是不稳定的,瞬时就会变成低电平。因为,这两个输出信号被送到一个与非门的输入端,其输出信号接入pfd的复位端口。因此当第二个有效边沿到达时,与非门输出变为低电平(有效电平),pfd复位,那么pfd输出的瞬时都变为低电平。这样,输出的方波宽度等于第一个有效边沿和第二个有效边沿之间的时间差。这样就实现了一个时间宽度可调的方波信号,这两个边沿之间的时间宽度对应于数字时间转换器dtc数字控制信号。

本实施例中,每个ta内部都有两个结构相同的子时间放大器,每个子时间放大器都有两个输入端和两个输出端,用于分别对两个输入端输入的信号的脉冲宽度放大之后,再从两个输出端分别输出。时间放大器ta从其两个输入端分别接收边沿检测器ed输出的脉冲信号,然后将此脉冲信号的脉宽放大|m2|倍后再分别输出这两个信号,其中m2为控制时间放大器ta放大倍数的数字控制信号,时间放大器ta的放大倍数是可以根据不同需求来设置不同值的。由于数字控制信号m1经数字到时间转换器dtc之后,输出与参考脉冲信号之间时延为|m1|的脉冲信号,该与参考脉冲信号之间时延为|m1|的脉冲信号再经过边沿检测器ed,输出一个脉冲宽度为m1的时域冲信号,因此经过时间放大器ta的放大处理后,这两个信号之间的时延变为|m1*m2|,从而实现了将两个数值m1和m2相乘的运算。需要说明的是,虽然m2为时间放大器ta的放大倍数,这并不意味m2为一个大于1的数值,m2也可以为等于1或小于1的数值,甚至可为有符号位的负数。

本实施例中,如图11所示,为时间寄存器tr脉宽累加的基本原理图,tr基于电容充放电存储的原理,将多个脉冲宽度信号在时域上累加并将每次累加得到的脉冲信号暂存,输出具有总累加脉冲宽度的信号。假设tr的最大脉宽总容量是tf-b*a是输入tr进行时域累加一个脉宽信号,由图11可以得到tf-b*a从tr1的输出;接着由第二个子tr2完成tf-(tf-b*a)的时域运算,即tr由tr2互补运算输出a*b脉宽,完成时间寄存器tr时域累加并输出结果。

如图12所示,为卷积运算中卷积偏置参数输入的电路结构图。包括dtc2、dtc3和一个pfd2、一个sw2(双通道选择开关)。偏置参数的输入方式和卷积核权重输入的方式一样,结构也相同,只是偏置参数的输入电路在pfd2的输出端多接入一个sw2,pfd2的正负输出端接sw的正负输入端,sw正负输出端可以与一个或多个用于卷积运算的时间寄存器trn(n是自然数例如1,2,3,……)的正负输入端连接,用于实现卷积计算中卷积偏置参数的累加运算。就是连接用于卷积运算的时间寄存器tr的正负输入端来用于卷积偏置参数的累加或累减运算。

双通道选择开关sw2包括两个输入端和相对应的两个输出端,当先检测到那一个输入端有信号输入时,对应的输出端输出该对应输入端的输入信号,另一个输出端不输出信号。设定一个输入端为正输入端与pfd2的up端输出相连,用于非负值的卷积偏置参数数值的输入,相对应的输出端为正值输出端,用于输出非负值的卷积偏置参数数值给trn的正输入端,用于卷积偏置参数数值的累加运算。设定另一个输入端为负输入端与pfd2的dn端输出相连,用于负值的卷积偏置参数数值的输入,相对应的输出端为负值输出端,用于输出负值的卷积偏置参数数值给trn的负输入端,用于卷积偏置参数数值的累减运算。例如,图12中的sw2与如图9中的trn(tr1、tr2、tr3和tr4)并行连接。

整个卷积运算的具体步骤是:

1)dtc0-dtc1-pfd1将卷积核权重参数转换成对应的时域脉宽信号,为后级的时间乘法器ta1提供时域信号输入。

2)输入层图像数据控制ta1的放大倍数,与步骤1得到的权重转换脉宽信号进行时域乘法运算,将放大的脉宽信号输出给tr1进行累加或累减并存储。实现卷积运算中的乘法及累加或减运算。

3)dtc2-dtc3-pfd2-sw2将卷积核偏置参数转换成对应的时域脉宽信号,并将信号输出给时间寄存器tr中,用于完成时域上的累加或累减运算,实现卷积运算中卷积核偏置参数的累加或累减运算。

4)按一定的周期不断重复步骤1、2和3的操作,最后在时域电路上完成整个卷积运算。

在本实施例中,卷积神经网络运算的激活步骤是应用relu函数激活的,简单讲,就是去负数的过程,如图5所示,将第一个特征图谱数据中小于0的数值置0操作。硬件电路中是通过图11中时间寄存器trn实现的。trn(n是自然数例如1,2,3,……)表示多个并联的时间寄存器trn(例如,在本实施例中并行连接tr1、tr2、tr3和tr4);基于本实施例的例子讲解relu激活函数实现激活的具体方式为:ta1-tr1至ta4-tr4四路并行工作进行卷积运算,tr1-tr4将卷积核的乘累加正运算结果输出至后一级池化层进行子采样;其中,在trn中如果卷积核的乘累加或累减运算为负值的结果,则trn将输出0至后级池化层,进而实现relu函数激活的过程。

在本实施例的卷积神经网络运算的例子中,硬件实现池化操作的方法是将ta1-tr1至ta4-tr4四路并行输出至一个四输入的or门实现,tr1-tr4并行输出四个卷积运算结果由一个四输入的or门实现,如图6所示的2*2区域的采样操作,从tr1-tr4的输出端筛选出最大脉宽,即实现卷积神经网络最大池化运算的过程。

卷积运算和relu激活、池化的硬件电路工作过程是:四路并行依次导入图像映射输入层特定位置的数据,输入到四个并行工作的时间放大器ta1-ta4数字控制端,控制其放大倍数;再与上一级dtc0-dtc1-pfd1串行输出的卷积核权重对应的时间脉宽信号进行时域乘法运算;然后,将结果并行输入到四个时间寄存器tr1和tr4保存,这样串行重复进行4卷积核的乘累加操作;又接着向tr1-tr4偏置输入端输入dtc2-dtc3-pfd2串行输出的卷积核偏置对应的时间脉宽信号,完成时域累加运算;即这样完成时间域上卷积层的卷积运算,并最后由tr1-tr4并行四路输出时间脉宽结果至后级四输入或门进行池化操作过程。其中,设定tr1-tr4如果输出最终结果为负数值,则输出脉冲宽度为0的脉冲信号,实现relu函数激活的过程。

在本实施例中,所举的卷积神经网络运算的例子中,全连接卷积运算电路和全连接偏置参数输入电路如图13所示。其中,全连接模块包括多个全连接子模块,每个全连接子模块包括一个ta(图中ta5-ta14共10个)和tr(图中tr5-tr14共10个),每个ta的输入端用于输入代表全连接运算数值的信号,该信号经过ta进行放大,放大的倍数为wn_j。wn_j代表待全连接运算数值的信号。经过ta进行积运算后的信号输出给tr进行累加运算,最后经过累加计算的结果通过tr的输出端输出。tr还用对全连接偏置进行累加或累减计算,就是对bd1进行加运算或减运算。bd1是通过全连接偏置模块电路输入获得的。

全连接偏置模块电路包括dtc4、dtc5和一个pfd3、多个sw2m(双通道选择开关)。全连接偏置参数的输入方式和卷积核权重输入的方式一样,结构也相同,只是偏置参数的输入电路在pfd3的输出端多接入m个sw2m(m的个数与全连接模块tr的数量相同),pfd3的正负输出端接sw2m的正负输入端,sw2m正负输出端可以与一个或多个用于全连接运算的时间寄存器trn(n的个数为全连接模块tr的数量)的全连接偏置正负输入端连接,用于实现卷积神经网络中全连接偏置参数的累加运算。就是用全连接运算的时间寄存器tr的全连接偏置正负输入端来用于全连接偏置参数的累加或累减运算。

一种用于卷积神经网络卷积运算和全连接运算电路、以及卷积神经网络运算电路,由时域计算电路中的鉴相器、数字时间转换器、时间放大器和时间寄存器构成。所提出的基于模拟时域的计算电路,能在时域上完成卷积神经网络卷积运算所需的的乘累加等运算,具有很高的时间计算精度,且能节省额外存储面积和降低相应功耗,完全兼容cmos工艺。

实施例二

如图14所示,为卷积神经网络硬件框架结构图,包括时钟模块、网络参数导入模块、同步控制模块、卷积权重输入模块、卷积模块、激活池化模块、全连接模块、卷积偏置输入模块、全连接层偏置输入模块和逻辑分类器。其中,clkref表示参考脉冲信号。

时钟模块用于全电路时钟输入的脉冲发生器,可采用晶振电路或锁相环电路等方式实现。网络参数导入模块用于将设定好的网络参数导入时域电路,相当于完成cnn网络的前向计算。同步控制模块用于控制卷积神经网络运算中,图像数字信息与网络参数信息导入的顺序,实现卷积运算结果导出与全连接层导入过程的同步,和全连接层运算结果稳定导出与逻辑分类器导入的同步。卷积权重输入模块用于对卷积运算权重值的导入。卷积模块用于实现卷积神经网络的卷积运算。激活池化模块用于实现卷积神经网络的激活池化运算。全连接模块用于实现卷积神经网络的全连接层的权重乘累加运算。卷积偏置输入模块是用于卷积层偏置参数的导入。全连接层偏置输入模块是用于全连接层偏置参数的导入。逻辑分类器用于接收全连接模块每一个输出通道输出的脉宽信号,记录每一个输出信号脉宽及相应输出信号的编号,并确定其中的最大值和输出最大值通道的编号。

卷积权重输入模块包括两个数字时间转换器dtc和一个鉴频鉴相器pfd,一个dtc的输入端用于卷积核权重数值的正值输入,另一个dtc的输入端用于卷积核权重数值的负值输入,两个dtc的输出端分别连接在pfd的inn和inp端。用于正输入的dtc将时钟信号输出至后面pfd的inn滞后负输入端;用于负输入的dtc将时钟信号输出至后面pfd的inp超前正输入端。通过控制pfd是inn输出信号还是inp输出信号,实现对卷积核权重数值的导入。

卷积模块包括多个时间放大器ta和多个相应的时间寄存器tr。一个ta和一个tr为一组,每一组的时间寄存器tr硬件结构上包括两组正负输入端和两个输出端,每组正负输入端包括一个正输入端和一个负输入端,其中一组正负输入端的正输入端接前面ta对应的正结果输出,对正乘法结果的时间脉宽信号进行累加,该组正负输入端的负输入端接前面ta对应的负结果输出,对负乘法结果的时间脉宽信号进行累加。另一组正负输入端用于卷积偏置参数的累加运算,与卷积偏置参数输入模块的双通道选择开关sw输出端相连。

激活池化模块是一个多路输入or门,or门的每一个输入端接卷积模块中的每个时间寄存器tr的输出端,or门输出端输出的是卷积模块中的每个时间寄存器tr中脉宽最大的信号,并把该信号输出给全连接模块。

全连接模块包括多个时间放大器ta和多个相应的时间寄存器tr。一个ta和一个tr为一组,每一组的时间寄存器tr硬件结构上包括两组正负输入端和两个输出端,每组正负输入端包括一个正输入端和一个负输入端,其中一组正负输入端的正输入端接前面ta对应的正结果输出,对正乘法结果的时间脉宽信号进行累加,该组正负输入端的负输入端接前面ta对应的负结果输出,对负乘法结果的时间脉宽信号进行累加。另一组正负输入端用于全连接偏置参数的累加运算,与全连接偏置参数输入模块的双通道选择开关sw输出端相连。

全连接模块中的每一个时间寄存器tr的输出端分别连接逻辑分类器上相应的输入端。

卷积偏置输入模块包括两个数字时间转换器dtc和一个鉴频鉴相器pfd、一个双通道选择开关sw。偏置参数的输入方式和卷积核权重输入的方式一样,结构也相同,只是偏置参数的输入电路在pfd的输出端多接入一个双通道选择开关sw的输入端,pfd的输出端接双通道选择开关sw的输入端,双通道选择开关sw输出端与卷积模块的多个时间寄存器tr中的一组正负输入端连接,每个时间寄存器tr的正负输入端的正输入sw对应的正结果输出,对正结果的时间脉宽信号进行累加,该组正负输入端的负输入端接sw对应的负结果输出,用于实现卷积计算中卷积层偏置参数的累加运算。就是连接卷积模块中的时间寄存器tr的另一组正负输入端,来用于卷积偏置参数的累加运算。

全连接层偏置输入模块包括两个数字时间转换器dtc和一个鉴频鉴相器pfd、多个双通道选择开关sw。双通道选择开关sw的数量与全连接运算的输出路数相同,比如10路输出就需要与10个双通道选择开关sw相连。和卷积偏置输入模块结构相同,只是pfd的输出端与多个双通道选择开关sw的输入端连接,每个双通道选择开关sw的输出端与全连接模块中相应的时间寄存器tr中的一组正负输入端连接,每个时间寄存器tr的正负输入端的正输入sw对应的正结果输出,对正结果的时间脉宽信号进行累加,该组正负输入端的负输入端接sw对应的负结果输出,用于实现全连接计算中全连接层偏置参数的累加运算。

例如,对于ta5-ta14等时间放大器,由全连接层权重等网络参数导入控制其放大倍数。此类权重的网络参数有正负取值,例如,当全连接层权重网络参数为正时,该网络参数被导入到正时间脉宽放大器的增益控制端以调节正时间脉宽放大器的放大倍数,负时间脉宽放大器的增益控制端被复位,不进行放大;当全连接层权重网络参数为负时,该网络参数被导入到负时间脉宽放大器的增益控制端调节负时间脉宽放大器的放大倍数,正时间脉宽放大器的增益控制端被复位,不进行放大。

如图14所示,整个卷积神经网络的硬件电路工作过程是:dtc0-dtc1构成的数字时间转换器将卷积核权重网络参数转换成两路时延信号的时钟信号输出至后级pfd1;pfd1进一步得到卷积核权重网络参数对应一定脉宽信息的时域脉冲信号输出至后级四路并行工作ta1-ta4;ta1-ta4四个并行工作,分别导入imagemap层四个特定位置的数据控制其时间放大倍数,完成与卷积核权重对应的脉宽信号的卷积层时域乘法运算,将时间乘法结果四路输出至tr1-tr4;dtc2-dtc3构成的数字时间转换器将卷积核偏置网络参数转换成两路时延信号的时钟信号输出至后级pfd2;pfd2进一步得到卷积核偏置网络参数对应一定脉宽信息的时域脉冲信号输出,通过二路两通道的开关输入至后级四路并行工作tr1-tr4;tr1-tr4对卷积核权重的时间乘法结果和卷积核偏置对应的时间脉宽信号进行累加求和,完成卷积核的时域卷积运算;由tr1-tr4并行四路输出卷积运算时间脉宽结果至后级四输入或门进行最大池化操作,并输出结果至ta5-ta14;ta5-ta14时间放大器十路并行工作,由全连接层权重等网络参数导入控制其放大倍数,完成与上一级池化层输出的脉宽信号的全连接时域乘法运算,将时间乘法结果十路输出至tr5-tr14;dtc4-dtc5构成的数字时间转换器将全连接层偏置网络参数转换成两路时延信号的时钟信号输出至后级pfd3;pfd3进一步得到全连接层偏置网络参数对应一定脉宽信息的时域脉冲信号输出,通过十路两通道的开关输入至后级十路并行工作tr5-tr14;tr5-tr14对全连接层权重的时间乘法结果和全连接层偏置对应的时间脉宽信号进行累加求和,完成全连接层的时域乘累加运算;最后,tr5-tr14并行十个通道输出全连接运算时间脉宽结果至后级逻辑分类器softmax,完成cnn神经网络的分类识别功能。注意:其中时钟产生模块产生ref,为数字时间转换器dtc0-dtc5提供参考时钟输入;网络参数控制模块主要是控制5类卷积神经网络参数导入过程;全局同步模块主要提供两个同步信号分别控制tr1-tr4和tr5-tr14的结果输出过程。

如图15所示,为卷积神经网络参数写入时域电路的位置和步骤。在总体电路实现卷积神经网络计算时,需要考虑信号输入和输出同步的问题。

对于这些网络参数和图像数据的输入,首先是要进行处理有符号十进制到二进制转化高位不看作符号位,然后再进行二进制到十进制转换处理,最后对转换结果写入文件保存,用于导入完成对相关时域电路卷积神经网络运算的控制。

网络参数从卷积神经网络算法到能够输入电路进行输入控制,需要进行一定规则读取。下面以本实施例中的例子举例说明,如图16所示,针对图14举例的cnn硬件结构,图16展示了系统电路在整体串行卷积、局部并行池化运算过程中,输入层图像数据和卷积层卷积核权重两个网络参数的提取规则。首先在7*7图像输入层中划分出16个4*4的子区域,分别与4*4的卷积核进行16次卷积乘累加运算;通过中四种颜色指定的特定位置作为子图像区域,4路并行读取至ta1-ta4,然后再进行下级激活和池化操,其中,

第一行深色部分为时间放大器ta1要串行导入电路的局部字符图像数据;

第二行深色部分为时间放大器ta2要串行导入电路的局部字符图像数据;

第三行深色部分为时间放大器ta3要串行导入电路的局部字符图像数据;

第四行深色部分为时间放大器ta4要串行导入电路的局部字符图像数据。

在一张7*7图片cnn卷积计算过程中,一个卷积核要进行(1)->(2)->(3)->(4)共4次读取像数据,6个卷积核权重数据串行输入dtc0-dtc1重复导入4*4*4*6=384次;4个局部子图像数据,均串行重复导入ta1-ta2-ta3-ta4共4*4*4*6=384次;卷积核偏置数据共串行重复导入dtc2-dtc3共1*4*6=24次;全连接权重数据共10*24=240个,均分10部分,分别向ta5-t14串行导入共24次;全连接偏置数据串行导入dtc4-dtc5共10*1=10个,最后分别向tr5-tr14串行导入。

在本实施例的cnn电路结构中,各电路的信号在全局同步时钟周期计数下按串行导入,针对cnn电路结构各网络参数串行导入周期数值约束设计都是对应参考各时域计算电路模块工作特点和要求设置的。例如,各网络参数计数单位均以全局时钟clkref周期tp为单位,主要由数字时间转换器dtc实际电路进行约束,其输入时钟的周期可取tp=10ns;卷积核权重串行导入周期就为naij=2*(20+4)。

按照如下表的电路时序规范,其中,全局信号syc_finish_bc是用于卷积层卷积运算的tr1-tr4,将运算结果稳定导出与全连接层导入过程的同步,全局信号syc_finish_bd是用于全连接层运算的tr4-tr14,将运算结果稳定导出与softmax逻辑分类器导入过程的同步。字符图像输入数据和全连接层的权重是4位定点量化,0位小数位,导入控制ta1-ta14的时间放大增益;卷积层的卷积核权重、卷积层的卷积偏置和全连接层偏置是4位定点量化,2位小数位,导入控制dtc0-dtc5的数字时间转换的大小。

应用本实施例的电路框架结构,构建了如图17的硬件仿真模型。在cadence-ams平台下,对提出的时域电路结构进行verilog-a建模仿真验证,两种计算办法的结果对比如下表所示:

从上表可知,算法与电路模型同时对7*7的minist字符图片识别并得出的结果是一致的,且两者全连接层最大通道的计算结果也完全,即电路对卷积神经网络算法进行完全实现,不会与算法之间产生任何差别,说明本发明提出的cnn卷积神经网络在时域上进行电路设计具有可实现性和准确性。

通过具体的电路系统建模仿真,验证了本发明的cnn卷积神经网络算法用基于时域运算模块电路,进行硬件电路映射实现的可行性,本建模仿真即实现算法运算又实现对时域电路模型仿真计算结果的一致性和准确性的判断。

以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

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