主要内容

代码生成与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

  1. 在MATLAB编写一个入口点函数:

    例如:

    函数= googlenet_predict(中)% # codegen%一系列持久对象mynet用于加载网络对象。%在第一次调用这个函数,构造和持久对象%设置。只有在函数被调用时,随后的时间,相同的对象被重复使用%为预测输入,从而避免重建和重载%网络对象。持续的mynet;如果isempty (mynet) mynet = coder.loadDeepLearningNetwork (“googlenet”);结束%通过输入=预测(mynet,,“MiniBatchSize”2);

  2. 创建一个代码生成配置对象为墨西哥人或一个静态或动态链接库。为MKL-DNN指定代码生成参数,设置DeepLearningConfig属性到一个coder.MklDNNConfig您创建的对象coder.DeepLearningConfig

    cfg = coder.config (“自由”);cfg。TargetLang =“c++”;cfg。DeepLearningConfig = coder.DeepLearningConfig (“mkldnn”);
  3. 运行codegen命令。使用配置选项指定配置对象。使用arg游戏选择指定的输入类型。输入的大小对应于输入层GoogLeNet网络的大小16不同的图像或观察。

    codegen配置cfggooglenet_predictarg游戏{(224224 3 16)的}报告

    请注意

    您可以指定half-precision输入的代码生成。然而,代码生成器类型将输入转换为单精度。深度学习工具箱使用单精度浮点算法,在MATLAB计算。

生成的代码

网络作为一个c++类生成包含层类的数组。的设置()类的方法设置处理,为每一层的网络对象分配内存。的预测()方法调用预测网络中每个层。代码生成器产生的函数googlenet_predict ()googlenet_predict.cpp对应于MATLAB入口点函数。这个函数构造网络的静态对象,并调用设置和预测方法。

二进制文件导出为层参数完全连接和卷积等在网络层。例如,文件cnn_googlenet_conv * _wcnn_googlenet_conv * _b对应的重量和偏见卷积网络层的参数。

默认情况下,生成的应用程序查找文件的重量codegen文件夹中。如果你将生成的应用程序和重量文件到另一个位置如嵌入式,创建一个环境变量USER_DL_DATA_PATH的值是搬迁重量文件的位置。生成的应用程序将寻找重量文件在这个位置。

通过使用生成代码MATLAB编码器应用程序

  1. 按照通常的步骤用于指定的入口点函数和指定的输入类型。看到通过使用MATLAB编码器应用生成C代码

  2. 生成代码步骤:

    • 语言c++

    • 点击更多的设置。在深度学习窗格中,设置目标库MKL-DNN

  3. 生成的代码。

另请参阅

|||

相关的话题