pytorch 数值类型
pytorch
本文字数:2.2k 字 | 阅读时长 ≈ 8 min

pytorch 数值类型

pytorch
本文字数:2.2k 字 | 阅读时长 ≈ 8 min

以 FP16 来举例,FP16(半精度浮点数)使用 16 位来表示一个数字,其中包括 1 位符号位、5 位指数位和 10 位尾数位(也称为小数或有效位)

1. 数值表示

FP16 的数值可以表示为:
$$
(-1)^S \times 2^{(E - 15)} \times 1.M
$$

其中指数位为5位,范围确实是0到31。指数偏移量(也称为偏置)是为了处理正负指数(负指数就是很小的小数),使得浮点数既能表示很大又能表示很小的数

2. 正规数和非正规数

在计算机科学和数值计算中,浮点数的表示有两种主要形式:正规数和次正规数

次正规数的引入是为了防止在数值计算中出现下溢(underflow)情况,使得即使在非常小的数值范围内仍能表示出非零的数值

1. 正规数

正规数是指其格式符合浮点数标准表示的数值。对于浮点数表示,一般形式为:

$$(-1)^s \times 1.f \times 2^e$$

在正规数中,尾数的整数部分是隐含的1(在二进制系统中),尾数总是以1开头,后面跟随小数部分f

2. 次正规数

次正规数(非正规数)用于表示非常小的浮点数,这些数值太小,以至于不能用正常的浮点数表示方式表示。它们的表示形式为

$$(-1)^s \times 0.f \times 2^{e_{\text{min}}}$$

与正规数不同,次正规数的尾数的整数部分是0。尾数从小数部分f开始。

附带解释

在IEEE 754标准的浮点数表示中,指数部分的某些取值有特殊含义。对于FP16(半精度浮点数),指数部分是5位二进制数,其中

详细解释

1. 指数部分为00000

2. 指数部分为00001到11110

3. 指数部分为11111

因此,正规数的指数范围是00001到11110,而次正规数的指数范围是00000。指数部分11111被专门用于表示无穷大和NaN,不参与正常数值的表示。

3. 数值计算

总结

FP16 格式适用于对精度要求不高但需要较大范围的应用,如机器学习中的加速计算。

指数偏移量

指数偏移量是为了将指数变为无符号数。对于 FP16,偏移量是 15。计算方法如下:

$$\text{实际指数} = E - 15$$

这样做的原因是:

为什么有偏移量?

使用偏移量可以简化硬件实现,因为所有指数都可以用非负数表示。这是浮点数标准化的常见做法。这样,指数存储和比较都更加直接。

希望这能帮助你理解为什么需要指数偏移量。

当然,以下是 FP16 中所有可能的指数位组合,以及对应的实际指数:

存储的指数(5 位二进制) 存储的指数(十进制) 实际指数
00000 0 次正规数
00001 1 -14
00010 2 -13
00011 3 -12
00100 4 -11
00101 5 -10
00110 6 -9
00111 7 -8
01000 8 -7
01001 9 -6
01010 10 -5
01011 11 -4
01100 12 -3
01101 13 -2
01110 14 -1
01111 15 0
10000 16 1
10001 17 2
10010 18 3
10011 19 4
10100 20 5
10101 21 6
10110 22 7
10111 23 8
11000 24 9
11001 25 10
11010 26 11
11011 27 12
11100 28 13
11101 29 14
11110 30 15
11111 31 16

注意:当存储的指数为 00000 时,FP16 表示次正规数而不是归一化数。

好的,让我们通过一些具体的例子来进一步理解 FP16 表示的浮点数是如何计算的:

例子 1: 最小的正规数

例子 2: 最大的正规数

例子 3: 一个较小的非正规数

例子 4: 表示正无穷大

例子 5: 表示 NaN(不是一个数字)

通过这些例子,你可以看到如何根据 E 和 M 的值来计算 FP16 格式的浮点数的具体数值。希望这些例子帮助你更好地理解 FP16 的表示方式!

让我们一步步分析这个 FP16 格式的数字:0 00001 0000000100。

解析:

计算:

这个 FP16 格式的数字表示的大致值是 (6.12 \times 10^{-5})。

更多例子:

例子 1: 1 00001 0000000100

例子 2: 0 10010 1111111111

例子 3: 0 01111 0000000000

这些例子展示了不同的符号、指数和尾数如何影响 FP16 格式浮点数的计算和表示。希望这些例子能帮助你更加深入理解 FP16 浮点数的计算方法!

9月 09, 2024
9月 06, 2024