主要内容

深神经网络的量化

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

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

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

了解量化和部署深度学习网络所需的产品,下载188bet金宝搏以GPU,FPGA或CPU环境,参见量化工作流先决条件(深度学习工具箱)

精度和范围

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

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

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

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

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

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

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

动态范围的直方图

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

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

    为参数记录的值的示意图表示。

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

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

    适用于表中显示的每个记录值的理想二进制表示,最高有效位以黄色突出显示。

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

    MSB在表底部显示的每列中的总和,并以绿色突出显示。

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

    MSB计数显示为热图,具有较深的区域,对应于位位置的较大数量的MSB。

  5. 深网络量化器App分配一个可以避免溢出,覆盖范围的数据类型,并允许下溢。需要一个附加的符号位来表示值的签名。

    下图显示了表示2的数据类型的示例3.到2.-3,包括符号位。

    原始值的二进制表示表,其中区域2 ^ 3到2 ^ -3和边界框突出显示的符号位列。

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

    值的二进制表示表,非可表示位灰色。右侧的表显示了8位二进制表示和量化值。

    在该示例中,值0.03125遭受下溢,因此量化值为0.值2.1遭受一些精度损耗,因此量化值为2.125。值16.250大于数据类型的最大可表示值,因此该值溢出,量化值饱和至15.874。

    同一个表,具有代表性的下溢,精度损失和溢出在右侧表中的溢出。

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

    深网络量化器应用程序显示的热图直方图的示意图。

也可以看看

应用

职能

相关话题