如果您有定点设计器™许可证,您可以定义定点操作符代码替换项来匹配:
在运算符输入和输出上的仅二值点缩放组合。
算子输入和输出的斜率偏差缩放组合。
乘法或除法运算符输入和输出之间的相对比例或净斜率。使用这些方法中的一种将斜率和偏差值的范围映射到乘法或除法的替换函数。
加减运算符输入和输出的斜率相等,净偏差为零。使用这种方法可以忽略特定的斜率和偏差值,将相对的斜率和偏差值映射到替换函数中进行加减运算。
下表映射了将定点操作符代码替换项与您在代码替换表定义文件中指定的关联定点参数匹配的常见方法。
匹配 | 创建条目 | 最低限度指定参数 |
---|---|---|
在运算符输入和输出上的一个特定的仅二进制点缩放组合。 |
环球套票。TflCOperationEntry |
|
一个特定的斜率偏差缩放组合对操作符的输入和输出。 |
环球套票。TflCOperationEntry |
|
运算符输入和输出之间的净斜率(乘法和除法)。 |
环球套票。TflCOperationEntryGenerator_NetSlope |
|
运算符输入和输出之间的相对比例(乘法和除法)。 |
环球套票。TflCOperationEntryGenerator |
|
相等的斜率和零净偏差在操作者的输入和输出(加和减)。 |
环球套票。TflCOperationEntryGenerator |
|
定点数字使用整数和整数算术表示实数和算术与以下编码方案:
是一个任意精确的现实值。
是由定点表示得到的真实世界的近似值。
是编码的整数吗 ,被称为量子化的整数.
是 ,被称为坡.
是加性校正,称为偏见.
不动点操作数之间的运算的一般方程为:
定点运算符替换的目标是将接受并返回定点或整数输入和输出的运算符替换为接受并返回内置C数字数据类型的函数。下面几节提供每个受支持的操作符的附加编程信息。金宝app
操作V0= V1+ V2意味着
如果定义一个加法替换函数,使操作数和和的比例相等且净偏差相等
是否为零(例如,一个函数s8_add_s8_s8
将两个有符号的8位值相加并生成一个有符号的8位结果),然后操作符条目必须设置操作符条目参数SlopesMustBeTheSame
和MustHaveZeroNetBias
来真正的
.为了匹配替换,所有附加概念参数的斜率必须相同。(参数说明请参见函数参考页面setTflCOperationEntryParameters
.)
操作V0= V1−V2意味着
如果定义一个减法替换函数,使操作数和差值的比例相等且净偏差相等
是否为零(例如,一个函数s8_sub_s8_s8
减去两个有符号的8位值并产生一个有符号的8位结果),然后操作符条目必须设置操作符条目参数SlopesMustBeTheSame
和MustHaveZeroNetBias
来真正的
.为了匹配替换,所有减法概念参数的斜率必须相同。(参数说明请参见函数参考页面setTflCOperationEntryParameters
.)
有不同的方法来指定乘法替换。最直接的方法是指定输入和输出类型的精确匹配。如果一个模型只包含一些已知的斜率和偏差组合,这是可行的。使用TflCOperationEntry
分类并指定每个参数的斜率和偏差的准确值。对于有许多斜率/偏差组合的情况,用不同的条目指定每个值是不可行的。使用净坡度入口或创建自定义入口。
操作V0= V1* V2这意味着,对于仅限二值点的缩放
在哪里年代n是净斜率。
通常用执行c风格乘法的函数替换净斜率为1.0的所有乘法运算。例如,将所有净伸缩性为1.0的带符号8位乘法替换为s8_mul_s8_u8_
替换函数,算子入口必须定义一个净斜率因子,F2E.您指定的值F和E使用操作符输入参数NetSlopeAdjustmentFactor
和NetFixedExponent
.为s8_mul_s8_u8
函数,设置NetSlopeAdjustmentFactor
1,NetFixedExponent
到0.0。另外,设置操作符输入参数SlopesMustBeTheSame
来假
和参数MustHaveZeroNetBias
来真正的
.为了匹配替代,对所有乘法概念的争论,偏差必须为零。(参数说明请参见函数参考页面setTflCOperationEntryParameters
.)
当操作符条目指定NetSlopeAdjustmentFactor
和NetFixedExponent
,匹配项的参数必须为零偏差。
有不同的方法来指定除法替换。最直接的方法是指定输入和输出类型的精确匹配。如果一个模型只包含一些已知的斜率和偏差组合,这是可行的。使用TflCOperationEntry
分类并指定每个参数的斜率和偏差的准确值。对于有许多斜率/偏差组合的情况,用不同的条目指定每个值是不可行的。使用净坡度入口或创建自定义入口(见定制匹配和替换过程).
操作V0= (V1/ V2)这意味着,对于仅限二值点的缩放
在哪里年代n是净斜率。
用执行c风格除法的函数替换净斜率为1.0的所有除法操作是很常见的。例如,将所有净伸缩性为1.0的带符号8位除法替换为s8_mul_s8_u8_
替换函数,算子入口必须定义一个净斜率因子,F2E.您指定的值F和E使用操作符输入参数NetSlopeAdjustmentFactor
和NetFixedExponent
.为s16_netslope0p5_div_s16_s16
函数NetSlopeAdjustmentFactor
1,NetFixedExponent
到0.0。另外,设置操作符输入参数SlopesMustBeTheSame
来假
和参数MustHaveZeroNetBias
来真正的
.为了匹配替换,所有划分概念的论点的偏差必须为零。(参数说明请参见函数参考页面setTflCOperationEntryParameters
.)
当操作符条目指定NetSlopeAdjustmentFactor
和NetFixedExponent
,匹配项的参数必须为零偏差。
数据类型转换操作V0= V1这意味着,对于仅限二值点的缩放
在哪里年代n是净斜率。设置操作员入口参数SlopesMustBeTheSame
来假
和参数MustHaveZeroNetBias
来真正的
.为了匹配替换,对所有cast概念论证的偏差必须为零。(参数说明请参见函数参考页面setTflCOperationEntryParameters
.)
左移或右移操作V0= (V1/ 2n)这意味着,对于仅限二值点的缩放
在哪里年代n是净斜率。设置操作员入口参数SlopesMustBeTheSame
来假
和参数MustHaveZeroNetBias
来真正的
.为了匹配替代,所有转变概念的论点的偏差必须为零。(参数说明请参见函数参考页面setTflCOperationEntryParameters
.)