失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 单精度 双精度和精度(转载)

单精度 双精度和精度(转载)

时间:2023-07-26 21:13:18

相关推荐

单精度 双精度和精度(转载)

浮点数是计算机上最常用的数据类型之一,有些语言甚至数值只有浮点型(Perl,Lua同学别跑,说的就是你)。

常用的浮点数有双精度和单精度。除此之外,还有一种叫半精度的东东。

双精度64位,单精度32位,半精度自然是16位了。

半精度是英伟达在2002年搞出来的,双精度和单精度是为了计算,而半精度更多是为了降低数据传输和存储成本。

很多场景对于精度要求也没那么高,例如分布式深度学习里面,如果用半精度的话,比起单精度来可以节省一半传输成本。考虑到深度学习的模型可能会有几亿个参数,使用半精度传输还是非常有价值的。

Google的TensorFlow就是使用了16位的浮点数,不过他们用的不是英伟达提出的那个标准,而是直接把32位的浮点数小数部分截了。据说是为了less computation expensive。。。

比较下几种浮点数的layout:

双精度浮点数

单精度浮点数

半精度浮点数

它们都分成3部分,符号位,指数和尾数。不同精度只不过是指数位和尾数位的长度不一样。

解析一个浮点数就5条规则

如果指数位全零,尾数位是全零,那就表示0

如果指数位全零,尾数位是非零,就表示一个很小的数(subnormal),计算方式 (−1)^signbit × 2^−126 × 0.fractionbits

如果指数位全是1,尾数位是全零,表示正负无穷

如果指数位全是1,尾数位是非零,表示不是一个数NAN

剩下的计算方式为 (−1)^signbit × 2^(exponentbits−127) × 1.fractionbits

常用的语言几乎都不提供半精度的浮点数,这时候需要我们自己转化

原文地址:/sinat_24143931/article/details/78557852

如果觉得《单精度 双精度和精度(转载)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。