主要内容

深神经网络的量化

在数字硬件中,数字以二进制单词存储。二进制单词是一个固定长度的位序列(1和0's)。数据类型定义硬件组件或软件功能如何解释此序列为1和0。数字表示为缩放整数(通常称为固定点)或浮点数据类型。

使用深度学习工具箱™使用单精度浮点数据类型的最多备用的神经网络和神经网络。即使是小训练的神经网络也需要相当数量的存储器,并且需要能够执行浮点算术的硬件。这些限制可以抑制低功耗微控制器和FPGA的深度学习能力的部署。

使用深度学习工具箱型号量化库支持包,您可以量化网络以使用8位缩放的整数数据类型。金宝app

神经网络的量化需要GPU,用于深度学习库的GPU编码器™接口金宝app支持包,以及深度学习工具箱模型量化库支持包。使用GPU需要CUDA®启用nvidia.®GPU具有计算能力6.1,6.3或更高。

精度和范围

与单精度浮点数据类型相比,缩放的8位整数数据类型具有有限的精度和范围。当从较大的浮点数据类型施放到较小的数据类型时,存在几个数值注意事项。

  • 精度损耗:精度损耗是舍入误差。当发生精度损耗时,该值将舍入到最接近的数字,该数字由数据类型表示。在将它绑在一起的情况下:

    • 正无穷大的方向上最接近可增值值的正数。

    • 负数到负无穷大的方向上最接近的可代表值。

    在matlab.®您可以使用此类舍入圆形的功能。

  • 下溢:下溢是一种精度损耗。当值小于数据类型表示的最小值时,会出现溢出。发生这种情况时,值达到零。

  • 溢出:当值大于数据类型可以表示的最大值时,发生溢出。发生溢出时,该值达到数据类型表示的最大值。

动态范围的直方图

使用深网络量化器应用程序收集和可视化卷积层的权重和偏置的动态范围和网络的完全连接层,以及网络中所有层的激活。该应用程序为网络的卷积层的权重,偏置和激活分配缩放的8位整数数据类型。该应用程序显示每个参数的动态范围的直方图。以下步骤描述了如何产生这些直方图。

  1. 考虑在锻炼网络时记录参数的以下值。

  2. 找到参数的每个记录值的理想二进制表示。

    最高有效位(MSB)是二进制单词的左左侧。该位对数字的值贡献。每个值的MSB以黄色突出显示。

  3. 通过对齐二进制单词,您可以看到参数的记录值使用的位的分布。MSB在每个列中的MSB之和以绿色突出显示,介绍了记录值的汇总视图。

  4. 显示每个位位置的MSB计数作为热图。在该热图中,较暗的蓝色区域对应于位位置的更大数量的MSB。

  5. 该软件分配数据类型,可以表示捕获最多信息的位位置。在此示例中,软件选择表示2位的数据类型3.到2.-3。需要一个附加的符号位来表示值的签名。

  6. 分配数据类型后,将删除该数据类型之外的任何位。由于分配较小的数据类型的固定长度,精度损耗,溢出和下溢,所以不可通过数据类型表示的值。

    在这个例子中,该值0.03125,从下溢症,所以量化值是0。值2.1遭受一些精度损失,所以该量化值是2.125。值16.250大于数据类型的最大可表示值,因此该值溢出,量化值饱和至15.874。

  7. 深度网络量化器应用程序在卷积层和网络的完全连接层中显示每个可学习参数的此热映射直方图。直方图的灰色区域显示了无法由数据类型表示的位。

也可以看看

应用

职能