CN113296732B - 数据处理方法和装置,处理器及数据搜索方法和装置 - Google Patents
数据处理方法和装置,处理器及数据搜索方法和装置 Download PDFInfo
- Publication number
- CN113296732B CN113296732B CN202010545410.XA CN202010545410A CN113296732B CN 113296732 B CN113296732 B CN 113296732B CN 202010545410 A CN202010545410 A CN 202010545410A CN 113296732 B CN113296732 B CN 113296732B
- Authority
- CN
- China
- Prior art keywords
- exponent
- power value
- polynomial
- index
- base
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000003672 processing method Methods 0.000 title claims abstract description 29
- 238000007667 floating Methods 0.000 claims abstract description 198
- 238000012545 processing Methods 0.000 claims abstract description 161
- 238000006243 chemical reaction Methods 0.000 claims abstract description 40
- 230000006870 function Effects 0.000 claims description 227
- 238000006073 displacement reaction Methods 0.000 claims description 44
- 230000037433 frameshift Effects 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 24
- 238000000605 extraction Methods 0.000 claims description 22
- 238000013527 convolutional neural network Methods 0.000 claims description 15
- 238000010276 construction Methods 0.000 claims description 6
- 238000013528 artificial neural network Methods 0.000 claims description 2
- 238000012937 correction Methods 0.000 description 9
- 230000006399 behavior Effects 0.000 description 8
- 238000013135 deep learning Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开一种数据处理方法和装置,处理器,数据搜索方法和装置,计算机存储介质和电子设备,其中,数据处理方法包括:获取针对以自然常数为底数的指数函数转换后的目标指数;根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;在所述幂值查询表中查询与所述索引序号对应的幂值;将根据所述幂值处理的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;从而通过查找幂值查询表的方式获得针对指数函数的处理结果,消除递归,在保证精度的情况下,能够在减低处理时间的同时提升处理器性能。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种数据处理方法和装置,一种处理器,数据搜索方法和装置,以及计算机存储介质和电子设备。
背景技术
随着深度学习模型深度越来越深,巨量的参数使得模型的尺寸越来越大,计算量也随之上升,实际工程应用中,大部分深度学习模型并不需要64位的浮点数精度,甚至32位。为了提升计算速度,减少模型占用空间,BF16(BFloat16)格式的浮点数应运而生,并且已经逐步成为深度学习的一种标准。
然而,BF16格式的浮点数在对指数函数的数据处理过程相对于其他数据形式的处理更加费时,因此,需要基于针对BF16格式的浮点数的指数函数的处理过程中,提升处理器的处理性能,降低处理时间。
发明内容
本申请提供一种数据处理方法,以解决现有技术中针对exp指数函数处理耗时的问题。
本申请提供一种数据处理方法,包括:
获取针对以自然常数为底数的指数函数转换后的目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值处理的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果。
在一些实施例中,所述获取针对以自然常数为底数的指数函数转换后的目标指数,包括:
将所述以自然常数为底数的指数函数转换为,以所述指定底数的幂运算;
将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数;
将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数。
在一些实施例中,所述将所述以自然常数为底数的指数函数转换为,以所述指定底数的幂运算,包括:
确定所述指数函数的指数是否大于0;
若是,则将所述指数函数转换为以所述指定底数为底数,指数为自然对数倒数与所述指数函数转换前指数的乘积的幂运算。
在一些实施例中,还包括:
当所述确定所述函数的指数是否大于0为否时,则将所述指数函数转换为所述指数函数的倒数;
将所述倒数分母转换为以所述指定底数为底数,指数为自然对数倒数与所述指数函数转换前指数的乘积的幂运算。
在一些实施例中,所述根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号,包括:
基于对所述目标指数采用BF16浮点数据格式结构的二进制表示形式,选取所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码;
根据选取的所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码,确定用于查询幂值查询表的索引序号。
在一些实施例中,所述基于对所述目标指数采用BF16浮点数据格式结构的二进制表示形式,选取所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码,包括:
从右向左读取以二进制表示的所述尾数位数据中比特位为1的序号,作为选取的所述尾数位数据;
根据所述BF16浮点数据格式中指数位所占的比特位,选取所述指数位数据;
选取所述BF16浮点数据格式中提供的移码。
在一些实施例中,所述根据选取的所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码,确定用于查询幂值查询表的索引序号,包括:
根据所述指数位数据和所述浮点数据格式结构的移码,确定位移系数;
根据所述位移系数,确定所述序号是否需要修正;
若是,则对所述序号进行修改,并将修正后的序号作为查询所述幂值查询表的所述索引序号。
在一些实施例中,还包括:
当根据所述位移系数的符号位,确定所述序号不需要修正时,将所述序号作为查询所述幂值查询表的所述索引序号。
在一些实施例中,所述根据所述指数位数据和所述浮点数据格式结构的移码,确定位移系数,包括:
将所述指数位数据的二进制表示转换为与所述移码相同的进制表示形式;
将进制转换后的指数位数据与所述移码的差,确定为所述位移系数。
在一些实施例中,所述根据所述位移系数,确定所述序号是否需要修正,包括:
确定所述移位系数是否小于0;
所述若是,则对所述序号进行修改,并将修正后的序号作为查询所述幂值查询表的所述索引序号,包括:
根据所述序号与所述位移系数的绝对值之和,对所述序号进行修正;
将修正后的序号作为查询所述幂值查询表的所述索引序号。
在一些实施例中,还包括:
构建所述幂值查询表。
在一些实施例中,所述构建所述幂值查询表的所述幂值,包括:
将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式;
获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;
将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;
将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;
根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
在一些实施例中,所述将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式,包括:
将所述项式中的尾数次幂部分,从高位向低位以2的整数次幂形式,展开为所述二进制多项式;
将所述二进制多项式作为所述指定底数的指数进行幂运算,获得针对所述指定底数的所述尾数次幂的所述多项连乘式。
在一些实施例中,所述将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果,包括:
将所述索引序号对应的所述幂值进行连乘,获得以所述指定底数为底数,指数为所述目标指数中尾数的幂运算结果;
将对所述幂运算结果以所述指定底数的幂次开方的结果,确定为所述针对所述指数函数的处理结果。
在一些实施例中,还包括:
确定所述浮点数部分中符号位是否表示所述目标指数为正数;
若为是,则将所述处理结果确定为所述指数函数的最终处理结果。
在一些实施例中,还包括:
若所述浮点数部分中符号位表示所述目标指数为负数,则对所述处理结果进行转换,将转换后所述处理结果的倒数确定为所述指数函数的最终处理结果。
本申请还提供一种数据处理装置,包括:
获取单元,用于获取针对以自然常数为底数的指数函数转换后的目标指数;
第一确定单元,用于根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
查询单元,用于在所述幂值查询表中查询与所述索引序号对应的幂值;
第二确定单元,用于根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果。
本申请还提供一种处理器,包括:运算器、控制器和寄存器;
所述运算器将输入的以自然常数为底数的指数函数转换为指定底数的幂运算形式,将所述指定底数的幂运算的指数部分确定为目标指数;根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询所述存储器中存储的幂值查询表的索引序号;在所述幂值查询表中查询与所述索引序号对应的幂值;将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
所述存储器用于存储所述幂值查询表、所述指数函数,所述目标指数和所述处理结果;
所述控制器用于对所述指数函数的浮点数据格式的指令进行译码并发送控制指令。
本申请还提供一种数据搜索方法,包括:
获取输入的待搜索数据;
确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
将所述候选目标数据作为所述待搜索数据的搜索结果进行输出。
在一些实施例中,所述将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据,包括:
在所述卷积处理过程中,确定所述候选目标数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将针对所述候选目标数据的指数函数进行转换,获得转换后的针对所述候选目标数据的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述候选目标数据中以所述指数函数表示的特征向量;
所述候选目标数据中以所述指数函数表示的特征向量与所述待搜索数据中以所述指数函数表示的特征向量进行相似度比较;
将满足相似度阈值要求的所述候选目标数据,确定为所述搜索结果。
本申请还提供一种数据搜索装置,包括:
获取单元,用于获取输入的待搜索数据;
第一确定单元,用于确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
转换单元,用于根据所述第一确定单元的确定结果为是时,将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
第二确定单元,用于根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
查询单元,用于在所述幂值查询表中查询与所述索引序号对应的幂值;
第三确定单元,用于将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
卷积单元,用于将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
输出单元,用于将所述候选目标数据作为所述待搜索数据的搜索结果进行输出。
本申请还提供一种计算机存储介质,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被读取执行时,执行如下操作:
获取针对以自然常数为底数的指数函数转换后的目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
或者,执行如下操作:
获取输入的待搜索数据;
确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以指数函数表示的特征向量;
将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
将所述候选目标数据作为所述待搜索数据的搜索结果进行输出。
本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:获取针对以自然常数为底数的指数函数转换后的目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
或者,执行如下操作:
获取输入的待搜索数据;
确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
将所述候选目标数据作为所述待搜索数据的搜索结果进行输出。
与现有技术相比,本申请具有以下优点:
本申请提供的一种数据处理方法,通过获取针对以自然常数为底数的指数函数转换后的目标指数;根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;在所述幂值查询表中查询与所述索引序号对应的幂值;将根据所述幂值处理的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果。从而通过查找幂值查询表的方式获得针对指数函数的处理结果,消除递归,在保证精度的情况下,能够在减低处理时间的同时提升处理器性能。
附图说明
图1是本申请提供的一种数据处理方法实施例的流程图;
图2是本申请提供的一种数据处理方法实施例中浮点数据格式的结构示意图;
图3是本申请提供的一种数据处理装置实施例的结构示意图;
图4是本申请提供的一种处理器实施例的结构示意图;
图5是本申请提供的一种数据搜索方法实施例的流程图;
图6是本申请提供的一种数据搜索装置实施例的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请中使用的术语是仅仅出于对特定实施例描述的目的,而非旨在限制本申请。在本申请中和所附权利要求书中所使用的描述方式例如:“一种”、“第一”、和“第二”等,并非对数量上的限定或先后顺序上的限定,而是用来将同一类型的信息彼此区分。
结合上述背景技术可知,IEEE二进制浮点数算术标准(IEEE754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。同样也适用深度学习的应用场景下,对数据的处理。
IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。可以理解的是,精度越高计算速度也就越长,然而在实际应用场景下的数据处理过程中,并不需要太高精度的数据,因此,BF16(BFloat16)格式的浮点数既能满足精度需求也能够降低处理时间,自然成为深度学习过程中的一种数据处理标准。此处仅进行概要性描述,下述会结合图2进行浮点数结构的详细说明。
然而,BF16格式的浮点数在面对深度学习,例如:CNN网络(Convolutional NeuralNetworks:卷积神经)中涉及Sigmoid、Tanh、Softmax等算子,而该些算子都包含有针对exp指数函数的处理,所谓exp指数函数是自然常数e为底的指数函数。而在对exp指数函数进行处理过程中相对其他数据形式的处理更为耗时,因为,现有技术中处理器并没有提供针对exp指数函数以BF16浮点格式处理的指令集,故此,在对exp指数函数处理时存在耗时现象,进而会影响处理器的处理性能,鉴于此,本申请提出一种能够针对exp指数函数以BF16浮点格式进行处理的方法,以减低处理耗时提升处理器性能。
基于上述内容,可知,本申请实施例部分主要是以浮点数为BF16格式为例进行的描述,但是,对于具体应用场景下,可以根据实际数据处理需求来确定浮点数所采用的具体格式。
请参考图1所示,图1是本申请提供的一种数据处理方法实施例的流程图;该方法实施例包括:
步骤S101:获取针对以自然常数为底数的指数函数转换后的目标指数。
所述步骤S101的目的在于获取目标指数,而所述目标指数是基于所述以自然常数为底数的指数函数转换后的指数函数的指数。所述以自然常数为底的指数函数为exp(x),即以自然常数e为底的指数函数,e等于2.718281828459。
所述步骤S101具体实现过程在于将exp(x)指数函数,即:ex转换成适合计算机处理的格式,故此,具体转换的方式在本实施例中可以包括:
步骤S101-1:将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算;
所述步骤S101-1中的指定底数可以是满足计算机硬件处理要求的底数,例如:底数为2。具体转换可以采用如下公式1:
其中,Ln以e为底的自然对数;/>根据换底公式可以得到lne/ln2=1/ln2;因此转换后获得以2为底数,指数为1/ln2×x。
因此,可以将作为常数C进行离线计算后进行存储,在对所述exp(x)指数函数进行转换时,将所述exp(x)指数函数的指数部分乘以常数C即可将所述exp(x)指数函数转换为以2为底数的指数函数。例如:当获取的指数函数为e0.15625,则转换过程可以是:即以2为底数的0.2254211次幂运算。
在本实施例中,由于对目标指数为负数的处理过程,对于处理器等硬件设备不是太友好,因为,负数的处理相比正数的过程更为繁琐,所以对处理器等硬件设备需要大量频繁的操作处理。因此,在对所述exp(x)指数函数进行转换时,可以包括:
步骤S101-1-11:确定所述指数函数的指数是否大于0;
所述步骤S101-1-11可以理解为对所述exp(x)指数函数的指数的符号位进行判断,确定所述符号位是否为0,若为0说明指数是正数,即0表示符号位为“+”;那么,若符号位不为0则一定为1,1标识符号位为“-”,即指数为负数。在计算机处理系统中,对于数值的符号位以0表示数值为正数,以1表示数值为负数。当然,符号位的表示方式并不限于上述内容。同样的,也可以通过指数是否大于0来确定指数为正数还是为负数。
步骤S101-1-12:基于所述步骤S101-1-11的确定结果为是时,则将所述指数函数转换为以指定底数为底数,指数为自然对数倒数与所述指数函数转换前指数的乘积的幂运算。参考上述转换公式1。
基于上述内容,还包括:
步骤S101-1-21:当所述确定所述函数的指数是否大于0为否时,则将所述指数函数转换为所述指数函数的倒数;
所述步骤S101-1-21的具体实现过程可以采用如下公式2:
步骤S101-1-22:将所述倒数分母转换为以所述指定底数为底数,指数为自然对数倒数与所述指数函数转换前指数的乘积的幂运算。
所述步骤S101-1-22的具体实现过程可以在基于所述步骤S101-1-21的基础上再采用上述转换公式1进行转换,从而将符号位为1的指数转换为符号位0的指数,即将负数指数转换为正数指数。进而避免后续由于是对负数的目标指数进行处理而产生的弊端。
步骤S101-2:将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数;
所述步骤S101-2具体实现过程可以是:将以2为底的指数函数的指数部分按照如下公式3进行拆分:
其中,mantissa表示浮点数的尾数位的数据;其中,offset表示浮点数的移位数据,即:小数点的移位数据;其中,offset的确定可以通过如下公式4:
通常指数部分需要满足浮点数的正规化表示,如:±1.bbbb......×2offset,offset的取值要满足小数点左边为1。例如:如果exp(x)指数函数转换后为29.125,表示为浮点数据格式为,offset的取值要满足小数点左边为1,因此,9.125=1.bbbbb×2offset。offset=1时,9.125/2=4.bbbbb,不符合浮点数正规化表示;offset=2时,9.125/4=2.bbbbb,不符合浮点数正规化表示;offset=3时,9.125/8=1.bbbbb,符合浮点数正规化表示,可见,offset=3时能够保证小数点左边为1,因此,/>
那么,沿用上述指数函数为e0.15625的示例,根据步骤S101-1可知指数函数为e0.15625转换后为20.2254211;其中,0.2254211可以看作为X,按照上述公式2将0.22514211进行拆分,offset值的确定可以是:当offset=0时,0.2254211×20=0.2254211,不符合浮点数正规化表示;当offset=-1时,0.2254211/2-1=0.2254221×2=0.45*****,不符合浮点数正规化表示;当offset=-2时,0.2254211/2-2=0.2254221×4=0.90*****,不符合浮点数正规化表示;当offset=-3时,0.2254211/2-3=0.2254221×8=1.80*****,符合浮点数正规化表示;因此,offset=-3,指数部分的表示为:对应于/>offset=-3,mantissa=0.2254211。
步骤S101-3:将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数。
沿用上述示例所述步骤S103-3确定的目标指数,即是2-3×0.2254211。
步骤S101-3:将转换后的指数函数的指数拆分为以所述指定底数的幂次和浮点数乘积的形式,获取转换后的目标指数。
步骤S102:根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号。
所述步骤S102的目的在于,根据目标指数的浮点数表示形式,确定出查询幂值查询表的索引序号(index)。
所述步骤S102的具体实现过程可以包括:
步骤S102-1:基于对所述目标指数采用BF16浮点数据格式结构的二进制表示形式,选取所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码;
所述步骤S102-1中所述目标指数为浮点数,在本实施例中,需要采用的浮点数格式为BF16浮点数据格式,在计算机处理系统,会将目标指数的浮点数形式自动显示为BF16浮点数据的格式,当然,前提是计算机处理系统支持BF16浮点数据格式针对exp(x)指数函数的处理。
为更好的理解本申请的实施例,结合上述对IEEE754的概要性描述,下面结合图2对浮点数据格式进行详细说明。
对于所述步骤S102中浮点数是采用科学计数法来表达实数的一种方式,利用指数达到浮动小数点的目的,从而可以灵活地表达更大范围的实数。浮点数据格式是一种数据结构,它规定构成浮点数的各个字段、字段位置及字段的算术解释。浮点数据格式可以包括单精度格式(32位)、双精度格式(64位)以及介于单精度和双精度格式之间的半精度格式(FP16位)。数据结构通常包括三部分,符号位(S)、指数位(也可以称为阶码E)和尾数位(M);由于深度学习算法并不需要64位,甚至32位的浮点数精度。更低的精度可以使在内存中存放更多数据成为可能,并且减少在内存中移动进出数据的时间,低精度浮点数的电路也会更加简单,因此基于半精度格式和单精度格式之间的BF16(bfloat16)浮点格式应运而生,且对于计算机处理系统而言具有一定的优势。
请参考图2,图2是本申请提供的一种数据处理方法实施例中浮点数据格式的结构示意图。
在本实施例中,主要以BF16浮点数据格式为举例进行说明,图2所绘示的是浮点格式为单精度(FP32)、半精度(FB16)以及介于二者之间的BF16的结构示意图,从图中可知,BF16浮点数在格式,介于FP16和FP32之间,与FP32相比,BF16的指数位与FP32保持一致,但是小数位少了16bit(比特);与FP16相比,BF16的指数为比FP16多3bit(比特),小数位少了3bit(比特)。BF16格式这样设计的目的是想通过降低部分精度获得更大的数值空间。简言之,FB16浮点数据格式的符号位为1bit,指数位为5bits,尾数位为10bits;BF16浮点数据格式的符号位1bit,指数位为8bits,尾数位为7bits;FP32浮点数格式的符号位为1bit,指数位为8bits,尾数位为23bits。很显然,BF16浮点数据格式能够通过降低部分精度获得更大的数值空间。
浮点数据格式表示形式如:±1.bbbb……×2offset,其中b是0或1(二进制表示时),而offset二进制数表示的指数位,指数offset加上移码表示为8位的二进制数,b部分为尾数位。移码在浮点数据格式表示中包括三种,单精度、双精度和长双精度,三种精度的移码如下表:
精度 | 指数位数 | 移码 | 二进制表示 |
单精度 | 8 | 127 | 01111111 |
双精度 | 11 | 1023 | 01111111111 |
长双精度 | 15 | 16383 | 011111111111111 |
在本实施例中,BF16浮点数据格式属于单精度,指数位数为8bits,因此,对应的移码是127。
回到步骤S102-1的具体实现上,当所述目标指数采用BF16浮点数据格式表示时,可以选取出所述目标指数的符号位、指数位和尾数位,以及移码127。为更清楚的理解步骤S102-1沿用上述示例进行描述,当所述目标指数为0.2254211时,对应BF16浮点数据格式的二进制表示为:0011111001100110,按照上述BF16浮点数据格式的结构,对0011111001100110选取相应的各个组成部分,即符号位为0,指数位为01111100,尾数位为1100110,即:S=0,E=01111100,M=1100110。
所述步骤S102-1的具体选取方式可以包括:
步骤S102-1-11:从右向左读取以二进制表示的所述尾数位数据中比特位为1的序号,作为选取的所述尾数位数据;
所述步骤S102-1-11中对所述尾数位数据从右向左读取比特位为1的序号,对于浮点数的尾数位而言,从右向左可以理解为从底位向高位进行读取,沿用上列,M=1100110从右向左读取为1的比特位的序号可以是1,2,5,6,如下表所示:
M | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
序号 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
需要特别说明的是,此处序号还要包括序号0(20对应的序号),即:index=0,1,2,5,6,关于序号必须包括0这项,后续在构建幂值查询表时会详细描述。
步骤S102-1-12:根据所述BF16浮点数据格式中指数位所占的比特位,选取所述指数位数据;即:E=01111100。
步骤S102-1-13:选取所述BF16浮点数据格式中提供的移码。
本实施例中,浮点数据格式为BF16,因此对应的移码为127,可以参考上述三种精度的移码表。
步骤S102-2:根据选取的所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码,确定用于查询幂值查询表的索引序号。
所述步骤S102-2的具体实现过程可以包括:
步骤S102-2-11:根据所述指数位数据和所述浮点数据格式结构的移码,确定位移系数;
步骤S102-2-12:根据所述位移系数,确定所述序号是否需要修正;
步骤S102-2-13:若是,则对所述序号进行修改,并将修正后的序号作为查询所述幂值查询表的所述索引序号。
其中,所述步骤S102-2-11的具体实现可以包括:
步骤S102-2-11-1:将所述指数位数据的二进制表示转换为与所述移码相同的进制表示形式;沿用上列,将E=01111100中的二进制表示转换为与移码相同的进制表示,例如:十进制,因此01111100=124。
步骤S102-2-11-2:将进制转换后的指数位数据与所述移码的差,确定为所述位移系数;即offset(位移系数,即:目标指数的offset)=E-127,沿用上列,124-127=-3。
其中,所述步骤S102-2-12:根据所述位移系数,确定所述序号是否需要修正;
所述步骤S102-2-12在基于所述步骤S102-2-11-2获得的位移系数基础上,判断所述位移系数的数据类型,即所述位移系数属于负数还是非负数。当位移系数是否小于0,即是否为负数。在其他实施例中,可以通过对位移系数的符号位进行判断,获知位移系数的数据类型,即符号位为1表示为位移系数为负数,符号位为0表示位移系数为正数,符号位为空则表示位移系数为数字0,在上述示例中检测位移系数的符号位为1说明所述位移系数是负数。
当确定所述位移系数的数据类型后,进入所述步骤S102-2-13。
所述步骤S102-2-13的修正方式可以是,根据所述序号与所述位移系数的绝对值之和,对所述序号进行修正。具体地,通过所述序号加上所述位移系数的绝对值,将二者相加的和作为修正后的序号,之后,将修正后的序号确定为查询所述幂值查询表的索引序号。如上述示例中,将序号0,1,2,5,6分别与|-3|相加,即:0+|-3|=3,1+|-3|=4,2+|-3|=5,5+|-3|=8,6+|-3|=9,用序号为3,4,5,8,9替换序号为0,1,2,5,6,那么修正后的序号即为3,4,5,8,9。查询所述幂值查询表的索引序号即为:3,4,5,8,9。
可以理解的是,在其他实施例中,存在所述序号不需要修正的情况,也就是,位移系数为非负数,即大于等于,同样的,在采用符号位判断时,则是位移系数的符号位为0或者空的情况。此时,则直接将所述序号作为索引序号去查询幂值查询表即可,无需对所述序号进行修正。
基于上述内容可知,当确定索引序号后,需要根据索引序号查询所述幂值查询表,从而获得索引序号对应的幂值,因此,需要构建幂值查询表以便查询幂值。那么,对于所述幂值查询表至少需要两个参数,一是索引序号,二是幂值,幂值是对应于二进制表示中2的尾数次幂的每项尾数值的幂值,索引序号对应项序,具体构建过程如下:
步骤S111:将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式。
在计算机处理过程中指数函数为指定底数为2的函数,即:2X。将X拆分成2offset*mantissa,
步骤S112:获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;即,获取2mantissa。
步骤S113:将所述项式展开为二进制多项式,获得所述指定底数的整数次幂的多项连乘式;
所述步骤S113的具体实现过程可以包括:
步骤S113-1:将所述项式中的尾数次幂部分,从高位向低位以2的整数次幂形式,展开为所述二进制多项式;
步骤S113-2:将所述二进制多项式作为所述指定底数的指数进行幂运算,获得针对所述指定底数的所述尾数次幂的所述多项连乘式。
在本实施例中,具体展开后的二进制多项式可以是如下形式:
步骤S114:将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;
所述步骤S114具体实现可以是:
需要特别说明的是,根据上述多项连乘式可知,在确定用户查询幂值查询表的索引序号时,索引序号index=0这项必须存在确定的索引序号的序列中,因为多项连乘式每项在对2开方根后还需要乘以指定底数2方能构成项式的值,即幂值。
步骤S115:根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
所述步骤S115可以是将多项连乘式中每一项的值可以理解为对2的开方根作为幂值记录到预先建立的空表中,形成所述幂值查询表;或者,根据幂值构建所述幂值查询表,所述幂值查询表可以采用如下表形式:
步骤S103:在所述幂值查询表中查询与所述索引序号对应的幂值。
关于所述步骤S103的理解可以沿用上述示例,当确定的索引序号为3,4,5,8,9时,通过查询幂值查询表可以获得index=3对应的幂值为:1.090507732665258;index=4对应的幂值为:1.044273782427414;index=5对应的幂值为:1.021897148654117;index=8对应的幂值为:1.002711275050203;index=9对应的幂值为:1.001354719892108。
步骤S104:将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果。
所述步骤S104的具体实现过程可以包括:
步骤S104-1:将所述索引序号对应的所述幂值进行连乘,获得以所述指定底数为底数,指数为所述目标指数中尾数部分的幂运算结果;即:目标指数为(2mantissa)2offset,幂运算结果为针对2mantissa的结果。
沿用上述示例,2mantissa=(20.2254211)=LOOK_UP_TABLE(3)×LOOK_UP_TABLE(4)×LOOK_UP_TABLE(5)×LOOK_UP_TABLE(8)×LOOK_UP_TABLE(9)=1.090507732665258×1.044273782427414×1.021897148654117×1.002711275050203×1.001354719892108=1.168460832550246。
步骤S104-2:将对所述幂运算结果以所述指定底数的幂次开方的结果,确定为所述针对所述指数函数的第一处理结果;
在本实施例中,根据上述公式3,即:可知,步骤S104-1中的幂运算结果仅仅是2mantissa,即指数函数的一部分值,所以还需要针对2mantissa在进行2offset的开方,将开方结果作为所述指数函数的第一处理结果。
按照上述示例理解,第一处理结果可以是e0.15625=20.2254211=(1.168460832550246)20=(1.168460832550246)1=1.168460832550246。
基于计算机对数据处理的要求,本实施例中还可以对所述处理结果进一步进行拓展,使所述处理结果能够适应或者满足计算机在数据处理时的要求。那么,目前而言,计算机处理数据时不能识别负数,因为cpu中只有加法器,没有减法器,对于负数的处理通常需要借用补码来完成,此种方式相对于正数处理来说更加繁琐,并且对于计算机硬件来说并不是很友好,因此,本实施例中,还可以包括:
步骤S10a:确定所述浮点数部分中符号位是否表示所述目标指数为正数;
所述步骤S10a中涉及符号位的确定与上述步骤S101-1-11涉及的符号位的判断相似,所以此处不再重复赘述。
步骤S10b:若所述步骤S10a的确定结果为是,则将所述处理结果确定为所述指数函数的最终处理结果。
步骤S10c:若所述步骤S10a的确定结果为否,则将所述处理结果的倒数确定为所述指数函数的最终处理结果。
如果最终处理结果FB32浮点数据格式,则截取前16bit位作为指数函数的输出结果。
需要说明的是,上述根据浮点数部分中符号位的判断,确定最终处理结果时,仅为以目前计算机处理方式的一种扩展,如果计算机处理方式不受数据类型(正负数)的限制,则可以不做符号位的判断。
还需要特别说明的是,在步骤S101指数函数的转换处理过程中涉及有对符号位的判断,如果在指数函数进行转换过程中,将指数为负数的转换为正数,则后续对处理结果不再需要采用步骤S10a-S10c的操作。
以上是对本申请提供的一种数据处理方法实施例的具体描述,与前述提供的一种数据处理方法实施例相对应,本申请还公开一种数据处理装置实施例,请参看图3,由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
如图3所示,本申请提供的数据处理装置实施例包括:
获取单元301,用于获取针对以自然常数为底数的指数函数转换后的目标指数;
所述获取单元301包括:转换子单元,拆分子单元和确定子单元。
所述转换子单元,用于将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算;
所述拆分子单元,用于将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数;
所述确定子单元,用于将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数。
所述转换子单元包括:判断子单元,用于确定所述指数函数的指数是否大于0。所述转换子单元,具体用于基于所述判断子单元的判断结果为是时,将所述指数函数转换为以指定底数为底数,指数为自然对数倒数与所述指数函数转换前指数的乘积的幂运算。当所述判断子单元的判断结果为否时,所述转换子单元具体用于将所述指数函数转换为所述指数函数的倒数,再将所述倒数分母转换为以所述指定底数为底数,指数为自然对数倒数与所述指数函数转换前指数的乘积的幂运算。
第一确定单元302,用于根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
所述第一确定单元302包括:选取子单元和索引确定子单元。
所述选取子单元,用于基于对所述目标指数采用BF16浮点数据格式结构的二进制表示形式,选取所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码;
在本实施例中,所述选取子单元可以包括:指数选取子单元、尾数选取子单元和移码选取子单元。
其中,所述尾数选取子单元,用于从右向左读取以二进制表示的所述尾数位数据中比特位为1的序号,作为选取的所述尾数位数据;
所述指数选取子单元,用于根据所述BF16浮点数据格式中指数位所占的比特位,选取所述指数位数据;
所述移码选取子单元,用于选取所述BF16浮点数据格式中提供的移码。
所述索引确定子单元,用于根据选取的所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码,确定用于查询幂值查询表的索引序号。
在本实施例中,所述索引确定子单元可以包括:位移系数确定子单元,修正确定子单元和修正子单元。
所述位移系数确定子单元,用于根据所述指数位数据和所述浮点数据格式结构的移码,确定位移系数;所述位移系数确定子单元包括:进制转换子单元,用于将所述指数位数据的二进制表示转换为与所述移码相同的进制表示形式,所述位移系数确定子单元具体用于将进制转换后的指数位数据与所述移码的差,确定为所述位移系数。
所述修正确定子单元,用于根据所述位移系数,确定所述序号是否需要修正;所述修正确定子单元具体用于确定所述移位系数是否小于0。
所述修正子单元,用于根据所述修正确定子单元的确定结果为是时,对所述序号进行修改,并将修正后的序号作为查询所述幂值查询表的所述索引序号。所述修正子单元具体用于根据所述序号与所述位移系数的绝对值之和,对所述序号进行修正;将修正后的序号作为查询所述幂值查询表的所述索引序号。
在其他实施例中,当所述修正确定子单元,确定结果为否时,所述索引确定子单元具体用于将所述序号作为查询所述幂值查询表的所述索引序号。
本实施例还包括:构建单元,用于构建所述幂值查询表。
所述构建单元包括:拆分子单元,获取子单元,展开子单元,幂值确定子单元和构建子单元。
所述拆分子单元,用于将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式;
所述获取子单元,用于获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;
所述展开子单元,用于将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;
所述幂值确定子单元,用于将所述展开子单元的所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;
所述构建子单元,用于根据所述幂值确定子单元中确定的所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
其中,所述展开子单元具体用于将所述项式中的尾数次幂部分,从高位向低位以2的整数次幂形式,展开为所述二进制多项式;将所述二进制多项式作为所述指定底数的指数进行幂运算,获得针对所述指定底数的所述尾数次幂的所述多项连乘式。
查询单元303,用于在所述幂值查询表中查询与所述索引序号对应的幂值;
第二确定单元304,用于根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果。
所述第二确定单元304包括:获得子单元和处理结果确定子单元。
其中,所述获得子单元,用于将所述索引序号对应的所述幂值进行连乘,获得以所述指定底数为底数,指数为所述目标指数中尾数的幂运算结果;
所述处理结果确定子单元,用于将对所述幂运算结果以所述指定底数的幂次开方的结果,确定为所述针对所述指数函数的处理结果。
在本实施例中,还可以包括:符号确定单元和最终结果确定单元。
所述符号确定单元,用于确定所述浮点数部分中符号位是否表示所述目标指数为正数;
所述最终结果确定单元,用于根据所述符号确定单元的确定结果为是时,将所述处理结果确定为所述指数函数的最终处理结果。
在其他实施例中,还可以包括:转换确定单元,用于当所述符号确定单元中确定结果为否时,对所述处理结果进行转换,将转换后所述处理结果的倒数确定为所述指数函数的最终处理结果。
以上是对本申请提供的一种数据处理装置实施例的描述,对于数据处理装置部分可以参考上述数据处理方法部分的实施例,因此,此处不再进行过多重复性赘述。
基于上述内容,本申请还提供一种处理器,请参考图4所示,包括:运算器401、控制器402和寄存器403;
所述运算器将输入的以自然常数为底数的指数函数转换为指定底数的幂运算形式,将所述指定底数的幂运算的指数部分确定为目标指数;根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询所述存储器中存储的幂值查询表的索引序号;在所述幂值查询表中查询与所述索引序号对应的幂值;将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
所述存储器用于存储所述幂值查询表、所述指数函数,所述目标指数和所述处理结果;
所述控制器用于对所述指数函数的浮点数据格式的指令进行译码并发送控制指令。
对于上述本申请提供的处理器的具体内容可以参考上述数据处理方法实施例的描述,此处不再重复性赘述。
基于上述内容本申请还提供一种数据搜索方法,如图5所示,该数据搜索方法实施例可以包括:
步骤S501:获取输入的待搜索数据;
步骤S502:确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
步骤S503:若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
步骤S504:根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
步骤S505:在所述幂值查询表中查询与所述索引序号对应的幂值;
步骤S506:将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
步骤S507:将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
步骤S508:将所述候选目标数据作为所述待搜索数据的搜索结果进行输出。
所述步骤S507的具体实现方式可以包括:
步骤S507-1:在所述卷积处理过程中,确定所述候选目标数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
步骤S507-2:若是,则将针对所述候选目标数据的指数函数进行转换,获得转换后的针对所述候选目标数据的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
步骤S507-3:根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
步骤S507-4:在所述幂值查询表中查询与所述索引序号对应的幂值;
步骤S507-5:将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述候选目标数据中以所述指数函数表示的特征向量;
步骤S507-6:所述候选目标数据中以所述指数函数表示的特征向量与所述待搜索数据中以所述指数函数表示的特征向量进行相似度比较;
步骤S507-7:将满足相似度阈值要求的所述候选目标数据,确定为所述搜索结果。
关于数据搜索方法实施例部分也同样可以参考上述数据处理方法实施例的描述,此处不做重复性赘述。需要说明的是,在本实施例中,所述待搜索数据可以是描述需要数据的字段信息,例如:关键字,也可以是图片或者是语音或者手势等。
通常情况下,输出的搜索结果是与所述待搜索数据的类型匹配的结果,当然也可以能够体现出与所述待搜索数据相匹配但输出类型或者格式不同的结果。本实施例中具体应用场景可以是商品推荐场景下的数据搜索,也就是在输入搜索数据后,可以推荐出于搜索数据相似的商品信息,当然也可以是数据信息等。
可以理解的是,在确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取,不仅仅可以针对待搜索数据的特征向量,同样可以在对卷积神经网络进行模型训练的过程也使用,即对样本数据的特征向量的提取方式,进行确定,即是否是通过调用以自然常数为底数的指数函数的方式进行提取,不论正样本还是负样本均适用。
上述内容是基于输入的待搜索数据、候选目标数据中至少一种数据的特征向量提取方式涉及到以自然常数为底数的指数函数(即:exp(x))的方式进行提取式,需要的相关处理过程,当然为保证候选目标数据的准确度,在根据待搜索数据进行候选目标数据的确定过程中还可以参考其他参考数据,例如:获取用户的历史行为数据,对于所述历史行为数据同样也可以确定特征向量的提取方式,从而在针对调用以自然常数为底数的指数函数(即:exp(x))的方式进行提取时,能够加快处理速度,减少耗时。所述历史行为数据可以是结合具体应用场景来确定,例如:如果是针对商品的搜索场景,则历史行为数据可以是用户的历史购买行为数据、用户的历史点击行为数据、用户的历史搜索行为数据中的至少一种,当然,对于历史点击行为数据还可以进一步细分,例如:历史停留时间数据等等,此处不再一一举例。
可以理解的是,对于获取的任何数据,均可以通过上述数据处理方法的实施例对数据先进行处理,以保证在确定候选目标数据时能够提升处理器性能、减少耗时。
基于上述内容,本申请还提供一种数据搜索装置,请参考图6所示,所述数据搜索装置实施例包括:
获取单元601,用于获取输入的待搜索数据;
第一确定单元602,用于确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
转换单元603,用于根据所述第一确定单元的确定结果为是时,将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
第二确定单元604,用于根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
查询单元605,用于在所述幂值查询表中查询与所述索引序号对应的幂值;
第三确定单元606,用于将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
卷积单元607,用于将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
输出单元608,用于将所述候选目标数据作为所述待搜索数据的搜索结果进行输出。
基于上述内容,本申请还提供一种计算机存储介质,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被读取执行时,执行如下操作:
获取针对以自然常数为底数的指数函数转换后的目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
或者,执行如下操作:
获取输入的待搜索数据;
确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
将所述候选目标数据作为所述待搜索数据的搜索结果进行输出。
基于上述内容,本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:获取针对以自然常数为底数的指数函数转换后的目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
或者,执行如下操作:
获取输入的待搜索数据;
确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
将所述候选目标数据作为所述待搜索数据的搜索结果进行输出。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (20)
1.一种数据处理方法,其特征在于,包括:
获取针对以自然常数为底数的指数函数转换后的目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值处理的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
其中,所述获取针对以自然常数为底数的指数函数转换后的目标指数,包括:
将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算;
将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数;
将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;
所述方法还包括:构建所述幂值查询表,具体为将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式;获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
2.根据权利要求1所述的数据处理方法,其特征在于,所述将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算,包括:
确定所述指数函数的指数是否大于0;
若是,则将所述指数函数转换为以指定底数为底数,指数为自然对数倒数与所述指数函数转换前指数的乘积的幂运算。
3.根据权利要求2所述的数据处理方法,其特征在于,还包括:
当所述确定所述函数的指数是否大于0为否时,则将所述指数函数转换为所述指数函数的倒数;
将所述倒数分母转换为以所述指定底数为底数,指数为自然对数倒数与所述指数函数转换前指数的乘积的幂运算。
4.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号,包括:
基于对所述目标指数采用BF16浮点数据格式结构的二进制表示形式,选取所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码;
根据选取的所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码,确定用于查询幂值查询表的索引序号。
5.根据权利要求4所述的数据处理方法,其特征在于,所述基于对所述目标指数采用BF16浮点数据格式结构的二进制表示形式,选取所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码,包括:
从右向左读取以二进制表示的所述尾数位数据中比特位为1的序号,作为选取的所述尾数位数据;
根据所述BF16浮点数据格式中指数位所占的比特位,选取所述指数位数据;
选取所述BF16浮点数据格式中提供的移码。
6.根据权利要求4或5所述的数据处理方法,其特征在于,所述根据选取的所述指数位数据和所述尾数位数据,以及所述BF16浮点数据格式结构的移码,确定用于查询幂值查询表的索引序号,包括:
根据所述指数位数据和所述浮点数据格式结构的移码,确定位移系数;
根据所述位移系数,确定所述序号是否需要修正;
若是,则对所述序号进行修改,并将修正后的序号作为查询所述幂值查询表的所述索引序号。
7.根据权利要求6所述的数据处理方法,其特征在于,还包括:
当根据所述位移系数的符号位,确定所述序号不需要修正时,将所述序号作为查询所述幂值查询表的所述索引序号。
8.根据权利要求6所述的数据处理方法,其特征在于,所述根据所述指数位数据和所述浮点数据格式结构的移码,确定位移系数,包括:
将所述指数位数据的二进制表示转换为与所述移码相同的进制表示形式;
将进制转换后的指数位数据与所述移码的差,确定为所述位移系数。
9.根据权利要求6所述的数据处理方法,其特征在于,所述根据所述位移系数,确定所述序号是否需要修正,包括:
确定所述位移系数是否小于0;
所述若是,则对所述序号进行修改,并将修正后的序号作为查询所述幂值查询表的所述索引序号,包括:
根据所述序号与所述位移系数的绝对值之和,对所述序号进行修正;
将修正后的序号作为查询所述幂值查询表的所述索引序号。
10.根据权利要求1所述的数据处理方法,其特征在于,所述将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式,包括:
将所述项式中的尾数次幂部分,从高位向低位以2的整数次幂形式,展开为所述二进制多项式;
将所述二进制多项式作为所述指定底数的指数进行幂运算,获得针对所述指定底数的所述尾数次幂的所述多项连乘式。
11.根据权利要求1所述的数据处理方法,其特征在于,所述将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果,包括:
将所述索引序号对应的所述幂值进行连乘,获得以所述指定底数为底数,指数为所述目标指数中尾数的幂运算结果;
将对所述幂运算结果以所述指定底数的幂次开方的结果,确定为所述针对所述指数函数的处理结果。
12.根据权利要求11所述的数据处理方法,其特征在于,还包括:
确定所述浮点数部分中符号位是否表示所述目标指数为正数;
若为是,则将所述处理结果确定为所述指数函数的最终处理结果。
13.根据权利要求11所述的数据处理方法,其特征在于,还包括:
若所述浮点数部分中符号位表示所述目标指数为负数,则对所述处理结果进行转换,将转换后所述处理结果的倒数确定为所述指数函数的最终处理结果。
14.一种数据处理装置,其特征在于,包括:
获取单元,用于获取针对以自然常数为底数的指数函数转换后的目标指数;具体用于将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算,将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数,将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;
第一确定单元,用于根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
查询单元,用于在所述幂值查询表中查询与所述索引序号对应的幂值;
第二确定单元,用于根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
还包括:构建单元,用于构建所述幂值查询表,具体为将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式,获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式,将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式,将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值,根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
15.一种处理器,其特征在于,包括:运算器、控制器和寄存器;
所述运算器将输入的以自然常数为底数的指数函数转换为指定底数的幂运算形式,将所述指定底数的幂运算的指数部分确定为目标指数,具体为将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算,将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数,将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询存储器中存储的幂值查询表的索引序号;在所述幂值查询表中查询与所述索引序号对应的幂值;将根据所述幂值确定的以所述指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
所述存储器用于存储所述幂值查询表、所述指数函数,所述目标指数和所述处理结果;其中,所述幂值查询表的构建为:将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式,获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式,将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式,将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值,根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号;
所述控制器用于对所述指数函数的浮点数据格式的指令进行译码并发送控制指令。
16.一种数据搜索方法,其特征在于,包括:
获取输入的待搜索数据;
确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;具体为将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算,将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数,将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
将所述候选目标数据作为所述待搜索数据的搜索结果进行输出;
还包括:构建所述幂值查询表,具体为将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式;获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
17.根据权利要求16所述的数据搜索方法,其特征在于,所述将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据,包括:
在所述卷积处理过程中,确定所述候选目标数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将针对所述候选目标数据的指数函数进行转换,获得转换后的针对所述候选目标数据的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述候选目标数据中以所述指数函数表示的特征向量;
所述候选目标数据中以所述指数函数表示的特征向量与所述待搜索数据中以所述指数函数表示的特征向量进行相似度比较;
将满足相似度阈值要求的所述候选目标数据,确定为所述搜索结果。
18.一种数据搜索装置,其特征在于,包括:
获取单元,用于获取输入的待搜索数据;
第一确定单元,用于确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
转换单元,用于根据所述第一确定单元的确定结果为是时,将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;具体为将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算,将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数,将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;
第二确定单元,用于根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
查询单元,用于在所述幂值查询表中查询与所述索引序号对应的幂值;
第三确定单元,用于将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
卷积单元,用于将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
输出单元,用于将所述候选目标数据作为所述待搜索数据的搜索结果进行输出;
还包括:构建所述幂值查询表,具体为将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的,幂次与浮点数结构中尾数相乘的表示形式;获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
19.一种计算机存储介质,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被读取执行时,执行如下操作:
获取针对以自然常数为底数的指数函数转换后的目标指数;具体为将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算;将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数;将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
还包括:构建所述幂值查询表,具体为将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式;获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号;
或者,执行如下操作:
获取输入的待搜索数据;
确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;具体为将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算,将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数,将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
将所述候选目标数据作为所述待搜索数据的搜索结果进行输出;
还包括:构建所述幂值查询表,具体为将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式;获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
20.一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:获取针对以自然常数为底数的指数函数转换后的目标指数;具体为将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算;将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数;将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述指数函数的处理结果;
还包括:构建所述幂值查询表,具体为将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式;获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号;
或者,执行如下操作:
获取输入的待搜索数据;
确定所述待搜索数据的特征向量的提取方式是否是通过调用以自然常数为底数的指数函数的方式进行提取;
若是,则将所述指数函数进行转换,获得转换后的目标指数函数的表示形式,并将所述目标指数函数中的指数部分确定为目标指数;具体为将所述以自然常数为底数的指数函数转换为,以指定底数的幂运算,将所述幂运算中的指数部分拆分为所述指定底数的幂次与浮点数结构中尾数相乘表示形式的指数,将以所述指定底数的幂次与所述浮点数结构中尾数相乘表示形式的指数确定为所述目标指数;
根据所述目标指数中浮点数部分的指数位数据、浮点数据格式结构的移码以及尾数位数据,确定用于查询幂值查询表的索引序号;
在所述幂值查询表中查询与所述索引序号对应的幂值;
将根据所述幂值确定的以指定底数为底数,指数为所述目标指数的处理结果,作为针对所述待搜索数据中以所述指数函数表示的特征向量;
将所述特征向量作为卷积神经网络的输入值进行卷积处理,获得与所述特征向量相似的候选目标数据;
将所述候选目标数据作为所述待搜索数据的搜索结果进行输出;
还包括:构建所述幂值查询表,具体为将以所述指定底数的指数函数中的指数部分,拆分为所述指定底数的幂次与浮点数结构中尾数相乘的表示形式;获取所述表示形式中以所述指定底数为底数,指数为所述尾数次幂的项式;将所述项式展开为二进制多项式,获得所述指定底数的指数次幂的多项连乘式;将所述多项连乘式中的以所述指定底数为底数,以2的整数次幂开方确定所述多项连乘式中项式的所述幂值;根据所述幂值,以及与所述幂值对应的所述多项连乘式中的项式序号,构建所述幂值查询表,其中,所述项式序号为所述幂值查询表中的所述索引序号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010545410.XA CN113296732B (zh) | 2020-06-16 | 2020-06-16 | 数据处理方法和装置,处理器及数据搜索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010545410.XA CN113296732B (zh) | 2020-06-16 | 2020-06-16 | 数据处理方法和装置,处理器及数据搜索方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113296732A CN113296732A (zh) | 2021-08-24 |
CN113296732B true CN113296732B (zh) | 2024-03-01 |
Family
ID=77318662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010545410.XA Active CN113296732B (zh) | 2020-06-16 | 2020-06-16 | 数据处理方法和装置,处理器及数据搜索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113296732B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114139693A (zh) * | 2021-12-03 | 2022-03-04 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质和电子设备 |
CN114201140B (zh) * | 2021-12-16 | 2022-08-16 | 千芯半导体科技(北京)有限公司 | 指数函数处理单元、方法和神经网络芯片 |
CN114584284A (zh) * | 2022-04-15 | 2022-06-03 | 支付宝(杭州)信息技术有限公司 | 同态加密操作方法、装置和电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1945488A (zh) * | 2006-11-07 | 2007-04-11 | 北京中星微电子有限公司 | 一种求定点数字信号常用函数值的方法及装置 |
CN102135870A (zh) * | 2010-01-27 | 2011-07-27 | 成都市华为赛门铁克科技有限公司 | 浮点数幂运算处理方法、装置和计算机系统 |
CN102236539A (zh) * | 2011-07-19 | 2011-11-09 | 长沙景嘉微电子有限公司 | 图形芯片设计中求幂算法的实现 |
CN102609236A (zh) * | 2012-01-21 | 2012-07-25 | 天津大学 | 一种应用于gpu中的幂指数运算装置和运算方法 |
CN103809931A (zh) * | 2012-11-06 | 2014-05-21 | 西安元朔科技有限公司 | 一种专用高速浮点指数运算器的设计 |
CN104598197A (zh) * | 2015-01-26 | 2015-05-06 | 中国科学院自动化研究所 | 一种浮点倒数和/或平方根倒数运算方法及其装置 |
CN104615404A (zh) * | 2015-02-15 | 2015-05-13 | 浪潮电子信息产业股份有限公司 | 一种基于查表操作的高速浮点除法部件装置 |
CN108021537A (zh) * | 2018-01-05 | 2018-05-11 | 南京大学 | 一种基于硬件平台的softmax实现方式 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6981009B2 (en) * | 2002-07-09 | 2005-12-27 | Silicon Integrated Systems Corp. | Apparatus and method for computing a logarithm of a floating-point number |
US10761806B2 (en) * | 2017-06-09 | 2020-09-01 | Mitchell K. Alsup | Transcendental calculation unit apparatus and method |
-
2020
- 2020-06-16 CN CN202010545410.XA patent/CN113296732B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1945488A (zh) * | 2006-11-07 | 2007-04-11 | 北京中星微电子有限公司 | 一种求定点数字信号常用函数值的方法及装置 |
CN102135870A (zh) * | 2010-01-27 | 2011-07-27 | 成都市华为赛门铁克科技有限公司 | 浮点数幂运算处理方法、装置和计算机系统 |
CN102236539A (zh) * | 2011-07-19 | 2011-11-09 | 长沙景嘉微电子有限公司 | 图形芯片设计中求幂算法的实现 |
CN102609236A (zh) * | 2012-01-21 | 2012-07-25 | 天津大学 | 一种应用于gpu中的幂指数运算装置和运算方法 |
CN103809931A (zh) * | 2012-11-06 | 2014-05-21 | 西安元朔科技有限公司 | 一种专用高速浮点指数运算器的设计 |
CN104598197A (zh) * | 2015-01-26 | 2015-05-06 | 中国科学院自动化研究所 | 一种浮点倒数和/或平方根倒数运算方法及其装置 |
CN104615404A (zh) * | 2015-02-15 | 2015-05-13 | 浪潮电子信息产业股份有限公司 | 一种基于查表操作的高速浮点除法部件装置 |
CN108021537A (zh) * | 2018-01-05 | 2018-05-11 | 南京大学 | 一种基于硬件平台的softmax实现方式 |
Non-Patent Citations (1)
Title |
---|
基于一阶泰勒级数查表法单精度倒数的设计与实现;晏敏;何欣;李沙;祝龙;赵丽;;计算机工程与科学(07);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113296732A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113296732B (zh) | 数据处理方法和装置,处理器及数据搜索方法和装置 | |
US11249721B2 (en) | Multiplication circuit, system on chip, and electronic device | |
CN105634499B (zh) | 一种基于新短浮点型数据的数据转换方法 | |
CN107977229B (zh) | 一种指令生成过程的复用方法及装置、处理装置 | |
KR20170034217A (ko) | 프로세싱 장치 및 프로세싱 장치에서 연산을 수행하는 방법 | |
CN112651496A (zh) | 一种处理激活函数的硬件电路及芯片 | |
CN113076083A (zh) | 数据乘加运算电路 | |
CN116466910A (zh) | 一种基于浮点数的查表方法、装置、电子设备及存储介质 | |
CN107230190B (zh) | 一种图像双边滤波方法和装置 | |
CN113741858A (zh) | 存内乘加计算方法、装置、芯片和计算设备 | |
US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
CN112200299B (zh) | 神经网络计算装置、数据处理方法及装置 | |
CN115827555B (zh) | 数据处理方法、计算机设备、存储介质和乘法器结构 | |
CN113126954B (zh) | 浮点数乘法计算的方法、装置和算术逻辑单元 | |
TW202333041A (zh) | 執行浮點運算的系統及方法 | |
CN111831257A (zh) | 一种用于计算正弦或余弦函数的实现方法及装置 | |
CN112988110A (zh) | 一种浮点处理装置和数据处理方法 | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
CN107015783B (zh) | 一种浮点角度压缩实现方法及装置 | |
CN115936965A (zh) | 应用于gpu的函数计算系统、方法和装置 | |
WO2005079435A2 (en) | Fast method for calculating powers of two as a floating point data type | |
CN110276072B (zh) | 电子设备、存储介质及基于神经网络的语义意图识别方法 | |
CN117785113B (zh) | 计算装置及方法、电子设备和存储介质 | |
EP3923132B1 (en) | Device for performing multiply/accumulate operations | |
US20210334635A1 (en) | Neural network accelerator configured to perform operation on logarithm domain |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40057994 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |