首页> 中国专利> 一种参数化可扩展的神经网络全连接层多层互连结构

一种参数化可扩展的神经网络全连接层多层互连结构

摘要

本发明公开一种参数化可扩展的神经网络全连接层多层互连结构,包括若干层全连接层,每层全连接层例化了若干基本单元;一个基本单元连接一个路由器,同一全连接层中的基本单元经过路由器相连,形成全连接环;全连接环的路由器上下相连形成一种参数化可扩展的神经网络全连接层多层互连结构,支持双向的数据传递(前向推理,反向学习)。本发明采用可配置的全连接基本单元作为全连接层硬件实现的基础,用户可以根据实际使用的神经网络的需求通过设置参数控制生成多个基本单元并互连的方式完成其网络中全连接层的设计实现和并行加速;本发明的设计考虑了数据流水线,缩短了系统运行时钟周期,灵活配置全连接层的结构和规模,便于系统的快速部署实现。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-19

    授权

    授权

  • 2017-11-17

    实质审查的生效 IPC(主分类):G06N3/04 申请日:20170511

    实质审查的生效

  • 2017-10-20

    公开

    公开

说明书

技术领域

本发明属于人工神经网络技术领域,特别涉及一种参数化可扩展的神经网络全连接层多层互连结构。

背景技术

全连接层在神经网络算法中是必不可少的一部分,其构造一般是多层互连,每一层的输出作为下一层的输入。全连接层是神经网络中计算量最大,参数最多的部分,在整个算法中具有决定性的作用。随着神经网络的应用越来越广泛,需求不断增加,神经网络的深度逐步加深,全连接层的层数也会相应增加。目前比较流行神经神经网络算法中都用到了全连接层,而这些网络对全连接层的层数和每层输入输出的节点数目的配置都各有不同,以下列举一些目前常用的卷积神经网络算法结构中全连接层网络的结构:

1)主要用于手写数字体识别的经典网络LeNet-5中采用了三层卷积层和两层全连接层,全连接层共有214个神经元节点,包含一万多个参数;

2)在主要用于ImageNet数据库识别分类的经典结构AlexNet网络中采用了五层卷积层和三层全连接层,第一层全连接层有4096个神经元节点,第二层有4096个神经元节点,第三层有1000个神经元节点,共包含约两千万个参数;

3)在2014年出现的另一种同样识别ImageNet库的更深的网络VGG-Net网络中共采用了十五层的卷积层和三层全连接层,前两层全连接层各有4096个神经元节点,第三层有1000个神经元节点,共包含参数一亿多个参数。

随着计算网络规模不断扩大,参与计算的数据越来越多,而全连接层因为功能需要往往会占用整个系统参数的较大比例,训练一个网络需要成千上万次的迭代运算,用传统计算机CPU/GPU计算时数据会频繁在处理器和存储器间传递,存储带宽的限制和数据搬移造成过多的能耗,,采用专用计算架构实现卷积神经网络来提高计算效率成为目前的研究热点,而一种参数化可扩展的全连接层的设计是通用卷积神经网络加速平台的关键模块。

发明内容

本发明的目的在于提供一种参数化可扩展的神经网络全连接层多层互连结构,以解决上述技术问题。

为了实现上述的目的,本方案采用了如下的技术方案:

一种参数化可扩展的神经网络全连接层多层互连结构,包括若干层全连接层,每层全连接层例化了若干个基本单元;一个基本单元连接一个路由器,同一全连接层中的基本单元经过路由器相连,形成全连接环;全连接环的路由器上下相连形成一种参数化可扩展的神经网络全连接层多层互连结构。

进一步的,基本单元包括存储模块、地址计数器模块和若干基本列模块;若干基本列模块并列设置,每个基本列模块的输入端均连接基本单元的数据输入端和存储模块的输出端,每个基本列模块的输出端均连接基本单元的数据输出端;地址计数器模块的输入端连接一个基本列模块,地址计数器模块的输出端连接存储模块;地址计数器模块用于采集基本列模块的计算次数;存储模块包括权重SRAM和偏置SRAM;基本列模块用于根据存储模块输入的权重和偏置对接收的输入数据与权重进行相乘,然后与偏置相加获得输出数据进行输出。

进一步的,每层全连接层中的每个基本单元都从上一层接收数据,正向数据由卷积层和池化层输出到全连接的第一层F1;该层实例化了k1个基本模块,第一层F1中每个基本模块都从池化层接收数据,在F1层计算后传入下一层全连接F2,F2层也是根据输出的参数例化了k2个基本模块互连构成,数据在F2层计算完成后又传入F3(包含k3个基本模块),一直传到最后一层全连接层Fn层(包含kn个基本模块),其中,ki代表第i层的基本模块个数,计算后传入最后的分类输出层输出。

进一步的,全连接层各个基本单元接收到的数据后在本层内进行计算和传输的具体过程:在第一个时钟周期,第i+1层全连接层各个基本单元先对自己接收到的数据进行计算;在第二个时钟周期的时候这些数据同时以同一个方向移动到下游的基本单元;第二个时钟周期每个基本单元接收到的数据为自己前一个基本单元上一个时钟周期接收到的数据;第三个时钟周期每个基本单元仍重复上一个周期的操作,直到ki个时钟周期后,每个基本单元都接收到了ki次数据,正好对应了由上层传下来D1~Dki所有的数据,既同一个数据包遍历该层所有基本单元;由此,该结构实现了全连接层基本单元输入数据的共享。

进一步的,储模块是两个SRAM,一个按顺序存放着该基本单元计算需要权重值,另外一个存放着每个输出节点对应的偏置值;读地址模块由列模块输出的有效信号控制,输出当前两个SRAM的读地址;数据在全连接基本单元进行计算的过程是:从上层网络结构或本层其它基本单元处接收到的数据包进入该基本单元输入端口,该数据包的大小等于全连接基本单元输入端口的个数乘以端口的数据位宽;该数据包同时输入多个基本列模块,在每个列模块中拆分为单独的数据送入该列模块中的基本神经元模块中;在数据输入的同时,地址计数器模块将这些数据对应的权重所存的地址读入存储模块,将对应的一行权重数据包读入列模块,该权重数据包的大小也为全连接基本单元的输入端口乘以数据位宽,该权重数据包在列模块中进行拆分分配,送入不同的基本神经元中进行计算;每个基本神经元模块计算出一个数据,这些数据在基本列模块里进行相加、存储,等待下一次计算的结果出来继续累加、直到所有输入基本单元的数据包都参与了运算,随后由基本列模块输出最终结果,多个基本列模块将数据打包输出,输出数据包的大小为输出端口数乘以数据位宽。

进一步的,若上一层全连接环中的路由器数量小于下一层环中的路由数器数量,将下一层全连接环中的路由器等间隔与上一层环中的路由器相连;若上一层路由器数量大于下一层路由器数量,则将下一层环中已有的路由器等间隔增加路由器,路由器负责同层及层间的数据传输。。

进一步的,支持双向的数据传递(前向推理,反向学习),同一层全连接环中传递同一类型数据包时,基本单元的发送数据包的方向一致。

相对于现有技术,本发明具有以下有益效果:

1、根据实际应用需求,可以通过参数配置生成不同层数和不同规模的神经网络全连接层。卷积神经网络算法中是由n层全连接互连构成的全连接网络,每层例化了ki个全连接基本单元,ki个基本单元两两相连形成一个闭合环路,每一层的ki值可以不同的数值。

2、全连接层每一层中的基本单元都可以从上层对应的基本单元或本层与之相邻的基本单元处接收数据,也可以将数据传输至下层基本单元或本层与之相邻的基本单元中。每层包含的全连接基本单元在各自收到上层传来的数据包后先在该单元中存储,第二个时钟周期将推理使用的数据包顺时针(学习使用的数据包逆时针)传入与之相邻的基本单元再次存储,之后一直将这种数据包按照同一个时钟方向传递,直到同一个数据包遍历该层所有基本单元,这样就实现了全连接的输入参与每个基本计算单元的功能要求。

3、构成全连接层的基本单元内部结构可根据参数进行配置。全连接基本单元的输入数据位宽、个数和数据批次数可配置,基本单元中负责计算操作的基本模块个数(本设计中称为基本列模块和基本神经元)以及每个基本模块里的结构可配置,输出数据位宽、个数和输出时刻可配置,这样就可以通过参数配置实现不同算法结构的全连接层网络硬件架构。

本发明采用可配置的全连接基本单元作为全连接层硬件实现的基础,用户可以根据实际使用的神经网络的需求通过设置参数控制生成多个基本单元并互连的方式完成其网络中全连接层的设计实现和并行加速。

附图说明

图1为本发明一种参数化可扩展的神经网络全连接层多层互连结构的结构图;

图2为本发明全连接层各基本单元收发数据流向示意图;

图3为本发明全连接层基本单元设计功能图;

图4为本发明全连接层基本单元硬件架构图。

具体实施方式

下面结合附图对本发明进行详细的描述

请参阅图1所示,本发明一种参数化可扩展的神经网络全连接层多层互连结构,是由n层全连接层互连构成的全连接网络,每层分别例化了若干个基本单元,每层中的每个基本单元都从上一层接收数据,黑色实线箭头描述的是全连接层正向网络的数据流向,黑色虚线箭头描述的是全连接层反向网络的数据流向,正向数据由卷积层和池化层输出到全连接的第一层F1,该层实例化了k1个基本模块,在图1中分别表示为F11~F1k1,第一层F1中每个基本模块都从池化层接收数据,在F1层计算后传入下一层全连接F2,F2层也是根据输出的参数例化了k2个基本模块互连构成,数据在F2层计算完成后又传入F3,就这样一直传到Fn层,计算后传入最后的输出分类层输出。

请参阅图2所示,全连接层各个基本单元接收到的数据后在本层内进行计算和传输的具体过程,假设Fi+1,1收到上层传来的数据为Di,1,Fi+1,2接收到的数据为Di,2,,以此类推,Fi+1,ki接收到数据Di,ki,那么在第一个时钟周期,Fi+1层各个基本单元先对自己接收到的数据进行计算,在第二个时钟周期的时候这些数据同时以同一个方向移动到下游的基本单元,图2中的顺时针方向的箭头表示此时的数据流向,如图所示,Fi+1,1原先接收到的数据Di,1移动至Fi+1,2,而Fi+1,2原先接收到的数据Di,2移动至Fi+1,3,Fi+1.k(i+1)原先接收到的数据Di,k移动至Fi+1,1,以此类推,所以第二个时钟周期每个基本单元接收到的数据即为自己前一个基本单元上一个时钟周期接收到的数据,第三个时钟周期每个基本单元重复上一个周期的操作,直到k个时钟周期后,每个基本单元都接收到了ki次数据,正好对应了由上层传下来的包括D1~Dki所有的数据,由此,该结构便实现了全连接层基本单元输入数据的共享。

请参阅图3所示,每一个基本单元的逻辑功能,假设一个基本单元有i个输入和j个输出,则可以构成图3中的类似于交叉开关的结构,数据从水平方向进入,竖直方向输出。交叉开关横纵交错的节点称为基本神经元。基本神经元中可以实现多个数据的乘加运算。全连接基本单元有i个输入,每个对应交叉结构的一行,需要计算的数据从该行的输入口传入该行每一个基本神经元中与每个基本神经元中的参数进行计算,所以j个输出端口的每一列都会计算出i个值,将每列的基本神经元合起来看做一个基本列模块,因为该基本单元完成全连接的乘加功能,全连接的每个输出结果由所有输入数据和权重值的积相加而成,因此将基本列模块中所有基本神经元计算的结果相加作为输出。

请参阅图4所示为全连接基本单元的设计架构;基本单元包括存储模块、地址计数器模块和若干基本列模块。若干基本列模块并列设置,每个基本列模块的输入端均连接基本单元的数据输入端和存储模块的输出端,每个基本列模块的输出端均连接基本单元的数据输出端;地址计数器模块的输入端连接一个基本列模块,地址计数器模块的输出端连接存储模块;地址计数器模块用于采集基本列模块的计算次数。存储模块包括权重SRAM和偏置SRAM。基本列模块用于根据存储模块输入的权重和偏置对接收的输入数据与权重进行相乘,然后与偏置相加获得输出数据进行输出。一个基本单元连接一个路由器,同一全连接层中的基本单元经过路由器相连,形成全连接环。

将全连接环的路由器上下相连,形成一种参数化可扩展的神经网络全连接层多层互连结构。若上一层环中的路由器数量小于下一层环中的路由数器数量,将下一层环中的路由器等间隔与上一层环中的路由器相连;若上一层路由器数量大于下一层路由器数量,则将下一层环中已有的路由器等间隔增加路由器,路由器负责同层及层间的数据传输。

基本列模块主要用于数据的运算,具体数目由参数决定,每个列模块中又根据配置参数实例化相应的基本神经元,这些基本神经元就对应了图3交叉开关的节点,其数量等于该全连接基本单元的输入的端口数。存储模块是两个SRAM,一个按顺序存放着该基本单元计算需要权重值(weight),另外一个存放着每个输出节点对应的偏置值(bias)。读地址模块由列模块输出的有效信号控制,输出当前两个SRAM的读地址。数据在全连接基本单元进行计算的过程是:从上层网络结构或本层其它基本单元处接收到的数据包进入该基本单元输入端口,该数据包的大小等于全连接基本单元输入端口的个数乘以端口的数据位宽。该数据包同时输入多个基本列模块,在每个列模块中拆分为单独的数据送入该列模块中的基本神经元模块中。在数据输入的同时,地址计数器模块将这些数据对应的权重所存的地址读入存储模块,将对应的一行权重数据包读入列模块,该权重数据包的大小也为全连接基本单元的输入端口乘以数据位宽,该权重数据包在列模块中进行拆分分配,送入不同的基本神经元中进行计算。每个基本神经元模块计算出一个数据,这些数据在基本列模块里进行相加、存储,等待下一次计算的结果出来继续累加、直到所有输入基本单元的数据包都参与了运算,随后由基本列模块输出最终结果,多个列模块将数据打包输出,输出数据包的大小为输出端口数乘以数据位宽。

表1 为图4中英文变量对应的中文解释:

表1:全连接基本单元配置参数表

参数名称参数意义Datawidth数据位宽Num_datain输入数据个数Num_F_out输出数据个数Add_times每获得一次输出结果需要接收数据的次数Num_nrn_everycol每个基本列模块含有基本神经元的个数Para_row_num存储模块存储的权重值行数Para_column_num存储模块每行存储的权重值个数

当前人工神经网络的发展趋势是定制专用的嵌入式人工智能芯片,以加快神经网络的训练和运行速度;本发明主要针对的是卷积神经网络的全连接部分在硬件上的实现方式提出一种参数化可扩展的多层全连接互连结构:利用参数配置生成不同规模的全连接网络;每层例化出多个全连接基本单元,每层中的全连接基本单元互连构成一个闭合回路用来分时传递需要计算的数据;每个基本单元的输入、输出数据个数可配置,基本列模块和基本神经元数目可配置。本发明的设计充分考虑了数据流水线,缩短了系统运行时钟周期,灵活配置全连接层的结构和规模,便于系统的快速部署实现。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号