主要内容

基于MKL-DNN的深度学习网络代码生成

MATLAB®编码器™,您可以从一个已经训练好的卷积神经网络(CNN)生成预测代码,目标是使用Intel的嵌入式平台®处理器。该代码生成器利用了英特尔深度神经网络数学内核库(MKL-DNN)。生成的代码使用输入中指定的架构、层和参数实现CNNSeriesNetwork(深度学习工具箱)DAGNetwork(深度学习工具箱)网络对象。

使用以下方法之一生成代码:

  • 标准的codegen命令的C/ c++代码生成从MATLAB代码。

  • MATLAB编码器应用程序。

需求

  • 在Windows上®,用于深度学习网络的代码生成codegen功能要求微软®Visual Studio®2015年或更晚时间才能知晓。

  • MATLAB编码器接口的深度学习库.要安装此支持包,请从MATLAB金宝app中选择它附加组件菜单。

  • 英特尔深度神经网络数学内核库(MKL-DNN)

  • 深度学习工具箱™。

  • 编译器和库的环境变量。有关更多信息,请参见MATLAB编码器深度学习的先决条件

使用生成代码codegen

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

    • 使用coder.loadDeepLearningNetwork函数来构造和建立一个CNN网络对象。有关更多信息,请参见为代码生成加载预训练网络

    • 调用预测(深度学习工具箱)该方法对网络的入口点函数进行输入。

    • 指定一个MiniBatchSize预测管理内存使用的方法,用于对多个输入图像或观察结果进行预测。

    例如:

    函数= googlenet_predict(中)% # codegen%持久对象mynet用于加载系列网络对象。在第一次调用该函数时,将构造持久化对象和%设置。后续调用该函数时,重用相同的对象%调用对输入的预测,从而避免重构和重新加载%网络对象。持续的mynet;如果mynet = code . loaddeepleningnetwork ()“googlenet”);结束输入通过%=预测(mynet,,“MiniBatchSize”2);

  2. 为MEX或静态或动态链接库创建代码生成配置对象。若要指定MKL-DNN的代码生成参数,请设置DeepLearningConfig属性到一个编码器。MklDNNConfig创建的对象编码器。DeepLearningConfig

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

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

    请注意

    您可以为代码生成指定半精度输入。但是,代码生成器类型将输入强制转换为单精度。深度学习工具箱在MATLAB中使用单精度浮点算法进行所有计算。

生成的代码

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

对于网络中具有参数的层,如全连接层和卷积层,导出二进制文件。例如,文件cnn_googlenet_conv * _wcnn_googlenet_conv * _b对应于网络中卷积层的权重和偏置参数。

的代码生成MATLAB编码器应用程序

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

  2. 生成代码步骤:

    • 语言c++

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

  3. 生成的代码。

另请参阅

|||

相关的话题