与MATLAB®编码器™,你可以从一个已经训练好的卷积神经网络(CNN)中生成用于预测的代码,目标是一个使用英特尔(Intel)的嵌入式平台®处理器。代码生成器利用了用于深神经网络(MKL-DNN)的英特尔数学内核库。生成的代码利用输入中指定的架构,图层和参数来实现CNNSeriesNetwork
(深度学习工具箱)或者DAGNetwork
(深度学习工具箱)网络对象。
使用以下方法生成代码:
标准的codegen
来自MATLAB代码的C / C ++代码的命令。
的MATLAB编码器应用程序。
在Windows上®,用于深度学习网络的代码生成codegen
功能需要微软®Visual Studio®2015年或以后。
MATLAB编码器接口的深度学习库.要安装此支持包,请从MATLAB金宝app中选择它附加组件菜单。
英特尔深度神经网络数学内核库
深度学习工具箱™。
编译器和库的环境变量。有关更多信息,请参见深度学习的先决条件与MATLAB编码器.
codegen
用MATLAB编写一个入口点函数:
用来coder.loadDeepLearningNetwork
函数构造并设置CNN网络对象。有关更多信息,请参见为代码生成加载预训练的网络.
打电话给预测
(深度学习工具箱)网络上网络的方法输入。
指定A.MiniBatchSize
在里面预测
用于管理多个输入图像或观察的预测的存储器使用的方法。
例如:
功能= googlenet_predict(中)% # codegen持久性对象mynet用于加载系列网络对象。%在第一次调用此函数时,将构造持久对象并%设置。当函数被调用之后,同一个对象将被重用%来对输入调用predict,从而避免重构和重新加载%网络对象。持续的mynet;如果isempty(mynet)mynet = coder.loaddeeplearningnetwork(“googlenet”);结束输入通入=预测(mynet,,“MiniBatchSize”2);
为MEX或静态或动态链接库创建代码生成配置对象。要为MKL-DNN指定代码生成参数,请设置DeeplearningConfig
属性到一个编码器。MklDNNConfig
对象,用于创建coder.deeplearningconfig
.
cfg = coder.config (“自由”);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“mkldnn”);
运行codegen
命令。使用配置
选项指定配置对象。使用arg游戏
选项指定输入类型。输入大小与googleet网络的输入层大小相对应16
不同的图像或观察。
codegen配置cfggooglenet_predict.arg游戏{(224224 3 16)的}报告
请注意
您可以为代码生成指定半精度输入。但是,代码生成器类型将输入转换为单精度。深度学习工具箱使用单精度,浮点算法的所有计算在MATLAB。
网络生成为一个包含层类数组的c++类。的设置()
方法为网络对象的每一层设置句柄并分配内存。的预测()
方法对网络中的每个层调用预测。代码生成器生成该函数googlenet_predict ()
在googlenet_predict.cpp
对应MATLAB入口点函数。此函数为网络构造静态对象,并调用设置和预测方法。
二进制文件被导出为具有参数的层,如网络中的全连接层和卷积层。例如,文件cnn_googlenet_conv * _w
和cnn_googlenet_conv * _b
对应于网络中的卷积层的权重和偏置参数。
按照通常的步骤指定入口点函数并指定输入类型。看使用MATLAB编码器应用程序生成C代码.
在生成代码步骤:
集语言来c++.
点击更多的设置.在深度学习窗格中,设置目标库来MKL-DNN
.
生成的代码。
codegen
|coder.deeplearningconfig
|coder.loadDeepLearningNetwork
|编码器。MklDNNConfig