深层网络量化器
描述
使用深层网络量化器应用以减少内存需求的深层神经网络权重量化,偏见,和激活卷积层8位整数数据类型。使用这个应用程序,您可以:
可视化的动态范围卷积神经网络层深。
选择个人网络层数字转换。
评估量化网络的性能。
生成GPU代码部署量化网络使用GPU编码器™。
生成HDL代码部署量化网络使用深度学习FPGA HDL工具箱™。
生成c++代码部署量化网络手臂Cortex-A单片机使用MATLAB®编码器™。
生成一个simulatable量子化的网络,您可以探索在MATLAB生成代码或部署到硬件。
这个应用程序要求深度学习工具箱量化模型库。了解数字转换所需的产品深神经网络,看到下载188bet金宝搏的量化工作流先决条件。
打开深层网络量化器的应用
MATLAB命令提示:输入
deepNetworkQuantizer
。MATLAB将来发布:应用程序选项卡,在机器学习和深度的学习,点击应用程序图标。
例子
数字转换为GPU部署网络
探索的行为与量化卷积神经网络层,使用深层网络量化器应用。本例中对可学的卷积层的参数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网络,净
。
应用程序显示选定的网络层图。
在校准将来发布的部分校准数据,选择augmentedImageDatastore
对象从工作区包含校准数据,aug_calData
。选择校准。
的深层网络量化器运动网络使用校准数据和信息收集范围可学的参数在网络层。
校准完成后,应用程序显示一个表包含重量和偏见的卷积和完全连接层网络和动态范围的各层网络的激活,在校准他们的最小和最大值。右边的表,应用程序显示的动态范围参数的直方图。灰色区域的直方图显示的数据不能代表的量化表示。如何解释这些直方图的更多信息,参见量子化的神经网络。
在数字转换列的表,指示是否可学的参数进行量化在层。层没有量化的量化后留在单精度。
在验证将来发布的部分验证数据,选择augmentedImageDatastore
从基本工作空间包含验证数据对象,aug_valData
。
在验证将来发布的部分量化的选择,选择默认的度量函数和极大极小指数方案。选择数字转换和验证。
的深层网络量化器量化权重、激活和偏见的卷积层网络扩展8位整数数据类型和使用验证数据网络运动。应用程序决定了一个默认度量函数用于验证基于网络的类型是量子化的。一个分类网络,应用程序使用(精度。
验证完成后,应用程序显示的结果验证,包括:
度量函数用于验证
度量函数量化前后的结果
内存需求量化(MB)之前和之后的网络
如果你想使用一个不同的度量函数进行验证,例如使用前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
作为度量函数来使用。
自定义指标函数必须的道路上。如果度量函数没有路径,这一步将产生一个错误。
选择数字转换和验证。
应用程序对网络和显示自定义度量函数的验证结果。
应用程序验证结果表中只显示标量值。查看验证结果与非标量输出自定义度量函数,导出dlquantizer
对象如下所述,然后验证使用验证
函数在MATLAB命令窗口。
如果量化网络的性能不满意,你可以选择不量化表中的一些层通过取消勾选层。还可以探索的影响,选择不同的指数量化的选择方案量化的选择菜单。看到这些变化的影响,选择数字转换和验证一次。
校准网络之后,可以选择出口或量化网络dlquantizer
对象。选择出口按钮。下拉,选择从以下选项:
出口量化网络——量化网络添加到基本工作空间。这个选项出口simulatable量子化的网络,您可以探索在MATLAB部署到硬件。
出口数字转换器——添加
dlquantizer
对象的基本工作空间。你可以保存dlquantizer
为进一步勘探对象,并使用它深层网络量化器应用程序或在命令行中,或者为你的目标硬件使用它来生成代码。生成代码——打开GPU编码器应用程序并生成GPU从量化神经网络代码。生成GPU代码需要一个GPU编码器™许可证。
数字转换为CPU部署网络
探索的行为与量化卷积神经网络层,使用深层网络量化器应用。本例中对可学的卷积层的参数squeezenet
神经网络后再培训网络分类根据新图像火车深入学习网络对新图像进行分类的例子。
这个示例使用DAG网络与CPU执行环境。
网络数字转换加载到基本工作空间。
负载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
在这个应用程序中,单击新并选择数字转换网络
。
应用程序验证你的执行环境。有关更多信息,请参见量化工作流先决条件。
在对话框中,选择执行环境和网络数字转换的基础工作。对于这个示例,选择一个CPU执行环境和DAG网络,净
。
应用程序显示选定的网络层图。
在校准将来发布的部分校准数据,选择augmentedImageDatastore
对象从工作区包含校准数据,aug_calData
。选择校准。
的深层网络量化器运动网络使用校准数据和信息收集范围可学的参数在网络层。
校准完成后,应用程序显示一个表包含重量和偏见的卷积和完全连接层网络和动态范围的各层网络的激活,在校准他们的最小和最大值。右边的表,应用程序显示的动态范围参数的直方图。灰色区域的直方图显示的数据不能代表的量化表示。如何解释这些直方图的更多信息,参见量子化的神经网络。
在数字转换列的表,指示是否可学的参数进行量化在层。层没有量化的量化后留在单精度。
在验证将来发布的部分验证数据,选择augmentedImageDatastore
从基本工作空间包含验证数据对象,aug_valData
。
在验证将来发布的部分硬件设置中,选择覆盆子π随着模拟环境。应用自动填充目标凭证从现有的连接或从最后一次成功连接。您还可以使用这个选项来创建一个新的覆盆子π连接。
在验证将来发布的部分量化的选择,选择默认的度量函数和极大极小指数方案。选择数字转换和验证。
的深层网络量化器量化权重、激活和偏见的卷积层网络扩展8位整数数据类型和使用验证数据网络运动。应用程序决定了一个默认度量函数用于验证基于网络的类型是量子化的。一个分类网络,应用程序使用(精度。
验证完成后,应用程序显示的结果验证,包括:
度量函数用于验证
度量函数量化前后的结果
内存需求量化(MB)之前和之后的网络
如果量化网络的性能不满意,你可以选择不量化表中的一些层通过取消勾选层。还可以探索的影响,选择不同的指数量化的选择方案量化的选择菜单。看到这些变化的影响,选择数字转换和验证一次。
校准网络之后,可以选择出口或量化网络dlquantizer
对象。选择出口按钮。下拉,选择从以下选项:
出口量化网络——量化网络添加到基本工作空间。这个选项出口simulatable量子化的网络,您可以探索在MATLAB部署到硬件。
出口数字转换器——添加
dlquantizer
对象的基本工作空间。你可以保存dlquantizer
为进一步勘探对象,并使用它深层网络量化器应用程序或在命令行中,或者为你的目标硬件使用它来生成代码。生成代码——打开MATLAB编码器应用,从量化神经网络生成c++代码。生成c++代码需要一个MATLAB编码器™许可证。
数字转换为FPGA部署网络
探索的行为量化卷积层神经网络,使用深层网络量化器应用。本例中对可学的卷积层的参数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;openExample (“deeplearning_shared / QuantizeNetworkForFPGADeploymentExample”)解压缩(“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的预测结果。例如,看到的在FPGA使用量化神经网络分类图像(深度学习HDL工具箱)。
导入一个dlquantizer
对象的深度网络量化器的应用
这个例子展示了如何导入dlquantizer
对象从基本工作空间深层网络量化器应用。这允许您开始量化的深层神经网络使用命令行或应用程序,并恢复你的工作后的应用程序。
打开深层网络量化器应用程序。
deepNetworkQuantizer
在这个应用程序中,单击新并选择进口dlquantizer对象
。
在对话框中,选择dlquantizer
从基工作区对象导入。对于这个示例,使用quantObj
您在上面的示例中创建的数字转换为GPU神经网络的目标。
应用进口中包含任何数据dlquantizer
对象,收集在命令行。这个数据可以包括网络数字转换,校准数据,验证数据,校准数据。
这个应用程序显示一个包含中包含校准数据导入表dlquantizer
对象,quantObj
。右边的表,应用程序显示的动态范围参数的直方图。灰色区域的直方图显示的数据不能代表的量化表示。如何解释这些直方图的更多信息,参见量子化的神经网络。
相关的例子
参数
执行环境
- - - - - -执行环境
GPU
(默认)|FPGA
|CPU
|MATLAB
当您选择New >数字转换网络,这个应用程序允许您选择量化网络的执行环境。网络是如何量化取决于执行环境的选择。
当您选择MATLAB
执行环境,应用程序执行target-agnostic量子化的神经网络。这个选项不需要你目标硬件为了探索在MATLAB量化网络。
硬件设置
- - - - - -硬件设置
模拟环境|目标
指定的硬件设置根据你的执行环境。
GPU执行环境
选择从下面的仿真环境:
模拟环境 行动 GPU
模拟主机GPU
部署量化网络主机GPU。验证单精度的量化网络通过比较性能的网络版本。
MATLAB
在MATLAB模拟
在MATLAB模拟了量化网络。验证单精度的量化网络通过比较性能的网络版本。
FPGA执行环境
选择从下面的仿真环境:
模拟环境 行动 联合仿真
模拟与dlhdl.Simulator
在MATLAB模拟了量化网络使用 dlhdl.Simulator
(深度学习HDL工具箱)。验证单精度的量化网络通过比较性能的网络版本。英特尔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
连接。目标的选择 描述 主机名 主机名的董事会,指定为一个字符串。 用户名 Linux®用户名指定为一个字符串。 密码 Linux用户密码,指定为一个字符串。
量化的选择
- - - - - -量化和验证的选项
度量函数|指数方案
默认情况下,深层网络量化器应用确定度量函数用于验证基于网络的类型是量子化的。
类型的网络 | 度量函数 |
---|---|
分类 | (精度——网络的准确性 |
对象检测 | 平均精度——平均精度检测结果。看到 |
回归 | 均方误差——网络的均方误差 |
语义分割 | WeightedIOU——平均每个类的借据,加权类像素的数量。看到 |
您还可以指定一个自定义度量函数用于验证。
您可以选择指数用于量化的网络选择方案:
极大极小——(默认)评估指数根据校准数据中的信息范围,避免溢出。
柱状图——发布出去是依靠扩展指数的评估最适合校准数据。
出口
- - - - - -选择输出量化网络
出口量化网络
|出口数字转换器
|生成代码
出口量化网络——校准后网络、数字转换和量化网络添加到基本工作空间。这个选项simulatable量子化的网络出口,
quantizedNet
,你可以探索在MATLAB部署到硬件。相当于使用这个选项数字转换
在命令行中。代码生成不支持导出的量子化的网络,金宝app
quantizedNet
。出口数字转换器——添加
dlquantizer
对象的基本工作空间。你可以保存dlquantizer
为进一步勘探对象,并使用它深层网络量化器应用程序或在命令行中,或者为你的目标硬件使用它来生成代码。生成代码
执行环境 代码生成 GPU 打开GPU编码器应用程序并生成GPU从量化和验证神经网络代码。生成GPU代码需要一个GPU编码器许可证。 CPU 打开MATLAB编码器应用程序并生成c++代码的量化和验证神经网络。生成c++代码需要MATLAB编码器许可证。
版本历史
介绍了R2020aR2023a:在硬件设置指定覆盆子π连接
您现在可以验证量子化的覆盆子π网络®董事会通过选择覆盆子π在硬件设置
并指定目标的凭证raspi
对象的验证步骤。
R2022b:在主机GPU或主机CPU校准
现在,您可以选择是否使用主机GPU或校准你的网络主机CPU。默认情况下,校准
函数和深层网络量化器应用程序将校准在主机GPU如果一个是可用的。
在以前的版本中,它要求执行环境是一样的仪器环境用于量化的校准步骤。
R2022b:dlnetwork
金宝app
的深层网络量化器应用程序现在支持金宝app校准和验证dlnetwork
对象。
R2022a:验证量化网络CPU的性能目标
的深层网络量化器应用程序现在支持金宝appCPU的量化和验证工作流的目标。
R2022a:数字转换神经网络没有一个具体的目标
指定MATLAB
随着执行环境
数字转换你的神经网络没有生成代码或提交代码部署到一个特定的目标。这可能是有用的,如果你:
没有访问你的目标硬件。
想要检查你的量化网络没有生成代码。
量化网络实现int8
数据,而不是单
数据。它使同一层和连接与原始网络,和它有相同的推理行为时,它将运行在硬件上。
一旦你有量化的网络,您可以使用quantizationDetails
函数来检查你的量子化的网络。此外,您还可以选择将代码部署到一个GPU的目标。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。