主要内容

深层网络量化器

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

描述

使用深层网络量化器应用以减少内存需求的深层神经网络权重量化,偏见,和激活卷积层8位整数数据类型。使用这个应用程序,您可以:

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

  • 选择个人网络层数字转换。

  • 评估量化网络的性能。

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

  • 生成HDL代码部署量化网络使用深度学习FPGA HDL工具箱™。

  • 生成c++代码部署量化网络手臂Cortex-A单片机使用MATLAB®编码器™

  • 生成一个simulatable量子化的网络,您可以探索在MATLAB生成代码或部署到硬件。

这个应用程序要求深度学习工具箱量化模型库。了解数字转换所需的产品深神经网络,看到下载188bet金宝搏的量化工作流先决条件

打开深层网络量化器的应用

  • MATLAB命令提示:输入deepNetworkQuantizer

  • MATLAB将来发布:应用程序选项卡,在机器学习和深度的学习,点击应用程序图标。

例子

全部展开

探索的行为与量化卷积神经网络层,使用深层网络量化器应用。本例中对可学的卷积层的参数squeezenet神经网络后再培训网络分类根据新图像火车深入学习网络对新图像进行分类的例子。

这个示例使用DAG网络与GPU执行环境。

网络数字转换加载到基本工作空间。

负载squeezenetmerch
网= DAGNetwork属性:层:[68×1 nnet.cnn.layer.Layer]连接:[75×2表]InputNames:{“数据”}OutputNames: {“new_classoutput”}

定义校准和验证数据。

运动网络应用程序使用校准数据和收集的动态范围重量和偏见的卷积和完全连接层的网络和动态范围激活所有层的网络。最好的量化结果,校准数据必须输入到网络的代表。

应用程序使用量化后的验证数据来测试网络了解的有限的范围和精度的影响量化可学的卷积层网络的参数。

在这个示例中,使用的图像MerchData定义一个数据集augmentedImageDatastore调整对象的数据网络。然后,将数据分为校准和验证数据集。

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

在MATLAB命令提示符下,打开应用程序。

deepNetworkQuantizer

在这个应用程序中,单击并选择数字转换网络

应用程序验证你的执行环境。有关更多信息,请参见量化工作流先决条件

在对话框中,选择执行环境和网络数字转换的基础工作。对于这个示例,选择一个GPU执行环境和DAG网络,

app-dnq-select-net.png

应用程序显示选定的网络层图。

校准将来发布的部分校准数据,选择augmentedImageDatastore对象从工作区包含校准数据,aug_calData。选择校准

深层网络量化器运动网络使用校准数据和信息收集范围可学的参数在网络层。

校准完成后,应用程序显示一个表包含重量和偏见的卷积和完全连接层网络和动态范围的各层网络的激活,在校准他们的最小和最大值。右边的表,应用程序显示的动态范围参数的直方图。灰色区域的直方图显示的数据不能代表的量化表示。如何解释这些直方图的更多信息,参见量子化的神经网络

app-dnq-calibrate.png

数字转换列的表,指示是否可学的参数进行量化在层。层没有量化的量化后留在单精度。

验证将来发布的部分验证数据,选择augmentedImageDatastore从基本工作空间包含验证数据对象,aug_valData

验证将来发布的部分量化的选择,选择默认的度量函数和极大极小指数方案。选择数字转换和验证

深层网络量化器量化权重、激活和偏见的卷积层网络扩展8位整数数据类型和使用验证数据网络运动。应用程序决定了一个默认度量函数用于验证基于网络的类型是量子化的。一个分类网络,应用程序使用(精度。

验证完成后,应用程序显示的结果验证,包括:

  • 度量函数用于验证

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

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

app-dnq-validate.png

如果你想使用一个不同的度量函数进行验证,例如使用前5精度度量函数而不是默认的(精度度量函数,您可以定义一个自定义的度量函数。这个函数保存在一个本地文件。

函数精度= hComputeModelAccuracy (predictionScores,净,数据存储)% %计算模型级精度的统计数据%负载地面实况tmp = readall(数据存储);groundTruth = tmp.response;%与预测标签与实际地面真理predictionError = {};idx = 1:元素个数(groundTruth)[~,类似]= max (predictionScores (idx:));yActual = net.Layers(结束). class(补贴);predictionError{结束+ 1}= (yActual = = groundTruth (idx));% #好吧结束%和所有预测错误。predictionError = [predictionError {}):;精度= (predictionError) /元素个数之和(predictionError);结束

使用这个自定义度量函数,重新验证网络量化的选择,输入自定义度量函数的名称,hComputeModelAccuracy。选择添加添加hComputeModelAccuracy可用的指标函数列表的应用程序,选择hComputeModelAccuracy作为度量函数来使用。

自定义指标函数必须的道路上。如果度量函数没有路径,这一步将产生一个错误。

app-dnq-custom-metric-fcn.png

选择数字转换和验证

应用程序对网络和显示自定义度量函数的验证结果。

app-dnq-custom-metric-fcn-validate.png

应用程序验证结果表中只显示标量值。查看验证结果与非标量输出自定义度量函数,导出dlquantizer对象如下所述,然后验证使用验证函数在MATLAB命令窗口。

如果量化网络的性能不满意,你可以选择不量化表中的一些层通过取消勾选层。还可以探索的影响,选择不同的指数量化的选择方案量化的选择菜单。看到这些变化的影响,选择数字转换和验证一次。

校准网络之后,可以选择出口或量化网络dlquantizer对象。选择出口按钮。下拉,选择从以下选项:

  • 出口量化网络——量化网络添加到基本工作空间。这个选项出口simulatable量子化的网络,您可以探索在MATLAB部署到硬件。

  • 出口数字转换器——添加dlquantizer对象的基本工作空间。你可以保存dlquantizer为进一步勘探对象,并使用它深层网络量化器应用程序或在命令行中,或者为你的目标硬件使用它来生成代码。

  • 生成代码——打开GPU编码器应用程序并生成GPU从量化神经网络代码。生成GPU代码需要一个GPU编码器™许可证。

这个例子展示了如何导入dlquantizer对象从基本工作空间深层网络量化器应用。这允许您开始量化的深层神经网络使用命令行或应用程序,并恢复你的工作后的应用程序。

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

deepNetworkQuantizer

在这个应用程序中,单击并选择进口dlquantizer对象

深层网络量化器进口dlquantizer对象

在对话框中,选择dlquantizer从基工作区对象导入。对于这个示例,使用quantObj您在上面的示例中创建的数字转换为GPU神经网络的目标。

选择要导入的dlquantizer对象

应用进口中包含任何数据dlquantizer对象,收集在命令行。这个数据可以包括网络数字转换,校准数据,验证数据,校准数据。

这个应用程序显示一个包含中包含校准数据导入表dlquantizer对象,quantObj。右边的表,应用程序显示的动态范围参数的直方图。灰色区域的直方图显示的数据不能代表的量化表示。如何解释这些直方图的更多信息,参见量子化的神经网络

深层网络量化器应用程序显示校准数据。

探索的行为量化卷积层神经网络,使用深层网络量化器应用。本例中对可学的卷积层的参数LogoNet神经网络的FPGA的目标。

对于这个示例,您需要的产品上市下载188bet金宝搏FPGA量化工作流先决条件

加载pretrained网络数字转换成基本工作空间。创建一个文件在你当前的工作目录getLogoNetwork.m。在文件中,输入:

函数网= getLogoNetwork如果~ isfile (“LogoNet.mat”)url =“//www.tatmou.com/金宝appsupportfiles/gpucoder/cnn_models/logo_detection/LogoNet.mat”;websave (“LogoNet.mat”url);结束data =负载(“LogoNet.mat”);网= data.convnet;结束

加载pretrained网络。

snet = getLogoNetwork;
snet = SeriesNetwork属性:层:[22×1 nnet.cnn.layer.Layer] InputNames: {“imageinput”} OutputNames: {“classoutput”}

为量化定义校准和验证数据使用。

深层网络量化器运动网络应用程序使用校准数据和收集的动态范围重量和偏见的卷积和完全连接层网络。软件还练习的动态范围激活LogoNet网络的所有层。最好的量化结果,校准数据必须输入LogoNet网络的代表。

量化后,应用程序使用验证数据集测试网络了解的有限的范围和精度的影响量化可学的卷积层网络的参数。

在这个示例中,使用的图像logos_dataset校准和验证LogoNet网络数据集。定义一个imageDatastore对象,然后把数据分割成校准和验证数据集。

加快这个例子的校准和验证过程通过使用校准和验证数据的一个子集。存储新的减少校准数据集calData_concise和新的减少验证数据集valData_concise

currentDir = pwd;newDir = fullfile (matlabroot,“例子”,“deeplearning_shared”,“数据”,“logos_dataset.zip”);拷贝文件(newDir currentDir);解压缩(“logos_dataset.zip”);imd = imageDatastore (fullfile (currentDir“logos_dataset”),“IncludeSubfolders”,真的,“FileExtensions”,“jpg”,“LabelSource”,“foldernames”);[calData, valData] = splitEachLabel (imd, 0.7,“随机”);calData_concise = calData.subset (1:20);valData_concise = valData.subset (1:6);

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

deepNetworkQuantizer

点击并选择数字转换网络

设置执行环境FPGA和选择snet——SeriesNetwork随着网络数字转换。

选择一个执行环境和网络数字转换。

应用程序显示选定的网络层图。

校准数据,选择calData_concise——ImageDatastore从包含校准的基本工作空间数据对象。

点击校准。默认情况下,应用程序使用主机GPU来收集校准数据,如果一个是可用的。否则,主机CPU使用。您可以使用校准下拉菜单选择校准环境。

深层网络量化器运动网络应用程序使用校准数据和信息收集范围可学的参数在网络层。

校准完成后,应用程序显示一个表包含重量和偏见的卷积和完全连接层网络。也显示的动态范围激活所有层的网络和他们的最小和最大值在校准记录。应用程序显示直方图动态范围的参数。灰色区域的直方图显示的数据不能代表的量化表示。如何解释这些直方图的更多信息,参见量子化的神经网络

深层网络量化器校准

数字转换层列的表,指示是否可学的参数进行量化在层。层不量化留在单精度。

验证数据,选择valData_concise——ImageDatastore从包含验证的基本工作空间数据对象。

硬件设置将来发布的部分,选择环境量化网络的使用进行验证。关于这些选项的更多信息,请参阅硬件设置

对于这个示例,选择Xilinx ZC706 (zc706_int8)JTAG

深层网络量化器硬件设置

量化的选择,选择默认的度量函数和极大极小指数方案。关于这些选项的更多信息,请参阅量化的选择

点击数字转换和验证

深层网络量化器应用量化权重、激活和偏见的卷积层网络扩展8位整数数据类型和使用验证数据网络运动。应用程序决定了一个默认度量函数用于验证基于网络的类型是量子化的。有关更多信息,请参见量化的选择

验证完成后,应用程序显示验证结果。

深层网络量化器验证

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

单击出口按钮。在下拉列表中,选择出口数字转换器创建一个dlquantizer对象的基本工作空间。你可以量化的网络部署到你的目标FPGA板和检索利用MATLAB的预测结果。例如,看到的部署量化网络的例子(深度学习HDL工具箱)

相关的例子

参数

当您选择New >数字转换网络,这个应用程序允许您选择量化网络的执行环境。网络是如何量化取决于执行环境的选择。

当您选择MATLAB执行环境,应用程序执行target-agnostic量子化的神经网络。这个选项不需要你目标硬件为了探索在MATLAB量化网络。

指定的硬件设置根据你的执行环境。

  • GPU执行环境

    选择从下面的仿真环境:

    模拟环境 行动

    GPU

    模拟主机GPU

    部署量化网络主机GPU。验证单精度的量化网络通过比较性能的网络版本。

    MATLAB

    在MATLAB模拟

    在MATLAB模拟了量化网络。验证单精度的量化网络通过比较性能的网络版本。

  • FPGA执行环境

    选择从下面的仿真环境:

    模拟环境 行动

    MATLAB

    在MATLAB模拟

    在MATLAB模拟了量化网络。验证单精度的量化网络通过比较性能的网络版本。

    英特尔Arria 10 SoC

    arria10soc_int8

    将量化网络部署到一个英特尔®Arria®10 SoC董事会通过arria10soc_int8比特流。验证单精度的量化网络通过比较性能的网络版本。

    Xilinx ZCU102

    zcu102_int8

    部署Xilinx量化网络®Zynq®UltraScale +™MPSoC ZCU102 10 SoC董事会通过zcu102_int8比特流。验证单精度的量化网络通过比较性能的网络版本。

    Xilinx ZC706

    zc706_int8

    部署量化网络Xilinx zynq - 7000 ZC706董事会通过zc706_int8比特流。验证单精度的量化网络通过比较性能的网络版本。

    当您选择英特尔Arria 10 SoC,Xilinx ZCU102,或Xilinx ZC706另外选择,选择要使用的接口部署和验证量子网络。

    目标的选择 行动
    JTAG 项目目标FPGA板下选择模拟环境通过使用一个JTAG电缆。有关更多信息,请参见JTAG连接(深度学习HDL工具箱)
    以太网 项目目标FPGA板中选择模拟环境通过以太网接口。指定IP地址的目标板IP地址字段。

  • CPU执行环境

    硬件设置按钮被禁用。然而,您必须使用raspi函数来建立一个连接到你的树莓π™板前数字转换和验证的一步。

默认情况下,深层网络量化器应用确定度量函数用于验证基于网络的类型是量子化的。

类型的网络 度量函数
分类

(精度——网络的准确性

对象检测

平均精度——平均精度检测结果。看到evaluateDetectionPrecision(计算机视觉工具箱)

回归

均方误差——网络的均方误差

语义分割

WeightedIOU——平均每个类的借据,加权类像素的数量。看到evaluateSemanticSegmentation(计算机视觉工具箱)

您还可以指定一个自定义度量函数用于验证。

您可以选择指数用于量化的网络选择方案:

  • 极大极小——(默认)评估指数根据校准数据中的信息范围,避免溢出。

  • 柱状图——发布出去是依靠扩展指数的评估最适合校准数据。

  • 出口量化网络——校准后网络、数字转换和量化网络添加到基本工作空间。这个选项simulatable量子化的网络出口,quantizedNet,你可以探索在MATLAB部署到硬件。相当于使用这个选项数字转换在命令行中。

    代码生成不支持导出的量子化的网络,金宝appquantizedNet

  • 出口数字转换器——添加dlquantizer对象的基本工作空间。你可以保存dlquantizer为进一步勘探对象,并使用它深层网络量化器应用程序或在命令行中,或者为你的目标硬件使用它来生成代码。

  • 生成代码——打开GPU编码器应用程序并生成GPU从量化和验证神经网络代码。生成GPU代码需要一个GPU编码器许可证。

版本历史

介绍了R2020a

全部展开