深层网络量化器

数字转换深神经网络对8位整数数据类型

描述

使用深层网络量化器通过量化权重、偏差和激活卷积层的8位比例整数数据类型,减少深度神经网络的内存需求。使用此应用程序,您可以:

  • 在深度神经网络中可视化卷积层的动态范围。

  • 选择要量化的单个网络层。

  • 评估量化网络的性能。

  • 使用GPU编码器生成GPU代码来部署量化网络。

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

打开深度网络量化器应用程序

  • MATLAB®命令提示符:输入deepNetworkQuantizer

例子

全部展开

若要探索具有量化卷积层的神经网络的行为,请使用深层网络量化器的卷积层的可学习参数量化squeezenet神经网络经过再训练后,根据神经网络对新图像进行分类训练深度学习网络对新图像进行分类的例子。

将网络加载到基本工作区中进行量化。

属性:Layers: [68x1 nnet.cn .layer. layer]连接:[75x2表]InputNames: {'data'} OutputNames: {'new_classoutput'}

定义校准和验证数据。

该应用程序使用校准数据来运行网络,并收集网络卷积层和全连接层中权重和偏差的动态范围,以及网络各层中激活的动态范围。为了获得最佳量化结果,校准数据必须代表网络的输入。

app使用验证数据对量化后的网络进行测试,了解量化后的卷积层的可学习参数的有限范围和精度对网络的影响。

在本例中,使用MerchData定义一个augmentedImageDatastore对象来调整网络数据的大小。然后,将数据分成校准和验证数据集。

解压缩(“MerchData.zip”);imd = imageDatastore (“MerchData”,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);[calData, valData] = splitEachLabel(imds, 0.7,“随机”);aug_calData = augmentedImageDatastore([227 227], calData);aug_valData = augmentedImageDatastore([227 227], valData);

在MATLAB命令提示符下,打开app。

deepNetworkQuantizer

在应用程序中,单击按钮。应用程序验证您的执行环境。使用深层网络量化器应用程序,你必须有一个GPU执行环境。如果没有可用的GPU,这一步将产生一个错误。

在对话框中,从基本工作区中选择要量化的网络。

选择一个网络

选择网络后,app显示网络的层图。

校准工具条的部分,在下面校准数据,选择augmentedImageDatastore对象,该对象来自包含校准数据的基本工作空间,calData

点击校准

深层网络量化器利用标定数据对网络进行锻炼,并收集网络层中可学习参数的范围信息。

校准完成后,app会显示一个表格,包含网络卷积层和全连接层的权值和偏差,以及在校准过程中网络各层激活的动态范围和最大值和最小值。在表格的右边,应用程序显示参数动态范围的直方图。直方图的灰色区域表示无法用量化表示的数据。有关如何解释这些直方图的更多信息,请参见深度神经网络的量化

深度网络量化器校准

数字转换列,表示是否量化层中的可学习参数。非卷积层不能量化,因此不能被选择。未量化的层在量化后仍保持单精度。

验证工具条的部分,在下面验证数据,选择augmentedImageDatastore对象,来自包含验证数据的基本工作区,valData

点击数字转换和验证

深层网络量化器将网络中卷积层的权重、激活和偏差量化为缩放的8位整数数据类型,并使用验证数据来运行网络。该应用程序根据被量化的网络类型确定用于验证的度量函数。

类型的网络 度量函数
分类

(精度——网络的准确性

回归

均方误差-网络的平均平方误差

验证完成后,app会显示验证结果,包括:

  • 用于验证的度量函数

  • 量化前后度量函数的结果

  • 量化前后网络的内存需求(MB)

深度网络量化器验证

量化和验证网络之后,您可以选择导出量化网络。

单击出口按钮。在下拉列表中,选择出口数字转换器创建一个dlquantizer对象,在基本工作区中。打开GPU编码器应用程序和生成GPU代码,从量化神经网络,选择生成代码。生成GPU代码需要GPU编码器许可证。

如果量化网络的性能不令人满意,您可以通过取消选择表中的某个层来选择不量化某些层。要查看效果,请单击数字转换和验证一次。

相关的例子

介绍了R2020a