深度学习使用包含许多处理层的神经网络架构,包括卷积层。深度学习模型通常适用于大的标记数据集。对这些模型进行推断是计算密集型的,会消耗大量内存。神经网络使用记忆来存储输入数据、参数(权重),以及在输入通过网络传播时每一层的激活。在MATLAB中训练的深度神经网络®使用单精度浮点数据类型。即使是规模很小的网络,也需要大量的内存和硬件来执行这些浮点运算。这些限制可能会阻止将深度学习模型部署到具有低计算能力和较小内存资源的设备上。通过使用较低的精度存储权重和激活,可以减少网络的内存需求。
您可以将深度学习工具箱™与深度学习工具箱模型量化库支持包一起使用,通过将卷积层的权重、偏差和激活量化为8位比例整数数据类型,来减少深度神经网络的内存占用。金宝app然后,你可以使用MATLAB编码器™生成量化网络的优化代码。生成的代码利用了ARM®使用ARM计算库实现SIMD处理器。生成的代码可以集成到您的项目作为源代码,静态或动态库,或可执行文件,您可以部署到各种ARM CPU平台,如Raspberry Pi™。
你可以使用ARM计算库为这些层生成c++代码,并在8位整数中执行推断计算:
二维卷积层(convolution2dLayer
(深度学习工具箱))
二维分组卷积层(groupedConvolution2dLayer
(深度学习工具箱)).价值NumGroups
输入参数必须等于2
.
最大池化层(maxPooling2dLayer
(深度学习工具箱))
线性单元(ReLU)层(reluLayer
(深度学习工具箱)
)
c++代码生成的量化深度学习网络的支持金宝appDAGNetwork
(深度学习工具箱)和SeriesNetwork
(深度学习工具箱)对象。
要生成以8位整数执行推理计算的代码,请在编码器。ARMNEONConfig
对象dlcfg
,设置这些附加属性:
dlcfg。CalibrationResultFile =“dlquantizerObjectMatFile”;dlcfg。数据类型=“int8”;
另外,在MATLAB编码器应用程序,深度学习选项卡,设置目标库来臂计算
.然后设置数据类型和校准结果文件路径参数。
在这里“dlquantizerObjectMatFile”
是mat文件的名字吗dlquantizer
(深度学习工具箱)生成特定的校准数据。为校准目的,设置ExecutionEnvironment
财产的dlquantizer
对象“CPU”
.
否则,请执行中描述的步骤基于ARM计算库的深度学习网络代码生成.
例如,请参见树莓派上量化深度学习网络的代码生成.
dlquantizer
(深度学习工具箱)|dlquantizationOptions
(深度学习工具箱)|校准
(深度学习工具箱)|验证
(深度学习工具箱)|coder.loadDeepLearningNetwork
|codegen