减少尾数位宽

     2023-04-14     21

关键词:

【中文标题】减少尾数位宽【英文标题】:Reduce mantissa bit-width 【发布时间】:2013-10-17 15:38:52 【问题描述】:

好吧,我很尴尬,我自己不能得到这个,但是..我怎样才能减少尾数(和指数)位-with 表示浮点数?


我正在训练一个(卷积)人工神经网络(我正在 FPGA 上实现它),我想研究尾数(和指数)位宽与测试(和训练)精度之间的关系CPU(和 GPU)。下一步是将我的浮点数转换为定点表示(这就是我在 FPGA 上使用的),然后看看情况如何。

其他人已经做过类似的研究([Tong, Rutenbar and Nagle (1998)] 和 [Leeser and Zhao (2003)]),所以应该有一种方法可以做到这一点,尽管“如何”我还不清楚。

最后一点,我正在使用 Lua 进行编程,但我可以轻松地将 C 内容包含在 LuaJIT 的 ffi 中。

【问题讨论】:

【参考方案1】:

要从二进制浮点数 x 的有效位中删除 s 位并舍入剩余位,请使用 Veltkamp 算法:

Let factor = 2**s + 1.
Let c = factor * x.
Let y = c - (c-x).

上面的每个操作都应该用浮点算法计算,包括以与 x 相同的精度舍入到最近。那么y就是想要的结果。

请注意,这会将单个数字四舍五入为较短的有效位。它通常不会重现具有较短有效位的计算结果。例如,给定 ab,以更高的精度计算 ab 然后四舍五入到更小的精度不会总是与以最终精度计算 ab 的结果相同。

要减小指数范围,您只需将一个值与新指数范围的阈值进行比较,并根据需要声明下溢或上溢。

【讨论】:

非常感谢。这将是很好的考虑,因为现在我只是在点之后的特定位截断我的浮点数 (number:mul(2^b):floor():div(2^b))因为我们仍在使用静态定点数。明年我们可能会切换到动态定点,然后我将处理尾数:)

jvm之浮点数(float)表示

1.浮点数的组成:符号位、指数位、尾数位。 1.1符号位:占1位,表示正负数;  1.2指数位:占8位;  1.3尾数位:占23位。 2. 浮点数的表示:  2.1取值:sflag*m*2(e-127)    2.1.1sflag:符号... 查看详情

bzoj4513[sdoi2016]储能表数位dp

...储存的总能量是,随着时间的推移,格子中的能量会渐渐减少。一个时间单位,每个格子中的能量都会减少1。显然,一个格子的能量减少到0之后就不会再减少了。也就是说,k 查看详情

numpy数据类型(代码片段)

...loat64类型的简写 float16半精度包括:1个符号位,5个指数位,10个尾数位float32 单精度浮点数,包括:1个符号位,8个指数位,23个尾数位float64 双精度浮点数,包括:1个符号位,11个指数位,52个尾数位complex_ 128位的... 查看详情

浮点数的存储与表达(代码片段)

...法如下(以单精度为例):单精度(32位)=1位符号位+8位指数位+23位尾数位,见下图。其中,符号位用来表示数值的符号。关于指数位和尾数位,需要先了解计算机表示浮点数的原理。计 查看详情

float和double类型在java各是多少位啊

...。float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位)8bits(指数位)23bits(尾数位)double:1bit(符号位)11bits(指数位)52bits(尾数位)于是,float的指数范... 查看详情

float与double的范围和精度

...double的范围是由指数的位数来决定的。  float的指数位有8位,而double的指数位有11位,分布如下:  float:  1bit(符号位)8bits(指数位)23bits(尾数位)  double:  1bit(符号位)11bits(指数位... 查看详情

arc102drevengeofbbubbblesort!(代码片段)

...不合法的。注意到对原排列进行一次操作,会让逆序对数减少(3)。我们把奇数位和偶数位分成两个排列,那么对原排列进行一次操作,会让这两个排列中的某个排列的逆序对数减少(1)。因此第二个必要条件是原排列的逆序对数为... 查看详情

浮点数存储方式(代码片段)

...么存储在计算机中  浮点型变量是由符号位+阶码位+尾数位组成。  float型数据二进制为32位,符号位1位,阶码8位,尾数23位  double型数据二进制为64位,符号位1位,阶码11位,尾数52位|--单精度32位存储  1bit 8bit 23bit|--... 查看详情

c++中float,double到底保留几位有效数字

...后在输出语句之前插入cout<<setprecision(20);强制输出小数位。拓展资料float与double的范围和精度1、范围float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位)8bi... 查看详情

在金融服务计算中,必须要使用bigdecimal(代码片段)

...还款金额、代收本金、代收收益等的计算,都会涉及到小数位精度问题。 首先,我们理解小数位数据类型为浮点类型。 字节:一个英文字符,占一个字节,即8位(bite),计算机中的最小储存单元是位(bite),即存的是... 查看详情

java-保留x个小数位(代码片段)

...或除以十的适当次幂来确定,以维护其总值。如果该操作减少标度,则非标度值必须被除(而不是乘),并且该值可以更改;在这种情况下,将指定的舍入模式应用到除法中。参数: 查看详情

处理长尾问题:class-balancedlossbasedoneffectivenumberofsamples

...B二分类问题,数据集中,A、B数据量比例为999:1,为了减少损失值,网络很自然的将所有图片都分到A类,这样准确率为99.9%,但是明显这个网络不能用。为了解决长尾问题,前人也提出了不少办法,比如 查看详情

动手动脑

...结果如下这个结果很意外,原因是java的浮点度符号位S_指数位E_尾数位M例如,一个float类型的数据占用4个字节共32位 查看详情

float和double的区别

...242、表达指数不同float的表达式为1bit(符号位)+8bits(指数位)+23bits(尾数位)double的表达式为1bit(符号位)+11bits(指数位)+52bits(尾数位)3、有效位数不同Float只能提供七位有效数字。Double可以提供16位有效数字。4、占用... 查看详情

小技巧一种简单的办法在verilog中处理小数运算

...0c;B1B2B3B4B5B6B7B8为小数。做加法减法的时候,不考虑整数位位宽不够用的情况,那么可以直接相加:A1A2A3A4B1B2B3B4B5B6B7B8.+A1A2A3A4B1B2B3B4B5B6B7B8.这个就维持了加减法小数位不增加的原则。如果是乘法,不考虑整数位... 查看详情

如何使用 JavaScript 减少视频的长度? [关闭]

】如何使用JavaScript减少视频的长度?[关闭]【英文标题】:HowtoreducethelengthofavideousingJavaScript?[closed]【发布时间】:2016-12-1221:25:20【问题描述】:我正在尝试从头或尾修剪浏览器中视频的长度。我目前拥有的是一个使用MediaRecorderA... 查看详情

java基础部分笔记(学习流程)

...35Long:float取值范围比long大Float:32位:1个符号位,8个指数位,23个尾数位Double:64  :1     & 查看详情

数位dp套路模板(代码片段)

...DP因为会出现重复出现的状态,使用记忆化搜索可以减少重复的搜索,减少复杂度。一.记忆化搜索的过程​从起点向下搜索,搜索的途中累加每一位的答案,最后在起点得到答案。二.区间转化为[0,X]​对于[L,R]的... 查看详情