代码生成与MKL-DNN深度学习网络
与MATLAB®编码器™已经预测,你可以生成代码从一个训练有素的卷积神经网络(CNN),针对嵌入式平台,使用一个英特尔®处理器。代码生成器利用英特尔数学内核库的深层神经网络(MKL-DNN)。生成的代码实现了一个CNN的体系结构中,层和参数中指定的输入SeriesNetwork
(深度学习工具箱)或DAGNetwork
(深度学习工具箱)网络对象。
生成代码通过使用这些方法之一:
标准的
codegen
命令从MATLAB C / c++代码生成代码。的MATLAB编码器应用程序。
需求
在Windows上®,代码生成的深度学习网络
codegen
功能要求微软®Visual Studio®2015年或更晚时间才能知晓。为深入学习MATLAB编码器接口。安装这种支持方案,选择从MATL万博1manbetxAB附加组件菜单。
英特尔数学内核库深层神经网络(MKL-DNN)
深度学习工具箱™。
环境变量的编译器和库。有关更多信息,请参见先决条件与MATLAB编码器深度学习。
代码生成通过使用codegen
在MATLAB编写一个入口点函数:
使用
coder.loadDeepLearningNetwork
函数来构造和设置一个CNN网络对象。有关更多信息,请参见负载Pretrained网络代码生成。调用
预测
(深度学习工具箱)网络的入口点函数输入的方法。指定一个
MiniBatchSize
在预测
预测方法来管理内存使用多个输入图像或观察。
例如:
函数= googlenet_predict(中)% # codegen%一系列持久对象mynet用于加载网络对象。%在第一次调用这个函数,构造和持久对象%设置。只有在函数被调用时,随后的时间,相同的对象被重复使用%为预测输入,从而避免重建和重载%网络对象。持续的mynet;如果isempty (mynet) mynet = coder.loadDeepLearningNetwork (“googlenet”);结束%通过输入=预测(mynet,,“MiniBatchSize”2);
创建一个代码生成配置对象为墨西哥人或一个静态或动态链接库。为MKL-DNN指定代码生成参数,设置
DeepLearningConfig
属性到一个coder.MklDNNConfig
您创建的对象coder.DeepLearningConfig
。cfg = coder.config (“自由”);cfg。TargetLang =“c++”;cfg。DeepLearningConfig = coder.DeepLearningConfig (“mkldnn”);
运行
codegen
命令。使用配置
选项指定配置对象。使用arg游戏
选择指定的输入类型。输入的大小对应于输入层GoogLeNet网络的大小16
不同的图像或观察。codegen配置cfggooglenet_predictarg游戏{(224224 3 16)的}报告
请注意
您可以指定half-precision输入的代码生成。然而,代码生成器类型将输入转换为单精度。深度学习工具箱使用单精度浮点算法,在MATLAB计算。
生成的代码
网络作为一个c++类生成包含层类的数组。的设置()
类的方法设置处理,为每一层的网络对象分配内存。的预测()
方法调用预测网络中每个层。代码生成器产生的函数googlenet_predict ()
在googlenet_predict.cpp
对应于MATLAB入口点函数。这个函数构造网络的静态对象,并调用设置和预测方法。
二进制文件导出为层参数完全连接和卷积等在网络层。例如,文件cnn_googlenet_conv * _w
和cnn_googlenet_conv * _b
对应的重量和偏见卷积网络层的参数。
默认情况下,生成的应用程序查找文件的重量codegen
文件夹中。如果你将生成的应用程序和重量文件到另一个位置如嵌入式,创建一个环境变量USER_DL_DATA_PATH
的值是搬迁重量文件的位置。生成的应用程序将寻找重量文件在这个位置。
通过使用生成代码MATLAB编码器应用程序
按照通常的步骤用于指定的入口点函数和指定的输入类型。看到通过使用MATLAB编码器应用生成C代码。
在生成代码步骤:
集语言来c++。
点击更多的设置。在深度学习窗格中,设置目标库来
MKL-DNN
。
生成的代码。
另请参阅
codegen
|coder.DeepLearningConfig
|coder.MklDNNConfig
|coder.loadDeepLearningNetwork