CN112698811A - 神经网络随机数发生器共享电路、共享方法、处理器芯片 - Google Patents
神经网络随机数发生器共享电路、共享方法、处理器芯片 Download PDFInfo
- Publication number
- CN112698811A CN112698811A CN202110033171.4A CN202110033171A CN112698811A CN 112698811 A CN112698811 A CN 112698811A CN 202110033171 A CN202110033171 A CN 202110033171A CN 112698811 A CN112698811 A CN 112698811A
- Authority
- CN
- China
- Prior art keywords
- random number
- random
- number generator
- neural network
- circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
- G06F7/584—Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4981—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种神经网络随机数发生器共享电路、共享方法、处理器芯片,属于新型计算技术领域,应用于人工神经网络电路;包括随机数模块,比特流生成模块,随机计算模块和数据存储模块。所述随机计算模块包括多个神经计算单元,所述神经计算单元包括乘法电路,带缩放加法电路以及激活函数电路,所述带缩放加法电路基于并行累加器,能够降低运算电路对输入比特流非相关性的要求,进而使随机数发生器可以在整个人工神经网络电路中共享,一个完整神经网络仅需使用一个随机数发生器。相比于现有的基于随机计算的神经网络电路,本发明极大的节省硬件资源,降低功耗,同时提高运算精度。
Description
技术领域
本发明属于新型计算技术领域,尤其涉及一种神经网络随机数发生器(Randomnumber generator,RNG)共享电路、共享方法、处理器芯片,具体涉及一种基于随机计算(Stochastic Computing,SC)的神经网络随机数发生器共享电路,应用于人工神经网络(Artificial Neural Network,ANN)电路。
背景技术
随着大数据产业和人工智能的发展,数字信号处理系统越来越复杂,其中需要用到大量的浮点数乘加、卷积等特定运算,常规处理器芯片在进行这些运算时效率较低,执行能耗大,无法支撑所需的大规模并行计算需求。
随机计算电路是近年来的研究热点,其使用随机比特流(bit stream)来表示数值参与运算。随机计算中比特流常用单极型(Unipolar)和双极型(Bipolar)表示法。设比特流序列长度为m,其中“1”有n1个,则其概率P=n1/m,当使用单极型表示法时,其表示的数值为P;当使用双极型表示法时,其表示的数值为2P–1。在此数据表征系统中,数据间的运算可以简化为简单的逻辑门运算,使用与门可以完成单极型乘法运算,使用同或门可以完成双极型乘法运算。对于加法运算,传统随机计算加法器一般由双路数据选择器组成,通过在选择端施加概率为0.5的高度随机序列,将两路输入比特流数据A、B重新组合,得到值为(A+B)/2的输出比特流。值得注意的是,在所述的随机计算乘法和加法运算电路中,输入比特流间需具有非相关性,以保证运算结果的准确性。
人工神经网络是新兴的数据处理技术,它从信息处理角度对人脑神经网络进行抽象,建立数学模型。人工神经网络的核心部分是人工神经元,每个神经元接收来自其它网络层神经元的输出,将它们乘以权重参数后求和,并加上偏移量参数,最后将总和应用激活函数后再传递给下一个或多个神经元。多层互联的神经元结构组成完整的人工神经网络,可以应用于图像分类、语音识别等领域。
将随机计算与人工神经网络结合,可以把网络中涉及的大量乘法和加法运算分别用单个逻辑门和数据选择器实现,极大的节省硬件资源占用,降低电路功耗。
然而,现有技术中,基于随机计算的神经网络电路有两个缺陷:
第一,虽然随机计算运算电路成本低,但其转换电路成本高,将传统二进制数据转化为随机比特流需要使用随机数发生器,网络运算结果需要使用计数器将其转换成二进制输出。神经网络计算节点数目庞大,导致其转换电路面积约占整个运算电路的80%,降低了随机计算运算部分的成本优势;
第二,现有技术使用数据选择器完成网络中的加法运算,对选通序列随机性要求以及输入比特流间的非相关性要求较高,同时大量计算节点数据相加需将多个数据选择器级联使用,其求和结果误差不断累积,使整个神经网络的识别率较大幅度降低。
因此,需要使用新的电路结构进一步降低转换电路的资源占用率,并且减小随机计算加法运算的误差,提高网络的识别率。
发明内容
针对现有技术存在的问题,本发明提供了一种神经网络随机数发生器共享电路、共享方法、处理器芯片,具体涉及一种基于随机计算的神经网络随机数发生器共享电路,在优化电路架构的同时减少资源占用。
本发明是这样实现的,一种基于随机计算的神经网络随机数发生器共享电路,包括随机数模块,比特流生成模块,随机计算模块和数据存储模块;随机数模块用于产生固定位宽的随机数;比特流生成模块用于将传统二进制数据转化为比特流数据;随机计算模块用于完成人工神经网络中的矩阵乘法,矩阵卷积和激活函数运算;数据存储模块用于存储网络权重参数以及偏移量参数。
进一步,所述随机计算模块包括多个神经计算单元,单个神经计算单元包括乘法电路,带缩放加法电路以及激活函数电路,在概率域对输入比特流数据进行先乘后求和,再缩放,最后激活的运算;在使用单极型表示法时,所述乘法电路利用与门实现,在使用双极型表示法时,所述乘法电路利用同或门实现;所述带缩放加法电路基于并行累加器,包含多个比特流输入端口,可在同一时钟周期将多路输入数据相加,当累加过程结束后根据运算结果选择合适缩放倍数将运算结果放大或缩小,使其值的范围满足下一级比特流生成模块的输入要求;所述激活函数电路包括但不限于使用线性整流函数(Rectified LinearUnit,ReLU),用于激活人工神经网络中的神经元,向网络添加非线性特性。
进一步,所述随机数模块有两路随机数输出,在整个网络中共用,第一路随机数连接至各网络层的输入数据比特流生成器阵列,第二路随机数连接至各网络层的权重参数比特流生成器阵列。
进一步,所述随机数模块由一个n位宽随机数发生器和复用电路组成;所述随机数发生器可以是伪随机数发生器,比如线性反馈移位寄存器(Linear feedback shiftregister,LFSR),也可以是真随机数发生器,比如基于电路噪声的随机数发生器、基于电子自旋的多态随机数发生器等;若所述随机数发生器为伪随机数发生器,则使用移位寄存器将伪随机数发生器产生的随机数延迟数个时钟周期后作为随机数模块的一路随机数输出,将未经延时处理的伪随机数发生器产生的随机数作为随机数模块的另一路随机数输出;若所述随机数发生器为真随机数发生器,则将真随机数发生器产生的随机数按奇数时钟周期和偶数时钟周期分为两组,分别作为随机数模块的两路随机数输出。
进一步,所述比特流生成模块包含两组比特流生成器阵列,每个比特流生成器由一个n位宽数字比较器组成,所述n位宽数字比较器包括两个n位宽输入数据端和一个1位宽数据输出端;所述n位宽输入数据端其一为固定端,连接n位宽传统二进制数据,其二为随机端,连接n位宽随机数据;所述1位宽数据输出端输出两n位宽输入数据的比较结果,若固定端数据大于或等于随机端数据,则输出“1”,否则输出“0”;重复比较m次,m>0,则可将固定端的n位传统二进制数据转化为m位长度的比特流数据。
进一步,所述比特流生成模块包含两组比特流生成器阵列,第一组将输入数据转化为比特流序列,各比特流生成器的固定端分别连接网络层中各个输入数据,随机端共同连接至所述随机数模块的第一路随机数;第二组将权重参数转化为比特流序列,各比特流生成器的固定端分别连接网络层中各个权重参数,随机端共同连接至所述随机数模块的第二路随机数。
本发明另一目的在于提供一种基于随机计算的神经网络随机数发生器共享电路的数据共享方法,所述基于随机计算的神经网络随机数发生器共享电路的数据共享方法包括:
使用一个随机数发生器和复用电路,在同一时钟周期产生两路随机数输出;
将两路随机数输出分别连接两组比特流生成器阵列,所述比特流生成器阵列第一组转化神经网络运算层输入数据,第二组转化神经网络运算层权重参数;
将所述比特流生成器阵列产生的输入数据比特流和权重参数比特流分别通过随机计算乘法电路完成乘法运算;
将各个随机计算乘法电路输出比特流通过带缩放加法器完成求和运算,所述加法器基于并行累加器,将多路输入比特流同时相加,并通过移位操作将结果缩放至合适范围,经激活操作后产生该神经网络计算层的输出数据。
进一步,当所述随机数发生器为伪随机数发生器时,同一时钟周期产生两路随机数输出方法包括:
利用线性反馈移位寄存器,伪随机数发生器每时钟周期产生一个n位宽随机数;对伪随机数发生器输出添加移位寄存器单元,输出随机数延迟若干个时钟周期后再输出;当延迟时间为t个时钟周期,伪随机数发生器功能函数为y=f(x)时,在x1时刻,伪随机数发生器经延时的输出为f(x1-t),原输出为f(x1),且经延时后的输出序列与原序列间具有非相关性;在t时刻后,每个时钟周期伪随机数发生器都能输出两个不同的随机数。
进一步,当所述随机数发生器为真随机数发生器时,同一时钟周期产生两路随机数输出方法包括:
利用时分复用法将一个真随机数发成器的输出随机数序列转化为两路不相关的随机数序列;通过三态门阵列,在奇数时钟周期真随机数发成器产生一路输出并寄存,在偶数时钟周期真随机数发成器产生另一路输出并寄存;
当真随机数发成器时钟频率为神经网络运算时钟的两倍时,每个神经网络运行时钟周期该随机数模块都能输出两个不同的随机数。
进一步,所述基于随机计算的人工神经网络运算层包括:
全连接层,设其含有k个神经元,In1~Inj为该层的输入数据;Out1~Outk为该层的输出数据;W11~Wjk为权重参数,分别对应j个输入与k个神经元之间的权重关系;b1~bk为偏移量参数,与k个神经元对应;全连接层完成的运算表示为:
其中,1≤i≤k,Active(x)为激活函数;
卷积层,设卷积运算输入特征图为In,滤波器为W1~Wk,偏移量为b1~bk,则输出特征图Out为:
Outi=Active(In*Wi+bi);
其中,1≤i≤k,Active(x)为激活函数,“*”为卷积运算符。
本发明另一目的在于提供一种处理器芯片,所述处理器芯片搭载所述基于随机计算的神经网络随机数发生器共享电路,并实施所述基于随机计算的神经网络随机数发生器共享电路的数据共享方法。
本发明另一目的在于提供一种信息数据处理终端,所述信息数据处理终端搭载所述处理器芯片,并用于实现所述基于随机计算的神经网络随机数发生器共享电路的数据共享方法。
与现有技术方案相比,本发明具有以下有益效果:
本发明引入带缩放加法电路,利用并行累加器可以同时准确无误的统计多个乘法输出的比特流数据,并且可以对求和结果高效的缩放,在提高运算精度的同时,降低随机计算对于输入比特流非相关性的要求,从而使随机数发生器可以在整个人工神经网络电路中共享,网络运算只需两路非相关随机数。
进一步的,针对随机数发生器的两种不同类型,即伪随机数发生器和真随机数发成器,本发明提出将单个随机数发生器的输出处理为两路随机数输出的电路结构,并且其输出的两路随机数之间具有较高非相关性,使整个网络所使用的随机数发生器数量缩至一个,极大的节省了比特流转换电路面积,节省硬件资源,降低电路功耗,并且提高了传统的基于随机计算的神经网络识别精度。
附图说明
图1是基于随机计算的神经网络随机数发生器共享电路框架图
图2是基于伪随机数发生器的随机数模块结构示意图。
图3是基于真随机数发成器的随机数模块结构示意图。
图4是基于随机计算的神经网络全连接层结构示意图。
图5是带缩放加法器结构示意图。
图6是基于随机计算的卷积运算结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种神经网络随机数发生器共享电路、共享方法、处理器芯片。基于随机计算理论,使用带缩放加法器电路代替传统的基于数据选择器的加法电路,提高运算精度,降低非相关性要求,使随机数发生器可以高度共享,并且提出单个随机数发生器产生两路非相关随机数输出的方法,将整个神经网络电路中随机数发生器数量降至一个。
下面结合附图和实施实例对本发明作详细的描述。
实施实例:
本发明提出的基于随机计算的神经网络随机数发生器共享电路框架如图1所示。图中输入数据In、输出数据Out、权重参数W和偏移量参数b皆为矩阵数据,非单一变量。整个电路包括随机数模块,比特流生成模块,随机计算模块和数据存储模块。随机数模块基于随机数产生器电路,通过复用电路每个时钟周期可以产生两个固定位宽的随机数,且具有良好的非相关性;比特流生成模块基于数字比较器电路,用于将传统二进制数据转化为比特流数据;随机计算模块包含基于随机计算理论的运算单元,用于完成人工神经网络中的矩阵乘法,矩阵卷积和激活函数运算;数据存储模块用于存储网络权重参数W以及偏移量参数b。
如图所示,比特流生成模块包含两组比特流生成器阵列,随机数模块的两路输出分别与两组比特流生成器阵列相连,电路的输入数据In连接至第一组比特流生成器阵列,权重参数W连接至第二组比特流生成器阵列。两组比特流生成器阵列的输出以及偏移量参数b共同连接至所述随机计算模块,其运算结果作为电路的输出Out。
随机数模块由随机数发生器和复用电路组成,针对不同种类的随机数发生器本发明提出了不同的复用方法。附图2为基于伪随机数发生器的随机数模块结构示意图,利用线性反馈移位寄存器,伪随机数发生器可以每时钟周期产生一个n位宽随机数。对其输出添加移位寄存器单元,相当于将其输出随机数延迟若干个时钟周期后再输出,延迟周期取决于移位寄存器数量。设延迟时间为t个周期,伪随机数发生器功能函数为y=f(x),在x1时刻,该随机数模块输出随机数1为f(x1-t),随机数2为f(x1),而经延时后的输出序列与原序列间具有较好的非相关性,因此在t时刻之后,每个时钟周期该随机数模块都能输出两个不同的随机数。
附图3为基于真随机数发成器的随机数模块结构示意图,由于真随机数发生器产生的随机数之间没有任何关系,利用时分复用法可以将一个真随机数发成器的输出随机数序列转化为两路不相关的随机数序列。更具体的,在奇数时钟周期真随机数发成器由图中上支路输出,在偶数时钟周期真随机数发成器由图中下支路输出。当真随机数发成器时钟频率为神经网络运算时钟的两倍时,每个神经网络运行时钟周期该随机数模块都能输出两个不同的随机数。综上所述,仅使用一个随机数发生器就可以让随机数模块产生两路随机数输出,并且输出序列间具有较好的非相关性。
神经网络中常用的计算层有全连接层和卷积层。附图4为基于随机计算的神经网络全连接层结构示意图,该全连接层共有k个神经元,In1~Inj为该层的输入数据;Out1~Outk为该层的输出数据;W11~Wjk为权重参数,分别对应j个输入与k个神经元之间的权重关系;b1~bk为偏移量参数,与k个神经元对应。该全连接层完成的运算可表示为:
图中右侧虚线框中为随机计算模块,其包含多个神经计算单元,完成乘法、求和、移位缩放以及ReLU激活函数运算。In和W分别对应两组比特流生成模块,第一组为输入数据比特流生成模块,其正端(固定端)分别连接网络层中各个输入数据,负端(随机端)共同连接至随机数模块第一路随机数输出;第二组为权重参数比特流生成模块,其正端分别连接网络层中各个权重参数,负端共同连接至随机数模块第二路随机数输出。
输入数据In和权重参数W转化为比特流之后进入随机计算模块,首先是根据上述公式做乘法,由于随机数模块的两路输出随机数序列不相关,满足各个乘法器输入端In和W的比特流不相关的特性。乘法之后是求和电路,值得注意的是,由于前一级运算各个乘法器使用相同的随机数模块,则任意两个乘法结果比特流间具有相关性,若加法器使用数据选择器电路实现,将会产生较大的运算误差,因此需要使用对输入比特流相关性要求不高的加法器电路,使得本发明所提出的随机数发生器共享方案成为可能。
附图5为带缩放加法器示意图,其基于累加器,输入比特流中“0”和“1”的位置可以任意,对比特流相关性没有要求,同时能够精确求和,将此种加法器应用于基于随机计算的神经网络后,各个随机计算乘法器可使用同一个随机数模块,进而使整个网络仅使用一个随机数发生器。图中所示加法器基于带符号位的单极型表示法,S为数据的符号位,M为数据的绝对值。若输入比特流符号位为“1”则由三态门将其导向负向累加器,若为“0”则由三态门将其导向正向累加器。待比特流全部累加完毕后,比较器输出求和结果的符号位,两累加器相减得结果的绝对值。缩放功能由数据移位操作实现,将求和结果调整为n位宽的数据,便于下一层网络的比特流生成器进行比较转换。
附图6为基于随机计算的卷积运算结构示意图。本发明提出的基于随机计算的神经网络随机数发生器共享电路具有通用性,除全连接层外,卷积层也可使用。图中展示的卷积运算输入特征图In为5*5,滤波器W为3*3,由卷积运算原理可知输出特征图Out大小为3*3。运算中仍将比特流生成器分为两组,第一组转换输入数据,使用随机数模块的第一路输出;第二组转换滤波器数据,使用随机数模块的第二路输出。当卷积运算所用滤波器数目不止1个时,重复除随机数模块之外的运算电路,再分别将随机数模块的两路输出连接至其它各卷积电路的第一组比特流生成器和第二组比特流生成器,达到全网络仅共用一个随机数发生器电路的目的。该随机数发生器共享方式满足随机计算乘法器阵列的输入比特流非相关性要求,同时使用上述带缩放加法器消去乘法器输出比特流间非相关性要求,硬件资源消耗得以降低。
实施例中按照本发明提出的随机数发生器共享电路方案,使用Verilog硬件描述语言搭建了基于随机计算的手写数字识别全连接人工神经网络。网络节点参数为784-50-10,使用MNIST手写数字数据集进行训练。本实施例及对比电路的仿真及DC综合结果如表1所示。
表1基于14nm CMOS工艺的仿真及综合结果对比
由表可知,本实施例中基于随机计算的神经网络在使用随机数发生器共享电路后逻辑门的数量仅为传统32位浮点计算的12%,功耗仅为22%,而MNIST手写数字数据集图片识别准确率与浮点计算相比,仅相差0.3%。在与现有的非共享随机计算算法电路对比时,其识别准确率提高1%,逻辑资源占用降低72%,功耗降低86%。因此,无论是与传统浮点运算网络对比,还是与现有的基于随机计算的神经网络对比,本发明提出的电路结构都具有更低的资源占用率以及更低的功耗。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于随机计算的神经网络随机数发生器共享电路的数据共享方法,其特征在于,所述基于随机计算的神经网络随机数发生器共享电路的数据共享方法包括:
使用一个随机数发生器和复用电路,在同一时钟周期产生两路随机数输出;
将两路随机数输出分别连接两组比特流生成器阵列,所述比特流生成器阵列第一组转化神经网络运算层输入数据,第二组转化神经网络运算层权重参数;
将所述比特流生成器阵列产生的输入数据比特流和权重参数比特流分别通过随机计算乘法电路完成乘法运算;
将各个随机计算乘法电路输出比特流通过带缩放加法器完成求和运算,所述加法器基于并行累加器,将多路输入比特流同时相加,并通过移位操作将结果缩放至合适范围,经激活操作后产生该神经网络计算层的输出数据。
2.如权利要求1所述的基于随机计算的神经网络随机数发生器共享电路的数据共享方法,其特征在于,当所述随机数发生器为伪随机数发生器时,同一时钟周期产生两路随机数输出方法包括:
利用线性反馈移位寄存器,伪随机数发生器每时钟周期产生一个n位宽随机数;对伪随机数发生器输出添加移位寄存器单元,输出随机数延迟若干个时钟周期后再输出;当延迟时间为t个时钟周期,伪随机数发生器功能函数为y=f(x)时,在x1时刻,伪随机数发生器经延时的输出为f(x1-t),原输出为f(x1),且经延时后的输出序列与原序列间具有非相关性;在t时刻后,每个时钟周期伪随机数发生器都能输出两个不同的随机数。
3.如权利要求1所述的基于随机计算的神经网络随机数发生器共享电路的数据共享方法,其特征在于,当所述随机数发生器为真随机数发生器时,同一时钟周期产生两路随机数输出方法包括:
利用时分复用法将一个真随机数发成器的输出随机数序列转化为两路不相关的随机数序列;通过三态门阵列,在奇数时钟周期真随机数发成器产生一路输出并寄存,在偶数时钟周期真随机数发成器产生另一路输出并寄存;
当真随机数发成器时钟频率为神经网络运算时钟的两倍时,每个神经网络运行时钟周期该随机数模块都能输出两个不同的随机数。
4.如权利要求1所述的基于随机计算的神经网络随机数发生器共享电路的数据共享方法,其特征在于,所述人工神经网络运算层包括:
全连接层,设其含有k个神经元,In1~Inj为该层的输入数据;Out1~Outk为该层的输出数据;W11~Wjk为权重参数,分别对应j个输入与k个神经元之间的权重关系;b1~bk为偏移量参数,与k个神经元对应;全连接层完成的运算表示为:
其中,1≤i≤k,Active(x)为激活函数;
卷积层,设卷积运算输入特征图为In,滤波器为W1~Wk,偏移量为b1~bk,则输出特征图Out为:
Outi=Active(In*Wi+bi);
其中,1≤i≤k,Active(x)为激活函数,“*”为卷积运算符。
5.一种基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述基于随机计算的神经网络随机数发生器共享电路包括:
随机数模块,用于产生固定位宽的随机数;
比特流生成模块,用于将传统二进制数据转化为比特流数据;
随机计算模块,用于完成人工神经网络中的矩阵乘法,矩阵卷积和激活函数运算;
数据存储模块,用于存储网络权重参数以及偏移量参数。
6.如权利要求5所述的基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述随机计算模块包括多个神经计算单元,单个神经计算单元包括乘法电路,带缩放加法电路以及激活函数电路,在概率域对输入比特流数据进行先乘后求和,再缩放,最后激活的运算;在使用单极型表示法时,所述乘法电路利用与门实现,在使用双极型表示法时,所述乘法电路利用同或门实现;所述带缩放加法电路基于并行累加器,包含多个比特流输入端口,可在同一时钟周期将多路输入数据相加,当累加过程结束后根据运算结果选择合适缩放倍数将运算结果放大或缩小,使其值的范围满足下一级比特流生成模块的输入要求;所述激活函数电路包括但不限于使用线性整流函数,用于激活人工神经网络中的神经元,向网络添加非线性特性;
所述随机数模块有两路随机数输出,在整个网络中共用,第一路随机数连接至各网络层的输入数据比特流生成器阵列,第二路随机数连接至各网络层的权重参数比特流生成器阵列。
7.如权利要求5所述的基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述随机数模块由一个n位宽随机数发生器和复用电路组成,所述随机数发生器可以是伪随机数发生器,也可以是真随机数发生器;若所述随机数发生器为伪随机数发生器,则使用移位寄存器将伪随机数发生器产生的随机数延迟数个时钟周期后作为随机数模块的一路随机数输出,将未经延时处理的伪随机数发生器产生的随机数作为随机数模块的另一路随机数输出;若所述随机数发生器为真随机数发生器,则将真随机数发生器产生的随机数按奇数时钟周期和偶数时钟周期分为两组,分别作为随机数模块的两路随机数输出;
所述比特流生成模块包含两组比特流生成器阵列,每个比特流生成器由一个n位宽数字比较器组成,所述n位宽数字比较器包括两个n位宽输入数据端和一个1位宽数据输出端;
所述n位宽输入数据端包括:
固定端,连接n位宽传统二进制数据;
随机端,连接n位宽随机数据;
所述1位宽数据输出端输出两n位宽输入数据的比较结果,若固定端数据大于或等于随机端数据,则输出“1”,否则输出“0”;重复比较m次,m>0,则将固定端的n位传统二进制数据转化为m位长度的比特流数据。
8.如权利要求5所述的基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述比特流生成模块包含两组比特流生成器阵列,第一组将输入数据转化为比特流序列,各比特流生成器的固定端分别连接网络层中各个输入数据,随机端共同连接至所述随机数模块的第一路随机数;第二组将权重参数转化为比特流序列,各比特流生成器的固定端分别连接网络层中各个权重参数,随机端共同连接至所述随机数模块的第二路随机数。
9.一种处理器芯片,其特征在于,所述处理器芯片搭载权利要求5-8任意一项权利要求所述的基于随机计算的神经网络随机数发生器共享电路,并实施权利要求1-4任意一项所述基于随机计算的神经网络随机数发生器共享电路的数据共享方法。
10.一种信息数据处理终端,其特征在于,所述信息数据处理终端搭载权利要求9所述处理器芯片,并用于实现权利要求1-4任意一项所述基于随机计算的神经网络随机数发生器共享电路的数据共享方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110033171.4A CN112698811A (zh) | 2021-01-11 | 2021-01-11 | 神经网络随机数发生器共享电路、共享方法、处理器芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110033171.4A CN112698811A (zh) | 2021-01-11 | 2021-01-11 | 神经网络随机数发生器共享电路、共享方法、处理器芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112698811A true CN112698811A (zh) | 2021-04-23 |
Family
ID=75513915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110033171.4A Pending CN112698811A (zh) | 2021-01-11 | 2021-01-11 | 神经网络随机数发生器共享电路、共享方法、处理器芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698811A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113516171A (zh) * | 2021-05-19 | 2021-10-19 | 电子科技大学 | 基于贝叶斯神经网络随机加法分解结构的图像分类方法 |
CN113516170A (zh) * | 2021-05-19 | 2021-10-19 | 电子科技大学 | 基于贝叶斯神经网络随机加法饱和结构的图像分类方法 |
CN116151340A (zh) * | 2022-12-26 | 2023-05-23 | 辉羲智能科技(上海)有限公司 | 并行随机计算神经网络系统及其硬件压缩方法、系统 |
-
2021
- 2021-01-11 CN CN202110033171.4A patent/CN112698811A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113516171A (zh) * | 2021-05-19 | 2021-10-19 | 电子科技大学 | 基于贝叶斯神经网络随机加法分解结构的图像分类方法 |
CN113516170A (zh) * | 2021-05-19 | 2021-10-19 | 电子科技大学 | 基于贝叶斯神经网络随机加法饱和结构的图像分类方法 |
CN113516171B (zh) * | 2021-05-19 | 2023-04-07 | 电子科技大学 | 基于贝叶斯神经网络随机加法分解结构的图像分类方法 |
CN113516170B (zh) * | 2021-05-19 | 2023-05-23 | 电子科技大学 | 基于贝叶斯神经网络随机加法饱和结构的图像分类方法 |
CN116151340A (zh) * | 2022-12-26 | 2023-05-23 | 辉羲智能科技(上海)有限公司 | 并行随机计算神经网络系统及其硬件压缩方法、系统 |
CN116151340B (zh) * | 2022-12-26 | 2023-09-01 | 辉羲智能科技(上海)有限公司 | 并行随机计算神经网络系统及其硬件压缩方法、系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hu et al. | Efficient hardware architecture of softmax layer in deep neural network | |
CN112698811A (zh) | 神经网络随机数发生器共享电路、共享方法、处理器芯片 | |
US5390136A (en) | Artificial neuron and method of using same | |
US5517667A (en) | Neural network that does not require repetitive training | |
Sim et al. | Scalable stochastic-computing accelerator for convolutional neural networks | |
CN111652360B (zh) | 一种基于脉动阵列的卷积运算装置 | |
CN110543939A (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 | |
CN105913118A (zh) | 一种基于概率计算的人工神经网络硬件实现装置 | |
Zhang et al. | When sorting network meets parallel bitstreams: A fault-tolerant parallel ternary neural network accelerator based on stochastic computing | |
Frasser et al. | Fully parallel stochastic computing hardware implementation of convolutional neural networks for edge computing applications | |
CN113805842A (zh) | 一种基于超前进位加法器实现的存算一体装置 | |
Zhang et al. | Parallel convolutional neural network (CNN) accelerators based on stochastic computing | |
Zhang et al. | Design and implementation of LSTM accelerator based on FPGA | |
CN213934855U (zh) | 一种基于随机计算的神经网络随机数发生器共享电路 | |
CN112862091B (zh) | 一种基于快速卷积的资源复用型神经网络硬件加速电路 | |
Meher | Unified systolic-like architecture for DCT and DST using distributed arithmetic | |
Petriu et al. | Applications of random-pulse machine concept to neural network design | |
CN110705196B (zh) | 一种基于随机计算的无误差加法器 | |
CN116306854A (zh) | 基于光电存算一体器件的transformer神经网络加速装置及方法 | |
CN112346704B (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
CN110555519B (zh) | 一种基于符号随机计算的低复杂度卷积神经网络架构 | |
Solovyev et al. | Real-Time Recognition of Handwritten Digits in FPGA Based on Neural Network with Fixed Point Calculations | |
CN112949830B (zh) | 智能推断网络系统以及加法单元和池化单元电路系统 | |
CN115545190B (zh) | 一种基于概率计算的脉冲神经网络及其实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |