主要内容

生成int8深度学习网络代码

深度学习使用的神经网络架构包含许多处理层,包括卷积层。深度学习模型通常在大量标记数据集上工作。在这些模型上执行推理需要大量的计算,消耗大量的内存。神经网络使用内存来存储输入数据、参数(权重)和来自每一层的激活,因为输入在网络中传播。用MATLAB训练的深度神经网络®使用单精度浮点数据类型。即使是规模很小的网络也需要相当数量的内存和硬件来执行这些浮点算术操作。这些限制可能会阻碍将深度学习模型部署到计算能力低、内存资源较小的设备上。通过使用较低的精度来存储权重和激活,可以减少网络的内存需求。

您可以将深度学习工具箱™与深度学习工具箱模型量化库支持包结合使用,通过将卷积层的权重、偏差和激活量化为8位缩放整数数据类型来减少深度神经网络的内存占用。金宝app然后,你可以使用MATLAB编码器™为网络生成优化的代码。

手臂Cortex-A处理器

生成的代码利用了ARM®处理器采用ARM计算库SIMD。生成的代码可以作为源代码、静态或动态库或可执行文件集成到您的项目中,您可以将其部署到各种ARM Cortex-A CPU平台(如Raspberry Pi™)。要在ARM Cortex-A处理器上部署代码,必须使用ARM计算库版本20.02.1。

金宝app支持的层和类

你可以为这些层生成c++代码,使用ARM计算库并在8位整数中执行推理计算:

这种深度学习网络支持c++代码生成金宝appDAGNetwork(深度学习工具箱)而且SeriesNetwork(深度学习工具箱)对象。

生成代码

若要生成在8位整数中执行推理计算的代码,请在编码器。手臂NEONConfig对象dlcfg,设置这些附加属性:

dlcfg。CalibrationResultFile =“dlquantizerObjectMatFile”;dlcfg。数据类型=“int8”

另外,在MATLAB编码器应用,在深度学习选项卡,设置目标库臂计算.然后设置数据类型而且校准结果文件路径参数。

在这里“dlquantizerObjectMatFile”mat文件的名称是什么dlquantizer(深度学习工具箱)生成特定的校准数据。为进行校准,请设置ExecutionEnvironment的属性dlquantizer对象“CPU”

否则,请按照基于ARM计算库的深度学习网络代码生成

有关示例,请参见在树莓派上生成深度学习网络INT8代码

手臂Cortex-M处理器

生成的代码利用了CMSIS-NN库5.7.0版本,可以作为静态库集成到您的项目中,您可以将其部署到各种ARM Cortex-M CPU平台上。

金宝app支持的层和类

生成的代码fullyConnectedLayer(深度学习工具箱)对象,表示全连接层,使用CMSIS-NN库并在8位整数中执行推理计算。

您的深度学习网络还可以包含以下层。生成的代码以32位浮点类型为这些层执行计算。

  • lstmLayer(深度学习工具箱)对象,它表示长短期存储器层。的价值SequenceLength你传递给预测必须是编译时常数。

  • softmaxLayer(深度学习工具箱)对象,它表示一个softmax层。

  • 输入和输出层。

这种深度学习网络支持C代码生成金宝appSeriesNetwork(深度学习工具箱)对象和DAGNetwork(深度学习工具箱)可以转换为的对象SeriesNetwork对象。

生成代码

要使用CMSIS-NN库生成在8位整数中执行推理计算的代码,请在您的编码器。CMSISNNConfig对象dlcfg,设置CalibrationResultFile属性:

dlcfg。CalibrationResultFile =“dlquantizerObjectMatFile”

另外,在MATLAB编码器应用,在深度学习选项卡,设置目标库CMSIS-NN.然后设置校准结果文件路径参数。

在这里“dlquantizerObjectMatFile”mat文件的名称是什么dlquantizer(深度学习工具箱)生成特定的校准数据。为进行校准,请设置ExecutionEnvironment的属性dlquantizer对象“CPU”

有关示例,请参见在Cortex-M目标上生成深度学习网络的INT8代码

另请参阅

应用程序

功能

对象

相关的话题