FP16数据格式详解

2023-12-23 22:36
文章标签 详解 数据格式 fp16

本文主要是介绍FP16数据格式详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 浮点格式说明

浮点数的格式通常由三部分组成:符号位(Sign bit)、指数部分(Exponent)和尾数部分(Significand/Fraction)。整个浮点数占用的位数取决于不同的浮点数格式。例如,IEEE 754标准的单精度浮点数(float)有32位,双精度浮点数(double)有64位。参考:Floating-point arithmetic

最终的浮点表示如下,s是significand;p是precision精度(significand中的数字的个数);b是base,这里base用的是10或者2。
s b p − 1 × b e \frac{s}{b^{p-1}} \times b^e bp1s×be

一个具体的示例如下:
在这里插入图片描述

float32/bfloat16/float16/tf32三种格式的比较:
在这里插入图片描述

2. Normal number

最小的normal number用 b E m i n b^{E_{min}} bEmin 表示,最大的normal number用
b E m a x ⋅ ( b − b 1 − p ) b^{E_{max}} \cdot (b-b^{1-p}) bEmax(bb1p) ,其中 E m i n = ( − E m a x ) + 1 E_{min} = (-E_{max}) + 1 Emin=(Emax)+1。常用的格式如下:
在这里插入图片描述

3. FP16 Subnormal number

低能数(Subnormal numbers)是指那些比通常能够表示的数字要小的数字。在浮点数的规格化表示中,如果一个数的指数部分全为0且尾数部分不为0,那么这个数就被称为低能数。

对于FP16来说,sign是1位,exponent是5位,fraction是10位。

在这里插入图片描述

对于Exponent表示的范围如下:

  • E m i n = 0000 1 2 − 0111 1 2 = − 14 E_{min} = 00001_2 - 01111_2 = -14 Emin=000012011112=14
  • E m a x = 1111 0 2 − 0111 1 2 = 15 E_{max} = 11110_2 - 01111_2 = 15 Emax=111102011112=15
  • E x p o n e n t b i a s = 0111 1 2 = 15 Exponent\ bias = 01111_2 = 15 Exponent bias=011112=15

对于FP16表示的范围如下,当Exponent为0且Significand不为0时,对应就是subnormal number的范围,也就是 0.000000059604645 ∼ 0.000060975552 0.000000059604645 \sim 0.000060975552 0.0000000596046450.000060975552

在这里插入图片描述
在这里插入图片描述

4. 参考

  • FP16数据格式详解

这篇关于FP16数据格式详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/529699

相关文章

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

Spring Cache注解@Cacheable的九个属性详解

《SpringCache注解@Cacheable的九个属性详解》在@Cacheable注解的使用中,共有9个属性供我们来使用,这9个属性分别是:value、cacheNames、key、key... 目录1.value/cacheNames 属性2.key属性3.keyGeneratjavascriptor

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Java 的 Condition 接口与等待通知机制详解

《Java的Condition接口与等待通知机制详解》在Java并发编程里,实现线程间的协作与同步是极为关键的任务,本文将深入探究Condition接口及其背后的等待通知机制,感兴趣的朋友一起看... 目录一、引言二、Condition 接口概述2.1 基本概念2.2 与 Object 类等待通知方法的区别

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java实例化对象的​7种方式详解

《Java实例化对象的​7种方式详解》在Java中,实例化对象的方式有多种,具体取决于场景需求和设计模式,本文整理了7种常用的方法,文中的示例代码讲解详细,有需要的可以了解下... 目录1. ​new 关键字(直接构造)​2. ​反射(Reflection)​​3. ​克隆(Clone)​​4. ​反序列化