CN110888623A - 数据转换方法、乘法器、加法器、终端设备及存储介质 - Google Patents
数据转换方法、乘法器、加法器、终端设备及存储介质 Download PDFInfo
- Publication number
- CN110888623A CN110888623A CN201911163157.5A CN201911163157A CN110888623A CN 110888623 A CN110888623 A CN 110888623A CN 201911163157 A CN201911163157 A CN 201911163157A CN 110888623 A CN110888623 A CN 110888623A
- Authority
- CN
- China
- Prior art keywords
- bits
- byte
- floating point
- point number
- new standard
- 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
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/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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/50—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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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
Abstract
Description
技术领域
本发明涉及数据转换技术领域,尤其涉及一种数据转换方法、乘法器、加法器、终端设备及存储介质。
背景技术
以图像识别和自然语言处理为主要应用的深度神经网络算法在社会经济中日益普及。深度神经网络对计算设备的计算性能有较高的要求,如何降低算法的计算开销已经成为学术界和工业界所共同关心的问题。
近年来,基于卷积神经网络的深度学习算法在机器视觉、自然语言处理等领域取得了令人印象深刻的成果。卷积神经网络通过复杂的神经网络设计和增加神经网络的深度,从图片或视频中提取关键特征,并最终实现对图片进行分类或目标检测。卷积运算通常是卷积神经网络中计算开销最大的函数,而乘法运算又是卷积运算中计算开销最大的步骤。因此,高效的乘法器设计和实现是降低深度卷积神经网络计算开销的关键因素。
在深度神经网络对输入信号的加工过程中,网络中的大量神经元能够提取并保存局部特征。这些神经元所使用的数据格式通常使用单精度浮点数格式或定点数格式。单精度浮点数格式的工业界标准是IEEE-754标准,在这种标准下,带小数的数字采用科学计数法进行表示,这种数据格式的优势在于数据的表示范围较大。比如,IEEE-754单精度浮点数可以表达-2127~-2-126之间或2-126~2127之间的实数。传统的单精度浮点数格式尽管精度较高,但也由于其并未针对深度神经网络进行专门设计,导致了其运算过程的高开销及硬件实现的复杂。
由于深度神经网络中的神经元具有冗余的特性,降低神经元的数据精度并不会对深度神经网络的输出精度产生明显的影响,但却可以显著降低深度神经网络的计算开销。在计算的过程中,基于卷积神经网络的深度学习算法与传统的算法有所区别,主要体现在:(1)基于卷积神经网络的深度学习算法具有一定的冗余特性,降低运算过程的数据精度并不会显著影响算法的计算结果;(2)基于卷积神经网络的深度学习算法在计算的过程中,代表神经元和连接权重的实数的值域较小,远远小于2127;(3)受到反向传播算法的限制,基于卷积神经网络的深度学习算法在计算的过程中,代表神经元和连接权重的实数在迭代的过程中呈现出“大部分实数的指数以相同的数量进行偏移”的现象。由于IEEE-754浮点数数据格式是为传统算法所设计,所以并未考虑和利用到基于卷积神经网络的深度学习算法的上述特性。相应地,对于基于卷积神经网络的深度学习算法而言,为IEEE-754浮点数数据格式所设计的加法运算器和乘法运算器存在着“过度设计”的可能。
发明内容
为了解决上述问题,本发明提出了一种数据转换方法、乘法器、加法器、终端设备及存储介质。
具体方案如下:
一种数据转换方法,用于将浮点数转换为新标准数,该方法包括:
输入浮点数F;
将输入的浮点数F按照以下转化规则进行转换,转换规则为:
其中,ai为整型数,每个整型数均为n比特,i表示序号,k表示整型数的个数;
根据转换后的浮点数F,设定转换为的新标准数为k个n比特的整型数ai从高位到低位采用降序或升序排列而成的数;当浮点数F=0时,k个n比特的整型数均为负无穷;
输出转换后的所述新标准数。
进一步的,浮点数F的符号为正号时采用降序排列、为负号时采用升序排列。
进一步的,当n比特的整数型为负无穷时,该整数型用n个0表示。
进一步的,新标准数的其中一个整型数等于浮点数F的阶码,其他整型数根据浮点数F的尾数从高位向低位进行按位扫描得出。
进一步的,设定k=2,n=8,则新标准数由第一字节a1和第二字节a2两个字节组成,则将浮点数转换为新标准数的具体转换过程包括以下步骤:
步骤1、判断浮点数是否等于0,如果是,将新标准数中的第一字节a1和第二字节a2均设置为负无穷,结束;否则,进入步骤2;
步骤2、设定第一字节a1等于浮点数的阶码,设定变量count=1;
步骤3、判断浮点数的尾数的第24-count位是否等于1,如果是,进入步骤6;否则,进入步骤4;
步骤4、判断count=23是否成立,如果是,将第二字节a2设置为负无穷,进入步骤11;否则,进入步骤5;
步骤5、设定count=count+1,返回步骤3;
步骤6、设定第二字节a2=a1-count;
步骤7、判断浮点数的尾数的第23-count位是否等于0,如果是,进入步骤11;否则,进入步骤8;
步骤8、设定第二字节a2=a2+1;
步骤9、判断a1>a2是否成立,如果是,进入步骤11;否则,进入步骤10;
步骤10、设定第一字节a1=a1+1,第二字节a2为负无穷大量;
步骤11、判断浮点数的符号位是否为0,如果是,设定新标准数的高8位为第一字节a1、低8位为第二字节a2;否则,设定新标准数的高8位为第二字节a2、低8位为第一字节a1。
进一步的,将新标准数转换为浮点数的具体转换过程包括以下步骤:
步骤1、判断新标准数的高8位是否等于低8位,如果是,则设定浮点数等于0,结束;否则进入步骤2;
步骤2、判断新标准数的高8位是否大于低8位,如果是,则将原浮点数的符号位设为0,将高8为设为第一字节a1,将低8位设为第二字节a2;否则,将原浮点数的符号位设为1,将高8位设为第二字节a2,将低8位设为第一字节a1;
步骤3、设定浮点数的阶码等于第一字节a1;
步骤4、判断第二字节a2是否等于负无穷,如果是,将浮点数的尾数设为00000000000000000000000,结束;否则,进入步骤5;
步骤5、计算第一字节a1和第二字节a2的差值s:s=a1-a2,设定浮点数的尾数为二进制常量000 0000 0000 0000 0000 0001循环右移s次得到,结束。
一种终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述数据转换方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现本发明实施例上述数据转换方法的步骤。
一种数据转换方法的用途,将浮点数经由本发明实施例上述数据转换方法转换为新标准数,转换后的所述新标准数用于神经网络模型的计算。
一种乘法器,用于本发明实施例所述的数据转换方法转换的新标准数的乘积运算,包括预处理模块、内核模块和乘积符号判定模块。
所述预处理模块的输入为两个新标准数,将每个新标准数拆分为k个n比特的整型数,并将k个n比特的整型数按大小顺序排列,输出每个新标准数对应的排序后的n比特的整型数,且根据两个新标准数对应的较高位的n比特的整型数与较低位的n比特的整型数的大小关系是否一致,输出1比特的符号信息。
所述内核模块的输入为预处理模块输出的2*k个n比特的整型数,输出为另外2*k个n比特的整型数,其工作原理为:计算输入的2*k个n比特的整型数两两相加的和,判断进行相加的两个n比特的整型数是否有至少一个等于负无穷,如果是,则设定相加的和为输出值;否则,设定相加的和与阶码的偏移量的差值为输出值。
所述乘积符号判定模块的输入为内核模块输出的2*k个n比特的整型数和预处理模块输出的符号信息,输出为输入的2*k个n比特的整型数经过升序或降序排列后的2*k个n比特的整型数。
一种加法器,用于本发明实施例所述的数据转换方法转换的新标准数的加法运算,所述加法器的输入为两个新标准数,输出为两个新标准数的和,所述加法器的工作原理为:将每个新标准数拆分成k个n比特的整形数后,将每个整型数从对数域转换为线性域后,将转换后的2*k个线性域数据结果进行相加得到加法器的输出。
本发明采用如上技术方案,既保留了单精度浮点数的数值表示范围大的优点,又降低了浮点数乘法运算的计算开销,因此能够降低深度神经网络算法的计算开销,为深度神经网络算法在低成本、低功耗设备上的部署提供了一种解决方案。
附图说明
图1所示为本发明实施例一中浮点数转换成新标准数的示意图。
图2所示为本发明实施例一中新标准数转换成浮点数的示意图。
图3所示为本发明实施例二中乘法器的示意图。
图4所示为本发明实施例二中预处理模块的示意图。
图5所示为本发明实施例二中内核模块的示意图。
图6所示为本发明实施例二中乘积符号判定模块的示意图。
图7所示为本发明实施例三中加法器的示意图。
图8所示为本发明实施例三中加法器的查表模块的示意图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
现结合附图和具体实施方式对本发明进一步说明。
实施例一:
本发明实施例提供了一种基于卷积神经网络模型的图像识别的数据转换方法,用于通过卷积神经网络对网络输入的图像或视频中提取关键特征,以实现对图像进行分类或目标检测。由于卷积运算通常是卷积神经网络中计算开销最大的函数,乘法运算又是卷积运算中计算开销最大的步骤,因此,该实施例中提出的数据转换方法将用于卷积运算的浮点数转换为新标准数格式后进行运算。
具体转换方法如下:
(1)通过该数据格式可以得知:k值越大,数据的精度越高,同时运算器硬件设计的复杂度也越高,所以该实施例中针对卷积神经网络的对精度要求不高的特性,令k=2,同时针对IEEE754的单精度浮点数标准中的阶码为8比特的特点,令n=8。
(2)由于有些数据仅需要一、两个n比特的整型数来表示,如数字0.5=2-1,因此,通过转换为的新标准数仅需一个整型数-1来表示,但该实施例中需要用两个整型数来表示一个数据,那就需要再增加一项,该项表示的数学意义为0,而0是2的负无穷次方,因此额外增加的新标准数中的其他整型数应为负无穷。
考虑到传统浮点标准的阶码的组织形式是无符号整型数加上特定偏移量,特别地,在IEEE754中,偏移量为0x7F,即0被表示为0x7F,1被表示为0x80,0x00即为阶码最小值-127,因此,该实施例中将0x00定义为负无穷,在满足该浮点数据格式数学意义上的同时,保持尽可能大的数据表示范围。
由于k=2,n=8,因此浮点数F有2个8比特(1字节)的整行数a1和a2排成的序列来表示,将a1和a2中数值较大的一个设定为第一字节、数值较小的一个设定为第二字节。该方式设置的优势为存在一种简洁高效的IEEE754单精度浮点数与新标准数的双向转换方案。
1、参考图1,将浮点数转换成新标准数时,按照以下步骤进行:
步骤1、判断原浮点数是否等于0,如果是,将新标准数中的第一字节a1和第二字节a2均设置为负无穷0x00,结束;否则,进入步骤2;
即原浮点数0,转换的新标准数在计算机内存中的存储格式为:
00000000 00000000
步骤2、设定第一字节a1等于原浮点数的阶码,设定变量count=1;
步骤3、判断原浮点数的尾数的第(24-count)位是否等于1,如果是,进入步骤6;否则进入步骤4;
步骤4、判断count=23是否成立,如果是,则将第二字节a2设置为负无穷0x00,进入步骤11;
步骤5、设定count=count+1,返回步骤3;
步骤6、设定a2=a1-count;
步骤7、判断原浮点数的尾数的第(23-count)位是否等于0,如果是,进入步骤11;否则,进入步骤8;
步骤8、a2=a2+1;
步骤9、判断a1>a2是否成立,如果是,进入步骤11;
步骤10、a1=a1+1,a2设置为负无穷0x00;
步骤11、判断原浮点数的符号位是否为0,如果是,设定新标准数的高8位为第一字节a1、低8位为第二字节a2;否则,设定新标准数的高8位为第二字节a2、低8位为第一字节a1。
例1:
下面以浮点数-0.96582为例进行说明,其IEEE754格式为:10111111011101110100000000000000,共32位,从右往左数,第32位表示原浮点数的符号位,1表示负数,0表示正数,该实施例中其第32位为1,则该原浮点数为负数。第24~31位共8位表示该原浮点数的阶码。第1~23位共23位表示该原浮点数的尾数。因此该浮点数-0.96582的阶码为01111110,尾数为11101110100000000000000。
(1):该浮点数-0.96582非零;
(2):设定第一字节a1等于阶码01111110,设定count=1;
(3):原浮点数的尾数为11101110100000000000000,其第24-count=23位等于1;
(4):设定第二字节a2=a1-count=a1-1=01111110-1=01111101;
(5):尾数的第23-count=22位为1,不等于0;
(6):设定第二字节a2=a2+1=01111101+1=01111110;
(7):第一字节a1等于第二字节a2;
(8):设定第一字节a1=a1+1=01111110+1=01111111;第二字节a2设为负无穷,即0x00;
(9):符号位为1,设定第一字节a1置于低8位,第二字节a2置于高8位;
浮点数-0.96582在新标准格式下为:00000000 01111111,其数学意义为-1,与原浮点数的相对误差约为:3.5%。
例2:
下面以浮点数0.5为例进行说明,其IEEE754格式为:
0 01111110 00000000000000000000000
其符号位为0,阶码为01111110,尾数为00000000000000000000000。
(1):该浮点数0.5非零;
(2):设定第一字节a1等于阶码01111110,设定count=1;
(3):尾数的第24-count=23位不等于1;
(4):count=23不成立;
(5):设定count=count+1=1+1=2;
(6):尾数的第24-count=22位不等于1;
……..
(46):count=23成立,将设置第二字节a2=00000000;
(47):符号位为0,设定第一字节a1置于高8位,第二字节a2置于低8位;
浮点数0.5在新标准格式下为:01111110 00000000,其数学意义为0.5,与原浮点数的相对误差约为:0%。
2、参考图2,将新标准数转换为原浮点数时,按照以下步骤进行:
步骤1、判断新标准数的高8位是否等于低8位,如果是,则设定原浮点数等于0,结束;否则进入步骤2;
步骤2、判断新标准数的高8位是否大于低8位,如果是,则将原浮点数的符号位设为0,将高8为设为第一字节a1,将低8位设为第二字节a2;否则,将将原浮点数的符号位设为1,将高8位设为第二字节a2,将低8位设为第一字节a1;
步骤3、设定原浮点数的阶码等于第一字节a1;
步骤4、判断第二字节a2是否等于负无穷0x00,如果是,将浮点数的尾数中的23位全部设为0,即尾数为00000000000000000000000,结束;否则,进步步骤5;
步骤5、计算第一字节a1和第二字节a2的差值s:s=a1-a2,设定原浮点数的尾数等于二进制常量000 0000 0000 0000 0000 0001循环右移s次得到,结束。
例3:
以新标准数0.75为例进行说明,其新标准格式为:
01111110 01111101
(1):高8位不等于低8位;
(2):高8位大于低8位,将原浮点数的符号位设为0,同时令第一字节a1等于高8位,即01111110,令第二字节a2等于低8位,即01111101;
(3):设定原浮点数的阶码等于第一字节a1,即01111110;
(4):第二字节a2非零;
(5):第一字节和第二字节的差值s=a1-a2=01111110-01111101=1,因此,设定原浮点数的尾数等于二进制常量000 0000 0000 0000 0000 0001循环右移1次得到,即为1000000 0000 0000 0000 0000。
因此,得到的原浮点数的IEEE754格式为:
0 01111110 10000000000000000000000
例4:
以新标准数-0.0625为例进行说明,其新标准格式为:
00000000 01111011
(1):高8位不等于低8位;
(2):高8位小于低8位,将原浮点数的符号位设为1,同时令第一字节a1等于低8位,即01111011,令第二字节a2等于高8位,即00000000;
(3):设定原浮点数的阶码等于第一字节a1,即01111011;
(4):第二字节a2等于零,设定原浮点数的尾数等于00000000000000000000000,结束。
因此,得到的原浮点数的IEEE754标准的格式为:
1 01111011 00000000000000000000000
理论误差:
将浮点数转换为新标准数时存在一定程度的理论误差,误差范围为是[0,14.3%),误差期望是5.4%,具体推导过程为:
1.浮点数的符号位不会在转换过程中出现误差,据此,下面仅关注IEEE754标准下的浮点数的阶码e和尾数f,进一步地,存在以下两类情形:
(2)阶码e=x,尾数=101 1111 1111 1111 1111 1111,此时IEEE754标准下的浮点数的理论值T为:
T=2x+2x-1+2x-3+2x-4+...+2x-22+2x-23
新标准数的实际值R为:
R=2x+2x-1
进一步化简得到:
(3)另外,当尾数的最高位和次高位为1,其余为0时,该标准转换方法则会因进位产生最大误差,此时IEEE754标准下的浮点数的理论值T为:
2x+2x-1+2x-2
新标准数的实际值R为:
2x+1
综合上述三点,该实施例的标准转换方法的理论误差范围是:[0,14.3%)。
2.下面进一步探讨该标准转换方案的误差期望。
将尾数f分成两类情形:
case1:f=1XX XXXX XXXX XXXX XXXX XXXX
Case0:f=0XX XXXX XXXX XXXX XXXX XXXX
其中,X表示0或1,且case1和case0各占50%的概率。
(1)针对case1,可知其X序列中每存在一个值为1的位,就对应存在一点误差,由此可知case1的相对误差计算公式为:
进一步化简得到:
即case1的误差期望。
(2)针对case0,将尾数f再分成两类情形:
case01:f=01X XXXX XXXX XXXX XXXX XXXX
case00:f=00X XXXX XXXX XXXX XXXX XXXX
其中,case01和case00各占25%的概率。
同理可得case01的相对误差计算公式为:
进一步可得case01的误差期望为:
针对case00,将尾数f再分成两类情形:
case001:f=001XXXX XXXX XXXX XXXX XXXX
case000:f=000XXXX XXXX XXXX XXXX XXXX
其中case001和case000各占12.5%的概率,
同理可得case001的误差期望为:
以此类推,可知整个标准转换方法的误差期望P为:
本发明实施例一既保留了单精度浮点数的数值表示范围大的优点,又降低了浮点数乘法运算的计算开销,因此能够降低深度神经网络算法的计算开销,为深度神经网络算法在低成本、低功耗设备上的部署提供了一种解决方案。
需要说明的是,本实施例中的数据转换方法不仅可以应用于卷积神经网络中,也可以应用于其他神经网络算法中来降低运算成本,在此不做限制。
实施例二:
参考图3,本发明还提供一种乘法器,用于实现新标准数之间的乘法运算,包括预处理模块、内核模块和符号判定模块。
1.所述预处理模块的作用是为内核模块提供两个降序排列的新标准数。参考图4,所述预处理模块的输入为待相乘的两个16比特的新标准数xy和pq,输出为1比特的符号信息和4个8比特的整型数:a1、a2、b1和b2,其中,a1为新标准数xy的两个字节中较大的字节,a2为新标准数xy的两个字节中较小的字节,b1为新标准数pq的两个字节中较大的字节,b2为新标准数pq的两个字节中较小的字节,即满足a1>a2且,b1>b2。
所述符号信息的计算方法为:分别判断两个新标准数xy和pq的高8位字节是否大于低8位字节,如果两个新标准数xy和pq的判断结果相同,即xy和pq的高8位字节均大于低8位字节或均小于低8位字节,则设定符号信息为0;否则,设定符号信息为1。
2.参考图5,所述内核模块的输入为预处理模块输出的4个8比特整型数a1、a2、b1和b2,输出为4个8比特整型数a1b1、a1b2、a2b1和a2b2。
其工作原理为:计算输入的四个整型数两两相加的和,判断进行相加的两个整型数是否有至少一个等于负无穷,如果是,则设定相加的和为输出值;否则,设定相加的和与阶码的偏移量即0x7F的差值为输出值。
减去0x7f是为了将带偏移量的整型数转换成有符号整型数。在IEEE754中,浮点数的阶码是带有偏移量的,也即0被表示为0x7F,1被表示为0x80,-1被表示为0x7e,减去0x7f之后,0被表示为0x00,1被表示为0x01,-1被表示为0xff,即常规的有符号整型数,方便理解与后续计算。
3.参考图6,所述乘积符号判定模块的输入为内核模块的输出的4个8比特的整型数a1b1、a1b2、a2b1和a2b2,和来自预处理模块的1比特的符号信息,输出为输入的4个8比特的整型数经过升序或降序排列后的4个8比特的整型数p1、p2、p3和p4。该实施例中,当符号信息为1时采用降序排列,当符号信息为0时采用升序排列。
实施例三:
本发明还提供一种加法器,用于实现新标准数之间的加法运算。
由于进行加法运算时,对数域的数据要比线性域的数据困难得多,因此,该实施例中在加法运算之前,首先把对数域数据翻译成线性域数据,在线性域形式下完成加法。
所述对数域数据即该数据是一个指数,以2为底,以它为指数的幂才是该对数域数据的真正的数学意义,例如:对数域数据为-3,它表示0.125,即2的-3次方。
对数域数据的每一次自加一,数学意义上等于乘以2,例如:-3自加三次等到0,数学意义等于0.125的四倍,即为1。
所述线性域数据可以简单理解为最常规的那种二进制数字系统,例如0x05,数学意义就是数字5,它自加一就变成0x06,也就是数字6。
在进行加法运算时,如果加数是对数域数据,一个-3加上另一个-3,其值为-2,即2-3+2-3=0.125+0.125=0.25=2-2。因此,该实施例中的加法器实现的逻辑为:(-3)+(-3)=(-2)。
参考图7和图8,加法器的输入为两个新标准数x1y1和x2y2,则加法器实现的原理为:将两个新标准数x1y1和x2y2拆分为4个8比特的整型数后,将每个整型数输入查表模块,以将每个对数域的整型数转换为线性域的数据,将转换后的四个线性域的数据进行相加得到加法器的输出值。
实施例四:
本发明实施例提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。
进一步地,作为一个可执行方案,所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述终端设备的组成结构仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。
进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。
所述终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)以及软件分发介质等。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (10)
2.根据权利要求1所述的数据转换方法,其特征在于:当n比特的整数型为负无穷时,该整数型用n个0表示。
3.根据权利要求1所述的数据转换方法,其特征在于:新标准数的其中一个整型数等于浮点数F的阶码,其他整型数根据浮点数F的尾数从高位向低位进行按位扫描得出。
4.根据权利要求3所述的数据转换方法,其特征在于:设定k=2,n=8,则新标准数由第一字节a1和第二字节a2两个字节组成,则将浮点数转换为新标准数的具体转换过程包括以下步骤:
步骤1、判断浮点数是否等于0,如果是,将新标准数中的第一字节a1和第二字节a2均设置为负无穷,结束;否则,进入步骤2;
步骤2、设定第一字节a1等于浮点数的阶码,设定变量count=1;
步骤3、判断浮点数的尾数的第24-count位是否等于1,如果是,进入步骤6;否则,进入步骤4;
步骤4、判断count=23是否成立,如果是,将第二字节a2设置为负无穷,进入步骤11;否则,进入步骤5;
步骤5、设定count=count+1,返回步骤3;
步骤6、设定第二字节a2=a1-count;
步骤7、判断浮点数的尾数的第23-count位是否等于0,如果是,进入步骤11;否则,进入步骤8;
步骤8、设定第二字节a2=a2+1;
步骤9、判断a1>a2是否成立,如果是,进入步骤11;否则,进入步骤10;
步骤10、设定第一字节a1=a1+1,第二字节a2为负无穷大量;
步骤11、判断浮点数的符号位是否为0,如果是,设定新标准数的高8位为第一字节a1、低8位为第二字节a2;否则,设定新标准数的高8位为第二字节a2、低8位为第一字节a1。
5.根据权利要求3所述的数据转换方法,其特征在于:将新标准数转换为浮点数的具体转换过程包括以下步骤:
步骤1、判断新标准数的高8位是否等于低8位,如果是,则设定浮点数等于0,结束;否则进入步骤2;
步骤2、判断新标准数的高8位是否大于低8位,如果是,则将原浮点数的符号位设为0,将高8为设为第一字节a1,将低8位设为第二字节a2;否则,将原浮点数的符号位设为1,将高8位设为第二字节a2,将低8位设为第一字节a1;
步骤3、设定浮点数的阶码等于第一字节a1;
步骤4、判断第二字节a2是否等于负无穷,如果是,将浮点数的尾数设为00000000000000000000000,结束;否则,进入步骤5;
步骤5、计算第一字节a1和第二字节a2的差值s:s=a1-a2,设定浮点数的尾数为二进制常量000 0000 0000 0000 0000 0001循环右移s次得到,结束。
6.一种终端设备,其特征在于:包括处理器、存储器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1~5中任一所述方法的步骤。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~5中任一所述方法的步骤。
8.一种数据转换方法的用途,其特征在于:将浮点数经由权利要求1~6中任一所述的方法转换为新标准数,转换后的所述新标准数用于神经网络模型的计算。
9.一种乘法器,用于权利要求1~5中任一所述的方法转换的新标准数的乘积运算,其特征在于:包括预处理模块、内核模块和乘积符号判定模块;
所述预处理模块的输入为两个新标准数,将每个新标准数拆分为k个n比特的整型数,并将k个n比特的整型数按大小顺序排列,输出每个新标准数对应的排序后的n比特的整型数,且根据两个新标准数对应的较高位的n比特的整型数与较低位的n比特的整型数的大小关系是否一致,输出1比特的符号信息;
所述内核模块的输入为预处理模块输出的2*k个n比特的整型数,输出为另外2*k个n比特的整型数,其工作原理为:计算输入的2*k个n比特的整型数两两相加的和,判断进行相加的两个n比特的整型数是否有至少一个等于负无穷,如果是,则设定相加的和为输出值;否则,设定相加的和与阶码的偏移量的差值为输出值;
所述乘积符号判定模块的输入为内核模块输出的2*k个n比特的整型数和预处理模块输出的符号信息,输出为输入的2*k个n比特的整型数经过升序或降序排列后的2*k个n比特的整型数。
10.一种加法器,用于权利要求1~5中任一所述的方法转换的新标准数的加法运算,其特征在于:所述加法器的输入为两个新标准数,输出为两个新标准数的和,所述加法器的工作原理为:将每个新标准数拆分成k个n比特的整形数后,将每个整型数从对数域转换为线性域后,将转换后的2*k个线性域数据结果进行相加得到加法器的输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911163157.5A CN110888623B (zh) | 2019-11-25 | 2019-11-25 | 数据转换方法、乘法器、加法器、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911163157.5A CN110888623B (zh) | 2019-11-25 | 2019-11-25 | 数据转换方法、乘法器、加法器、终端设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110888623A true CN110888623A (zh) | 2020-03-17 |
CN110888623B CN110888623B (zh) | 2021-11-23 |
Family
ID=69748612
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911163157.5A Active CN110888623B (zh) | 2019-11-25 | 2019-11-25 | 数据转换方法、乘法器、加法器、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110888623B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199072A (zh) * | 2020-11-06 | 2021-01-08 | 杭州海康威视数字技术股份有限公司 | 一种基于神经网络层的数据处理方法、装置及设备 |
CN112230882A (zh) * | 2020-10-28 | 2021-01-15 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
CN115291834A (zh) * | 2022-07-07 | 2022-11-04 | 华东师范大学 | N进制浮点加法运算系统与方法 |
CN117440154A (zh) * | 2023-12-21 | 2024-01-23 | 之江实验室 | 一种考虑浮点数位拆分的深度图序列压缩方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981854A (zh) * | 2012-11-16 | 2013-03-20 | 天津市天祥世联网络科技有限公司 | 基于浮点数运算内联函数库的神经网络优化方法 |
CN105634499A (zh) * | 2015-12-30 | 2016-06-01 | 广东工业大学 | 一种基于新短浮点型数据的数据转换方法 |
CN106990937A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种浮点数处理装置 |
CN107273090A (zh) * | 2017-05-05 | 2017-10-20 | 中国科学院计算技术研究所 | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 |
CN108055041A (zh) * | 2017-12-22 | 2018-05-18 | 苏州中晟宏芯信息科技有限公司 | 一种数据类型转换电路单元及装置 |
EP3396524A1 (en) * | 2017-04-28 | 2018-10-31 | INTEL Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
CN109633289A (zh) * | 2018-12-28 | 2019-04-16 | 集美大学 | 一种基于倒谱和卷积神经网络的电磁红信息检测方法 |
CN109670582A (zh) * | 2018-12-28 | 2019-04-23 | 四川那智科技有限公司 | 一种全定点化神经网络的设计方法 |
CN109710211A (zh) * | 2018-11-15 | 2019-05-03 | 珠海市杰理科技股份有限公司 | 浮点数据类型转换方法、装置、存储介质及计算机设备 |
CN110163350A (zh) * | 2018-02-13 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
-
2019
- 2019-11-25 CN CN201911163157.5A patent/CN110888623B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981854A (zh) * | 2012-11-16 | 2013-03-20 | 天津市天祥世联网络科技有限公司 | 基于浮点数运算内联函数库的神经网络优化方法 |
CN105634499A (zh) * | 2015-12-30 | 2016-06-01 | 广东工业大学 | 一种基于新短浮点型数据的数据转换方法 |
CN106990937A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种浮点数处理装置 |
EP3396524A1 (en) * | 2017-04-28 | 2018-10-31 | INTEL Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
CN107273090A (zh) * | 2017-05-05 | 2017-10-20 | 中国科学院计算技术研究所 | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 |
CN108055041A (zh) * | 2017-12-22 | 2018-05-18 | 苏州中晟宏芯信息科技有限公司 | 一种数据类型转换电路单元及装置 |
CN110163350A (zh) * | 2018-02-13 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN109710211A (zh) * | 2018-11-15 | 2019-05-03 | 珠海市杰理科技股份有限公司 | 浮点数据类型转换方法、装置、存储介质及计算机设备 |
CN109633289A (zh) * | 2018-12-28 | 2019-04-16 | 集美大学 | 一种基于倒谱和卷积神经网络的电磁红信息检测方法 |
CN109670582A (zh) * | 2018-12-28 | 2019-04-23 | 四川那智科技有限公司 | 一种全定点化神经网络的设计方法 |
Non-Patent Citations (1)
Title |
---|
刘安等: ""浮点格式转换的分析与实现"", 《电脑开发与应用》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112230882A (zh) * | 2020-10-28 | 2021-01-15 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
CN112199072A (zh) * | 2020-11-06 | 2021-01-08 | 杭州海康威视数字技术股份有限公司 | 一种基于神经网络层的数据处理方法、装置及设备 |
CN115291834A (zh) * | 2022-07-07 | 2022-11-04 | 华东师范大学 | N进制浮点加法运算系统与方法 |
CN115291834B (zh) * | 2022-07-07 | 2023-08-22 | 华东师范大学 | N进制浮点加法运算系统与方法 |
CN117440154A (zh) * | 2023-12-21 | 2024-01-23 | 之江实验室 | 一种考虑浮点数位拆分的深度图序列压缩方法 |
CN117440154B (zh) * | 2023-12-21 | 2024-04-19 | 之江实验室 | 一种考虑浮点数位拆分的深度图序列压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110888623B (zh) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110888623B (zh) | 数据转换方法、乘法器、加法器、终端设备及存储介质 | |
TWI701612B (zh) | 用於神經網路中激勵函數的電路系統及其處理方法 | |
EP3853713A1 (en) | Multiply and accumulate circuit | |
JP7244186B2 (ja) | 改良された低精度の2進浮動小数点形式設定 | |
CN107305485B (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
US10949168B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
Li et al. | Efficient FPGA implementation of softmax function for DNN applications | |
CN113076083B (zh) | 数据乘加运算电路 | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
CN116466910A (zh) | 一种基于浮点数的查表方法、装置、电子设备及存储介质 | |
Havaldar et al. | Design of Vedic IEEE 754 floating point multiplier | |
Venkata Dharani et al. | Booth multiplier: the systematic study | |
CN107220025B (zh) | 处理乘加运算的装置和处理乘加运算的方法 | |
CN114201140B (zh) | 指数函数处理单元、方法和神经网络芯片 | |
US11531896B2 (en) | Neural network circuit providing for operations with bit shifting and rounded values of weight information | |
Yang et al. | A low-power approximate multiply-add unit | |
CN114860193A (zh) | 一种用于计算Power函数的硬件运算电路及数据处理方法 | |
CN115658008A (zh) | 一种资源复用型超越函数运算实现方法 | |
Neelima et al. | FIR Filter design using Urdhva Triyagbhyam based on Truncated Wallace and Dadda Multiplier as Basic Multiplication Unit | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
CN112416296A (zh) | 一种用于计算反正切函数的实现方法及装置 | |
US20210334635A1 (en) | Neural network accelerator configured to perform operation on logarithm domain | |
Kim et al. | Applying piecewise linear approximation for DNN non-linear activation functions to Bfloat16 MACs | |
Wang | A unified unsigned/signed binary multiplier |
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 |