CN110610235A - 一种神经网络激活函数计算电路 - Google Patents
一种神经网络激活函数计算电路 Download PDFInfo
- Publication number
- CN110610235A CN110610235A CN201910780338.6A CN201910780338A CN110610235A CN 110610235 A CN110610235 A CN 110610235A CN 201910780338 A CN201910780338 A CN 201910780338A CN 110610235 A CN110610235 A CN 110610235A
- Authority
- CN
- China
- Prior art keywords
- signal
- activation function
- neural network
- calculation
- module
- 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.)
- Granted
Links
Classifications
-
- 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/047—Probabilistic or stochastic 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Probability & Statistics with Applications (AREA)
- Image Processing (AREA)
Abstract
一种神经网络激活函数计算电路,包括:输入缓存模块、地址映射单元、参数查找表LUT、寄存器、计算单元、输出缓存模块和控制逻辑模块。在控制逻辑模块的控制下通过五级流水线计算电路来实现激活函数的高效计算。本发明基于分段线性插值的近似计算方法,根据配置可实现Sigmoid函数、双曲正切函数Tanh、带参数的线性整流单元PReLU以及归一化指数函数Softmax四种神经网络常用激活函数的近似计算,具有计算效率高、占用资源少、可配置及易于扩展的特点。该神经网络激活函数计算电路结构简单、可靠、易于与其它功能部件配合,并且便于在芯片上实现。
Description
技术领域
本发明涉及一种神经网络激活函数计算电路,特别是一种神经网络处理器和深度学习算法加速器中激活函数计算电路的设计和制造,属于人工智能、计算机技术和集成电路设计领域。
背景技术
近年来,以深度学习为代表的人工智能技术在计算机视觉、语音识别、自然语言处理等领域取得了巨大的突破。为了获得较高的算法执行效率,以及适应嵌入式应用场景,面向特定领域应用的专用神经网络处理器和深度学习硬件算法加速器的设计成为当前的研究热点。激活函数作为神经网络和深度学习算法中不可或缺的一部分,它的计算直接影响到整个算法的执行效率。由于大部分激活函数计算中包含指数计算,而不便于直接采用硬件实现,通常采用近似计算的方法。这些近似计算方法包括:查找表法、泰勒展开式法、坐标旋转数字计算方法CORDIC、多项式近似计算以及分段线性插值法等。这些近似计算方法的硬件实现方式包括了查找表、CORDIC硬件逻辑、通用ALU等。然而,现有的这些激活函数的硬件实现方式存在着需要多个时钟周期来完成,计算效率低,逻辑复杂及占用资源多等缺点。所以探索高效的激活函数硬件设计与实现方式成为神经网络处理器和深度学习算法加速器设计领域亟待解决的技术问题之一。
发明内容
本发明的目的在于克服现有技术的不足,提供一种神经网络激活函数计算电路,是一种广泛适用于神经网络处理器和深度学习算法加速器的激活函数计算电路,本发明计算效率高、结构简单、可靠、便于扩展、方便实现。
本发明实现上述发明目的的技术方案是:
一种神经网络激活函数计算电路,包括:输入缓存模块、地址映射单元、参数查找表LUT、寄存器、计算单元、输出缓存模块和控制逻辑模块;
输入缓存模块:用于缓存接收到的输入神经元Nin,在激活函数计算时,在控制逻辑模块控制下读出神经元X并发送给地址映射单元;
地址映射单元:在控制逻辑模块的控制下根据神经元X的值产生参数查找表LUT地址Addr发送给参数查找表,并将神经元X发送给寄存器进行暂存;
参数查找表LUT:用于存储激活函数进行分段线性插值计算时,所需的参数{a,b},并在控制逻辑模块的控制下读出参数{a,b}发送给计算单元;
寄存器:接收并暂存来自地址映射单元发送的神经元X,并输出神经元X到计算单元;
计算单元:接收来自参数查找表LUT的参数{a,b}和来自寄存器的神经元X,采用分段线性插值方法,得到激活函数计算结果Y,并将激活函数计算结果Y发送给输出缓存模块;
输出缓存模块:在控制逻辑模块的控制下接收并缓存计算单元输出的激活函数计算结果Y,并根据外部神经网络处理系统控制模块发送的读出信号Bout_Rd将激活函数计算结果Y输出给外部神经网络处理系统输出模块;
控制逻辑模块:接收外部神经网络处理系统控制模块发送的激活函数操作码AF_OP,神经元数量AF_Num以及加载信号Load,产生激活函数计算时各模块的控制信号并输出给对应模块,以及产生归一化指数函数Softmax累加和计算完毕信号Cusum_End输出给神经网络处理系统输出模块。
本发明的神经网络激活函数计算电路相对现有技术,具有以下优点:
(1)本发明的神经网络激活函数计算电路采用五级流水线的并行处理技术设计,计算效率高。
(2)本发明的神经网络激活函数计算电路可在一个时钟周期内直接完成神经元数据到参数查找表LUT的地址映射,克服了传统方法需要耗费多个周期进行分段地址查找的缺点。
(3)本发明的神经网络激活函数计算电路根据配置可实现Sigmoid函数、双曲正切函数(Tanh)、带参数的线性整流单元(PReLU)以及归一化指数函数(Softmax)四种神经网络常用激活函数的近似计算,使用灵活、方便。并可根据需要对激活函数的种类和近似计算的分段数进行扩展。
(4)本发明的神经网络激活函数计算电路结构简单,面积小,功耗低,可靠性高,易于扩展,易于应用到其它神经网络处理器和深度学习算法加速器的设计中。
(5)根据本发明中所述结构而设计的神经网络激活函数计算电路工作简单、性能稳定可靠,与其它功能部件配合容易。
附图说明
图1为本发明的一种神经网络激活函数计算电路的结构图;
图2为本发明的16位定点数据格式;
图3为本发明的地址映射单元结构图;
图4为本发明的参数查找表LUT地址分配;
图5为本发明的计算单元结构图。
具体实施方式
为了更清楚的理解本发明,以下结合附图对本发明作进一步的详细描述。
本发明的目的在于克服现有技术的不足,提供一种广泛适用于神经网络处理器和深度学习算法加速器的激活函数计算电路,而且计算效率高、结构简单、可靠、便于扩展、方便实现。参看图1,一种神经网络激活函数计算电路包括输入缓存模块、地址映射单元、参数查找表LUT、寄存器、计算单元、输出缓存模块和控制逻辑模块。
神经网络激活函数计算电路采用五级流水线设计,五级流水线及其相对应的电路结构为:第一级神经元输入,对应输入缓存模块;第二级地址产生,对应地址映射单元;第三级读取参数,对应参数查找表LUT和寄存器;第四级计算,对应计算单元;第五级神经元输出,对应输出缓存模块。
输入缓存模块,用于缓存接收到的输入神经元Nin,在激活函数计算时在控制逻辑模块控制下读出神经元X并发送给地址映射单元。输入缓存模块作为五级流水线的第一级,采用同步FIFO设计。它接收来自神经网络处理系统计算阵列输出的神经元数据Nin,并将输入缓存满标志信号Bin_Full发送给神经网络处理系统,神经网络处理系统在输入缓存满标志信号Bin_Full无效即等于0时并且输入缓存写信号Bin_Wr有效即等于1时将输入神经元信号Nin写入输入缓存模块;在激活函数计算时,控制逻辑模块根据接收输入缓存空标志信号Bin_Empty并在其无效即等于0并且输入缓存读信号Bin_Rd有效即等于1时,将输入缓存模块中神经元信号X读出并发送给地址映射单元。
地址映射单元,在控制逻辑模块的控制下根据神经元X的值产生参数查找表LUT地址Addr发送给参数查找表,并将神经元X发送给寄存器进行暂存。地址映射单元作为五级流水线的第二级,接收控制逻辑模块发送的地址映射使能信号AMap_En和激活函数操作码信号AF_OP,以及来自输入缓存模块的神经元信号X,当地址映射使能信号AMap_En有效即等于1时,在激活函数操作码信号AF_OP的控制下根据神经元信号X在一个时钟周期即CLK周期内可以直接映射生成参数查找表LUT的地址Addr并输出给参数查找表,同时将神经元信号X发送给寄存器进行暂存。寄存器接收来自地址映射单元的神经元信号X进行暂存,并发送给计算单元。所述参数{a,b}根据激活函数和激活函数的取值范围确定;所述的地址映射单元在接收到的地址映射使能信号AMap_En有效时,根据激活函数操作码信号AF_OP在一个时钟周期内完成从16位神经元信号X到6位参数查找表地址Addr的映射,具体的映射过程为:
两位激活函数操作码信号AF_OP[1:0]产生参数查找表地址Addr的高两位Addr[5:4];
当AF_OP=00时,Addr[3:0]={3’b000,S};
当AF_OP=01时,如果S=0,且{I4,I3,I2,I1,I0}=5’b00000,则Addr[3:0]={S,F9,F8,F7};
当AF_OP=2’b 01时,如果S=0,且{I4,I3,I2,I1,I0}≠5’b00000,则Addr[3:0]={S,3’b111};
当AF_OP=2’b 01时,如果S=1,且{I4,I3,I2,I1,I0}=5’b11111,则Addr[3:0]={S,F9,F8,F7};
当AF_OP=2’b 01时,如果S=1,且{I4,I3,I2,I1,I0}≠5’b11111,则Addr[3:0]={S,3’b000};
当AF_OP=2’b 10时,如果S=0,且{I4,I3}=2’b00,则Addr[3:0]={S,I2,I1,I0};
当AF_OP=2’b 10时,如果S=0,且{I4,I3}≠2’b00,则Addr[3:0]={S,3’b111};
当AF_OP=2’b 10时,如果S=1,且{I4,I3}=2’b11,则Addr[3:0]={S,I2,I1,I0};
当AF_OP=2’b 10时,如果S=1,且{I4,I3}≠2’b11,则Addr[3:0]={S,3’b000};
当AF_OP=2’b 11时,如果S=0,且{I4,I3,I2}=3’b000,则Addr[3:0]={S,,I1,I0,F9};
当AF_OP=2’b 11时,如果S=0,且{I4,I3,I2}≠3’b000,则Addr[3:0]={S,3’b111};
当AF_OP=2’b 11时,如果S=1,且{I4,I3,I2}=3’b111,则Addr[3:0]={S,,I1,I0,F9};
当AF_OP=2’b 11时,如果S=1,且{I4,I3,I2}≠3’b111,则Addr[3:0]={S,3’b000}。
参数查找表LUT,用于存储激活函数进行分段线性插值计算时所需的参数{a,b},并在控制逻辑模块控制下读出参数{a,b}发送给计算单元。参数查找表LUT和寄存器作为五级流水线的第三级,参数查找表采用ROM设计,寄存器采用D触发器设计。参数查找表在控制逻辑模块发送的查找表读信号LUT_Rd的控制下根据地址映射单元发送的地址Addr读出进行分段线性插值计算的两个参数{a,b}发送给计算单元。
寄存器,接收并暂存来自地址映射单元发送的神经元X,并输出神经元X到计算单元,该寄存器由16位D触发器实现,由神经网络处理系统时钟信号CLK驱动,并与神经网络处理系统复位信号RSTn进行复位。
计算单元,用于接收来自参数查找表LUT的参数{a,b}和来自寄存器的神经元X进行基于分段线性插值方法的近似计算,即采用分段线性插值方法,得到激活函数计算结果Y,并将激活函数计算结果Y发送给输出缓存模块,以及将归一化指数函数(Softmax)计算时的累加和CuSum输出给神经网络处理系统输出模块。计算单元作为五级流水线的第四级,计算单元接收来自参数查找表的参数信号{a,b}以及寄存器暂存的神经元信号X,在控制逻辑模块发出的计算使能信号Compute_En和归一化指数函数(Softmax)计算时的累加和使能信号CuSum_En的控制下完成线性函数Y=a*X+b的计算,并将激活函数计算结果Y发送给输出缓存模块,以及将归一化指数函数(Softmax)计算时的累加和CuSum直接输出给神经网络处理系统输出模块。其中,a和b为来自参数查找表LUT的参数。
输出缓存模块,在控制逻辑模块控制下接收并缓存计算单元输出的激活函数计算结果Y,并根据外部神经网络处理系统控制模块发送的读出信号Bout_Rd将激活函数计算结果Y输出给外部神经网络处理系统输出模块。输出缓存模块作为五级流水线的第五级,采用同步FIFO设计。输出缓存模块接收来自计算单元输出激活函数计算结果Y,控制逻辑模块发送的输出缓存写信号Bout_Wr,以及神经网络处理系统输出模块发送的输出缓存读信号Bout_Rd。并将输出缓存满标志信号Bout_Full输出给控制逻辑模块,将输出缓存空标志信号Bout_Empty输出给神经网络处理系统输出模块。当输出缓存满标志Bout_Full无效即等于0时,且输出缓存写信号Bout_Wr有效即等于1时将激活函数计算结果Y写入输出缓存模块中;当输出缓存空标志Bout_Empty无效即等于0时,且输出缓存读信号Bout_Rd有效即等于1时将输出缓存模块中存储的激活函数计算结果Nout输出给神经网络处理系统输出模块。
控制逻辑模块,接收外部神经网络处理系统控制模块发送的激活函数操作码AF_OP,神经元数量AF_Num以及加载信号Load;接收来自输入缓存模块的输入缓存空标志信号Bin_Empty,以及来自输出缓存模块的输出缓存满标志信号Bout_Full。激活函数计算时,产生输入缓存读信号Bin_Rd并输出给输入缓存模块;将激活函数操作码AF_OP和产生的地址映射使能信号AMap_En输出给地址映射单元;产生参数查找表读信号LUT_Rd发送给参数查找表;产生计算使能信号Compute_En和累加和使能信号CuSum_En并发送给计算单元;产生输出缓存写信号Bout_Wr输出给输出缓存模块;以及产生归一化指数函数(Softmax)累加和计算完毕信号Cusum_End输出给神经网络处理系统输出模块。
神经网络激活函数计算电路中所有的时序逻辑由时钟信号CLK驱动,内部包含的寄存器逻辑由复位信号RSTn进行复位。
参看图2,在神经网络激活函数计算电路中,输入神经元Nin,计算过程中涉及的神经元信号X,参数查找表中存储的参数a和b,以及计算单元输出计算结果Y信号等均为16位定点数,采用二进制补码表示。具体的16位定点数据格式定义为:其中[15]位为符号位,由S表示;[14:10]位为整数部分,由{I4,I3,I2,I1,I0}表示;[9:0]位为小数部分,由{F9,F8,F7,F6,……F0}表示。
参看图3,地址映射单元作为五级流水线的第二级,接收控制逻辑模块发送的地址映射使能信号AMap_En和激活函数操作码信号AF_OP,以及来自输入缓存模块的神经元信号X,当地址映射使能信号AMap_En有效即等于1时,在激活函数操作码信号AF_OP的控制下根据神经元信号X在一个时钟周期即CLK周期内可以直接映射生成参数查找表LUT的地址Addr并输出给参数查找表,同时将神经元信号X发送给寄存器进行暂存。
地址映射单元的电路结构为:包括三选一选择器MUX31_1、MUX31_2、MX31_3;二选一选择器MUX21_1、MUX21_2、MUX21_3、MUX21_4、MUX21_5;五输入或门or51_1;五输入与门and51_1;二输入或门or21_1、or21_2;二输入与门and21_1;三输入或门or31_1;三输入与门and31_1;以及8位地址寄存器A[7:0]。其具体的连接关系为:神经元信号X[15:0]的{F9,F8,F7,F6,F5}五位,{I2,I1,I0,F9,F8}五位,{I1,I0,F9,F8,F7}五位分别接三选一选择器MUX31_1的三个输入端;激活函数操作码信号AF_OP[1:0]接三选一选择器MUX31_1的两个控制端。神经元信号X[15:0]的{I4,I3,I2,I1,I0}分别接五输入或门or51_1和五输入与门and51_1的五个输入端,{I4,I3}分别接二输入或门or21_1和二输入与门and21_1的两个输入端,{I4,I3,I2}分别接三输入或门or31_1和三输入与门and31_1的三个输入端;五输入或门or51_1的输出,二输入或门or21_1的输出和三输入或门or31_1接三选一选择器MUX31_2的三个输入端;五输入与门and51_1的输出,二输入与门and21_1的输出和三输入与门and31_1的输出接三选一选择器MUX31_3的三个输入端;激活函数操作码信号AF_OP[1:0]分别接三选一选择器MUX31_2和MUX31_3的两个控制端。三选一选择器MUX31_1的输出和固定值5’b11111分辨接二选一选择器MUX21_1的两个输入端,三选一选择器MUX31_2的输出接二选一选择器MUX21_1的控制端。三选一选择器MUX31_1的输出和固定值5’b00000分辨接二选一选择器MUX21_2的两个输入端,三选一选择器MUX31_3的输出接二选一选择器MUX21_2的控制端。二选一选择器MUX21_1的输出和MUX21_2的输出接二选一选择器MUX21_3的两个输入端,神经元信号X[15:0]的符号位S接二选一选择器MUX21_3的控制端。激活函数操作码信号AF_OP[1:0]分别接二输入或门or21_2的两个输入。符号位S和固定值1’b0分别接二选一选择器MUX21_4的两个输入端;二选一选择器MUX21_3和{4’b0000,S}分别接二选一选择器MUX21_5的两个输入端;二输入或门or21_2的输出分别接二选一选择器MUX21_4和MUX21_5的两个控制端;激活函数操作码信号AF_OP[1:0]接地址寄存器Addr[7:0]的A[7:6]位,二选一选择器MUX21_4的输出接A[5]位,二选一选择器MUX21_5的输出接A[4:0]位,激活函数映射使能AMap_En接地址寄存器Addr[7:0]的使能端,时钟信号CLK和复位信号RSTn分别接地址寄存器的时钟端和复位端。
参看图4,参数查找表LUT采用ROM设计,ROM的容量与支持激活函数的种类和每种激活函数定义域的分段数有关。为了保证激活函数近似计算的精度,实现产生误差的忽略不计,将归一化指数函数(Softmax)、Sigmoid函数和双曲正切函数(Tanh)的定义域分别分为64段。每类激活函数分配64个地址来存储相应的参数,每个地址为32位,其中[31:16]位存储参数a,[15:0]位存储参数b。地址空间的分配为00H~01H为带参数的线性整流单元(PReLU)参数,02H~3FH保留;40H~7FH为归一化指数函数(Softmax)参数;80H~BFH为Sigmoid函数参数;C0H~FFH为双曲正切函数(Tanh)参数。在每类激活函数的存储空间中先按定义域从小到大顺序存储定义域大于零的分段对应的参数,接着按定义域从小到大顺序存储定义域小于零的分段的对应的参数。
参看图5,计算单元作为五级流水线的第四级,计算单元接收来自参数查找表的参数信号{a,b}以及寄存器暂存的神经元信号X,在控制逻辑模块发出的计算使能信号Compute_En和归一化指数函数(Softmax)计算时的累加和使能信号CuSum_En的控制下完成线性函数Y=a*X+b的计算,并将激活函数计算结果Y发送给输出缓存模块,以及将归一化指数函数(Softmax)计算时的累加和CuSum直接输出给神经网络处理系统输出模块。
计算单元的电路结构为:包括乘法器Mult_01;加法器Adder_01、Adder_02;寄存器Reg_01、Reg_02。具体的连接关系为:参数a[15:0]与神经元信号X[15:0]分别接截断乘法器Mult_01的两个输入端,乘法器Mult_01的输出Y_t1[15:0]与参数b[15:0]分别接加法器Adder_01的两个输入端,加法器Adder_01的输出Y_t2[15:0]接寄存器Reg_01的D输入端,计算使能信号Compute_En接寄存器Reg_01的使能端,时钟信号CLK和复位信号RSTn接寄存器Reg_01的时钟端和复位端,寄存器Reg_01的输出为激活函数计算结果Y[15:0];寄存器Reg_01的输出接到加法器Adder_02的一个输入端,寄存器Reg_02的输出接到加法器Adder_02的另一个输入端;加法器Adder_02的输出Sum_t[31:0]接寄存器Reg_02的D输入端,累加使能信号CuSum_En接寄存器Reg_02的使能端,时钟信号CLK和复位信号RSTn接寄存器Reg_02的时钟端和复位端,寄存器Reg_02输出累加和CuSum[31:0]到神经网络处理系统输出模块。
所述的带参数的线性整流单元(PReLU),通过对参数的配置可以转换为线性整流函数(ReLU)或Leaky-ReLU函数。
所述的神经网络激活函数计算电路仅完成归一化指数函数(Softmax)每个向量的近似计算和各向量累加和的计算,最终每个向量与累加和的除法计算由神经网络处理系统输出模块完成。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (10)
1.一种神经网络激活函数计算电路,其特征在于,包括:输入缓存模块、地址映射单元、参数查找表LUT、寄存器、计算单元、输出缓存模块和控制逻辑模块;
输入缓存模块:用于缓存接收到的输入神经元Nin,在激活函数计算时,在控制逻辑模块控制下读出神经元X并发送给地址映射单元;
地址映射单元:在控制逻辑模块的控制下根据神经元X的值产生参数查找表LUT地址Addr发送给参数查找表,并将神经元X发送给寄存器进行暂存;
参数查找表LUT:用于存储激活函数进行分段线性插值计算时,所需的参数{a,b},并在控制逻辑模块的控制下读出参数{a,b}发送给计算单元;
寄存器:接收并暂存来自地址映射单元发送的神经元X,并输出神经元X到计算单元;
计算单元:接收来自参数查找表LUT的参数{a,b}和来自寄存器的神经元X,采用分段线性插值方法,得到激活函数计算结果Y,并将激活函数计算结果Y发送给输出缓存模块;
输出缓存模块:在控制逻辑模块的控制下接收并缓存计算单元输出的激活函数计算结果Y,并根据外部神经网络处理系统控制模块发送的读出信号Bout_Rd将激活函数计算结果Y输出给外部神经网络处理系统输出模块;
控制逻辑模块:接收外部神经网络处理系统控制模块发送的激活函数操作码AF_OP,神经元数量AF_Num以及加载信号Load,产生激活函数计算时各模块的控制信号并输出给对应模块,以及产生归一化指数函数Softmax累加和计算完毕信号Cusum_End输出给神经网络处理系统输出模块。
2.根据权利要求1所述的一种神经网络激活函数计算电路,其特征在于:所述计算单元的分段线性插值计算的方法,具体是将激活函数的定义域划分成多个区间,并且在每个区间上采用一次函数Y=a*X+b;其中,a和b为来自参数查找表LUT的参数。
3.根据权利要求1~2之一所述的一种神经网络激活函数计算电路,其特征在于:所述神经网络激活函数计算电路中的输入神经元Nin,计算过程中涉及的神经元信号X,参数查找表LUT中存储的参数a和b,以及计算单元输出计算结果Y信号等均为16位定点数,采用二进制补码表示;具体的16位定点数据格式定义为:其中[15]位为符号位,由S表示;[14:10]位为整数部分,由{I4,I3,I2,I1,I0}表示;[9:0]位为小数部分,由{F9,F8,F7,F6,……F0}表示。
4.根据权利要求3所述的一种神经网络激活函数计算电路,其特征在于:所述的输入缓存模块采用同步FIFO设计;输入缓存模块接收来自神经网络处理系统计算阵列输出的神经元数据Nin,并将输入缓存满标志信号Bin_Full发送给神经网络处理系统;神经网络处理系统在输入缓存满标志信号Bin_Full无效时并且输入缓存写信号Bin_Wr有效时,将输入神经元信号Nin写入输入缓存模块;在激活函数计算时,控制逻辑模块根据接收输入缓存空标志信号Bin_Empty并在其无效并且输入缓存读信号Bin_Rd有效时,将输入缓存模块中神经元信号X读出并发送给地址映射单元。
5.根据权利要求4所述的一种神经网络激活函数计算电路,其特征在于:所述的地址映射单元接收控制逻辑模块发送的地址映射使能信号AMap_En和激活函数操作码信号AF_OP,以及来自输入缓存模块的神经元信号X,当地址映射使能信号AMap_En有效时,在激活函数操作码信号AF_OP的控制下根据神经元信号X在一个时钟周期内可以直接映射生成参数查找表LUT的地址Addr并输出给参数查找表,同时将神经元信号X发送给寄存器进行暂存;
所述的地址映射单元在接收到的地址映射使能信号AMap_En有效时,根据激活函数操作码信号AF_OP在一个时钟周期内完成从16位神经元信号X到6位参数查找表地址Addr的映射,具体的映射过程为:
两位激活函数操作码信号AF_OP[1:0]产生参数查找表地址Addr的高两位Addr[5:4];
当AF_OP=00时,Addr[3:0]={3’b000,S};
当AF_OP=01时,如果S=0,且{I4,I3,I2,I1,I0}=5’b00000,则Addr[3:0]={S,F9,F8,F7};
当AF_OP=2’b 01时,如果S=0,且{I4,I3,I2,I1,I0}≠5’b00000,则Addr[3:0]={S,3’b111};
当AF_OP=2’b 01时,如果S=1,且{I4,I3,I2,I1,I0}=5’b11111,则Addr[3:0]={S,F9,F8,F7};
当AF_OP=2’b 01时,如果S=1,且{I4,I3,I2,I1,I0}≠5’b11111,则Addr[3:0]={S,3’b000};
当AF_OP=2’b 10时,如果S=0,且{I4,I3}=2’b00,则Addr[3:0]={S,I2,I1,I0};
当AF_OP=2’b 10时,如果S=0,且{I4,I3}≠2’b00,则Addr[3:0]={S,3’b111};
当AF_OP=2’b 10时,如果S=1,且{I4,I3}=2’b11,则Addr[3:0]={S,I2,I1,I0};
当AF_OP=2’b 10时,如果S=1,且{I4,I3}≠2’b11,则Addr[3:0]={S,3’b000};
当AF_OP=2’b 11时,如果S=0,且{I4,I3,I2}=3’b000,则Addr[3:0]={S,,I1,I0,F9};
当AF_OP=2’b 11时,如果S=0,且{I4,I3,I2}≠3’b000,则Addr[3:0]={S,3’b111};
当AF_OP=2’b 11时,如果S=1,且{I4,I3,I2}=3’b111,则Addr[3:0]={S,,I1,I0,F9};
当AF_OP=2’b 11时,如果S=1,且{I4,I3,I2}≠3’b111,则Addr[3:0]={S,3’b000}。
6.根据权利要求5所述的一种神经网络激活函数计算电路,其特征在于:所述激活函数操作码信号AF_OP为两位二进制位表示,AF_OP=00时,为带参数的线性整流单元PReLU计算;AF_OP=01时,为归一化指数函数Softmax计算;AF_OP=10时,为Sigmoid函数计算;AF_OP=11时,为双曲正切函数Tanh计算。
7.根据权利要求6所述的一种神经网络激活函数计算电路,其特征在于:所述参数查找表采用ROM设计,寄存器采用D触发器设计;参数查找表在控制逻辑模块发送的查找表读信号LUT_Rd的控制下根据地址映射单元发送的地址Addr读出进行分段线性插值计算的两个参数{a,b}发送给计算单元;寄存器接收来自地址映射单元的神经元信号X进行暂存,并发送给计算单元。
8.根据权利要求7所述的一种神经网络激活函数计算电路,其特征在于:所述计算单元接收来自参数查找表的参数信号{a,b}以及寄存器暂存的神经元信号X,在控制逻辑模块发出的计算使能信号Compute_En和归一化指数函数Softmax计算时的累加和使能信号CuSum_En的控制下完成线性函数Y=a*X+b的计算,并将激活函数计算结果Y发送给输出缓存模块,以及将归一化指数函数Softmax计算时的累加和CuSum直接输出给神经网络处理系统输出模块。
9.根据权利要求8所述的一种神经网络激活函数计算电路,其特征在于:所述的输出缓存模块接收来自计算单元输出激活函数计算结果Y,控制逻辑模块发送的输出缓存写信号Bout_Wr,以及神经网络处理系统输出模块发送的输出缓存读信号Bout_Rd;并将输出缓存满标志信号Bout_Full输出给控制逻辑模块,将输出缓存空标志信号Bout_Empty输出给神经网络处理系统输出模块;当输出缓存满标志Bout_Full无效,且输出缓存写信号Bout_Wr有效时将激活函数计算结果Y写入输出缓存模块中;当输出缓存空标志Bout_Empty无效,且输出缓存读信号Bout_Rd有效时将输出缓存模块中存储的激活函数计算结果Nout输出给神经网络处理系统输出模块。
10.一种神经网络处理系统,所述神经网络处理系统为神经网络处理器或深度学习算法加速器,其特征在于,利用如权利要求9所述的一种神经网络激活函数计算电路计算神经网络激活函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910780338.6A CN110610235B (zh) | 2019-08-22 | 2019-08-22 | 一种神经网络激活函数计算电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910780338.6A CN110610235B (zh) | 2019-08-22 | 2019-08-22 | 一种神经网络激活函数计算电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110610235A true CN110610235A (zh) | 2019-12-24 |
CN110610235B CN110610235B (zh) | 2022-05-13 |
Family
ID=68889852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910780338.6A Active CN110610235B (zh) | 2019-08-22 | 2019-08-22 | 一种神经网络激活函数计算电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110610235B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111401532A (zh) * | 2020-04-28 | 2020-07-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种卷积神经网络推理加速器及加速方法 |
CN112651497A (zh) * | 2020-12-30 | 2021-04-13 | 深圳大普微电子科技有限公司 | 一种基于硬件芯片的激活函数处理方法、装置及集成电路 |
CN112651496A (zh) * | 2020-12-30 | 2021-04-13 | 深圳大普微电子科技有限公司 | 一种处理激活函数的硬件电路及芯片 |
WO2021136685A1 (en) * | 2020-01-03 | 2021-07-08 | Nokia Technologies Oy | Novel activation function implementation |
CN113379031A (zh) * | 2021-06-01 | 2021-09-10 | 北京百度网讯科技有限公司 | 神经网络的处理方法、装置、电子设备和存储介质 |
WO2021229321A1 (en) * | 2020-05-13 | 2021-11-18 | International Business Machines Corporation | First-order logical neural networks with bidirectional inference |
CN113935480A (zh) * | 2021-11-12 | 2022-01-14 | 成都甄识科技有限公司 | 面向神经网络在线学习的激活函数加速处理单元 |
GB2604142A (en) * | 2021-02-25 | 2022-08-31 | Imagination Tech Ltd | Implementation of softmax and exponential in hardware |
US11494634B2 (en) | 2020-05-13 | 2022-11-08 | International Business Machines Corporation | Optimizing capacity and learning of weighted real-valued logic |
CN116432711A (zh) * | 2023-02-13 | 2023-07-14 | 杭州菲数科技有限公司 | SiLU激活函数的硬件实现方法、装置及计算设备 |
CN111581593B (zh) * | 2020-04-21 | 2023-09-05 | 天津大学 | 可配置重用的分段式查找表激活函数实现装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170103315A1 (en) * | 2015-05-21 | 2017-04-13 | Google Inc. | Vector computation unit in a neural network processor |
CN108345934A (zh) * | 2018-01-16 | 2018-07-31 | 中国科学院计算技术研究所 | 一种用于神经网络处理器的激活装置及方法 |
CN108921288A (zh) * | 2018-05-04 | 2018-11-30 | 中国科学院计算技术研究所 | 神经网络激活处理装置和基于该装置的神经网络处理器 |
US20180373977A1 (en) * | 2015-12-21 | 2018-12-27 | Commissariat a l'énergie atomique et aux énergies alternatives | Optimized neuron circuit, and architecture and method for executing neural networks |
CN109816105A (zh) * | 2019-01-16 | 2019-05-28 | 北京时代民芯科技有限公司 | 一种可配置的神经网络激活函数实现装置 |
-
2019
- 2019-08-22 CN CN201910780338.6A patent/CN110610235B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170103315A1 (en) * | 2015-05-21 | 2017-04-13 | Google Inc. | Vector computation unit in a neural network processor |
US20180373977A1 (en) * | 2015-12-21 | 2018-12-27 | Commissariat a l'énergie atomique et aux énergies alternatives | Optimized neuron circuit, and architecture and method for executing neural networks |
CN108345934A (zh) * | 2018-01-16 | 2018-07-31 | 中国科学院计算技术研究所 | 一种用于神经网络处理器的激活装置及方法 |
CN108921288A (zh) * | 2018-05-04 | 2018-11-30 | 中国科学院计算技术研究所 | 神经网络激活处理装置和基于该装置的神经网络处理器 |
CN109816105A (zh) * | 2019-01-16 | 2019-05-28 | 北京时代民芯科技有限公司 | 一种可配置的神经网络激活函数实现装置 |
Non-Patent Citations (4)
Title |
---|
BABAK ZAMANLOOY ET AL.: "Efficient VLSI Implementation of Neural Networks", 《IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS》 * |
PATRICK SANTOS ET AL.: "Artificial neural network acceleration on FPGA using custom", 《2011 24TH CANADIAN CONFERENCE ON ELECTRICAL AND COMPUTER》 * |
王巍等: "卷积神经网络(CNN)算法的FPGA并行结构设计", 《微电子学与计算机》 * |
胡飞等: "基于忆阻器交叉阵列的卷积神经网络电路设计", 《计算机研究与发展》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021136685A1 (en) * | 2020-01-03 | 2021-07-08 | Nokia Technologies Oy | Novel activation function implementation |
CN111581593B (zh) * | 2020-04-21 | 2023-09-05 | 天津大学 | 可配置重用的分段式查找表激活函数实现装置 |
CN111401532A (zh) * | 2020-04-28 | 2020-07-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种卷积神经网络推理加速器及加速方法 |
US11494634B2 (en) | 2020-05-13 | 2022-11-08 | International Business Machines Corporation | Optimizing capacity and learning of weighted real-valued logic |
US12045319B2 (en) | 2020-05-13 | 2024-07-23 | International Business Machines Corporation | First-order logical neural networks with bidirectional inference |
WO2021229321A1 (en) * | 2020-05-13 | 2021-11-18 | International Business Machines Corporation | First-order logical neural networks with bidirectional inference |
AU2021269906B2 (en) * | 2020-05-13 | 2023-05-11 | International Business Machines Corporation | First-order logical neural networks with bidirectional inference |
GB2610976A (en) * | 2020-05-13 | 2023-03-22 | Ibm | First-order logical neural networks with bidirectional inference |
CN112651497A (zh) * | 2020-12-30 | 2021-04-13 | 深圳大普微电子科技有限公司 | 一种基于硬件芯片的激活函数处理方法、装置及集成电路 |
CN112651496A (zh) * | 2020-12-30 | 2021-04-13 | 深圳大普微电子科技有限公司 | 一种处理激活函数的硬件电路及芯片 |
EP4050522A1 (en) * | 2021-02-25 | 2022-08-31 | Imagination Technologies Limited | Implementation of softmax and exponential in hardware |
GB2604142B (en) * | 2021-02-25 | 2023-02-22 | Imagination Tech Ltd | Implementation of softmax and exponential in hardware |
GB2604142A (en) * | 2021-02-25 | 2022-08-31 | Imagination Tech Ltd | Implementation of softmax and exponential in hardware |
CN113379031A (zh) * | 2021-06-01 | 2021-09-10 | 北京百度网讯科技有限公司 | 神经网络的处理方法、装置、电子设备和存储介质 |
CN113935480B (zh) * | 2021-11-12 | 2022-10-18 | 成都甄识科技有限公司 | 面向神经网络在线学习的激活函数加速处理单元 |
CN113935480A (zh) * | 2021-11-12 | 2022-01-14 | 成都甄识科技有限公司 | 面向神经网络在线学习的激活函数加速处理单元 |
CN116432711A (zh) * | 2023-02-13 | 2023-07-14 | 杭州菲数科技有限公司 | SiLU激活函数的硬件实现方法、装置及计算设备 |
CN116432711B (zh) * | 2023-02-13 | 2023-12-05 | 杭州菲数科技有限公司 | SiLU激活函数的硬件实现方法、装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110610235B (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110610235B (zh) | 一种神经网络激活函数计算电路 | |
JP7405493B2 (ja) | 区分線形近似を用いる深層ニューラルネットワークアーキテクチャ | |
US9891886B2 (en) | Split-path heuristic for performing a fused FMA operation | |
Jiao et al. | Energy-efficient neural networks using approximate computation reuse | |
WO2018192500A1 (zh) | 处理装置和处理方法 | |
Bank-Tavakoli et al. | Polar: A pipelined/overlapped fpga-based lstm accelerator | |
WO2019015541A1 (zh) | 一种计算方法及相关产品 | |
Mittal et al. | A survey of encoding techniques for reducing data-movement energy | |
CN111581593B (zh) | 可配置重用的分段式查找表激活函数实现装置 | |
US10579338B2 (en) | Apparatus and method for processing input operand values | |
CN109325590B (zh) | 用于实现计算精度可变的神经网络处理器的装置 | |
Li et al. | An efficient hardware architecture for activation function in deep learning processor | |
US10303735B2 (en) | Systems, apparatuses, and methods for K nearest neighbor search | |
TW201118725A (en) | Microprocessor and method for enhanced precision sum-of-products calculation on a microprocessor | |
WO2023040389A1 (zh) | 转数方法、存储介质、装置及板卡 | |
US9626334B2 (en) | Systems, apparatuses, and methods for K nearest neighbor search | |
Younes et al. | An efficient selection-based KNN architecture for smart embedded hardware accelerators | |
CN112445454A (zh) | 使用范围特定的系数集字段执行一元函数的系统 | |
Arvind et al. | Hardware implementation of hyperbolic tangent activation function for floating point formats | |
CN104823153B (zh) | 用于执行指令的处理器、归一化加法运算的方法、通信设备、机器可读介质、用于处理指令的设备和设备 | |
Shivapakash et al. | A power efficiency enhancements of a multi-bit accelerator for memory prohibitive deep neural networks | |
US20210150328A1 (en) | Hierarchical Hybrid Network on Chip Architecture for Compute-in-memory Probabilistic Machine Learning Accelerator | |
Shivapakash et al. | A power efficient multi-bit accelerator for memory prohibitive deep neural networks | |
CN114201140B (zh) | 指数函数处理单元、方法和神经网络芯片 | |
CN115268832A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |