主要内容

机器学习模型的代码生成预测在命令行

这个例子展示了如何生成代码分类和回归模型的预测对象在命令行。你还可以生成代码使用MATLAB®编码器™应用程序。代码生成的预测使用MATLAB编码器应用机器学习模型获取详细信息。

有一个特定的分类和回归模型对象预测随机支持代码生成功能。金宝app使用这些对象函数需要一个训练有素的分类或预测回归模型对象,但是arg游戏选择codegen(MATLAB编码器)不接受这些对象。解决这种限制使用saveLearnerForCoderloadLearnerForCoder如这个例子所示。

这个流程图显示对象的代码生成工作流的功能分类和回归模型对象。

训练模型后,保存培训模型通过使用saveLearnerForCoder。定义一个入口点函数,通过使用加载保存模型loadLearnerForCoder并调用对象的函数。然后生成代码的入口点函数的使用codegen,并验证所生成的代码。

训练分类模型

配备了code-generation-enabled训练分类模型对象预测函数。在这种情况下,训练支持向量机(SVM)分类模金宝app型。

负载fisheriris第1 = ~ strcmp(物种,“setosa”);X =量(第1 3:4);Y =物种(第1);Mdl = fitcsvm (X, Y);

这个步骤可以包括数据预处理、特征选择,例如,使用交叉验证和优化模型。

保存模型使用saveLearnerForCoder

将分类模型保存到该文件SVMModel.mat通过使用saveLearnerForCoder

saveLearnerForCoder (Mdl“SVMModel”);

saveLearnerForCoder保存分类模型的MATLAB二进制文件SVMModel.mat作为一个结构数组在当前文件夹。

定义入口点函数

一个入口点函数,也称为顶级函数是一个函数定义为代码生成。因为你不能调用任何函数在顶层codegen,您必须定义一个入口点函数,调用code-generation-enabled函数,并生成C / c++代码的入口点函数的使用codegen。内的所有函数的入口点函数必须支持代码生成。金宝app

定义一个入口点函数,返回输入预测数据预测的标签。内的功能,通过使用加载训练分类模型loadLearnerForCoder,然后通过加载模型预测。在这种情况下,定义predictLabelsSVM函数,使用支持向量机模型预测标签Mdl

类型predictLabelsSVM.m%显示predictLabelsSVM内容。m文件
函数标签= predictLabelsSVM (x) % # codegen % predictLabelsSVM标签新观测使用Mdl % predictLabelsSVM训练支持向量机模型预测矢量的标签标签使用%保存的SVM模型Mdl和预测数据x。Mdl = loadLearnerForCoder (“SVMModel”);标签=预测(Mdl x);结束

添加% # codegen编译器指令(或编译指示)的入口点函数函数签名后,表明您打算为MATLAB算法生成代码。添加这个指令指示MATLAB代码分析器来帮助您诊断和解决违规,将导致错误在代码生成。看到检查代码的代码分析器(MATLAB编码器)

注意:如果单击按钮位于这个页面的右上角部分并在MATLAB®开设这个例子,然后用MATLAB®打开示例文件夹。这个文件夹包含的入口点函数文件。

生成代码

设置编译器

生成C / c++代码,您必须访问一个C / c++编译器配置正确。MATLAB编码器定位和使用支持,安装编译器。金宝app您可以使用墨西哥人设置查看和更改默认编译器。更多细节,请参阅改变默认的编译器

使用生成代码codegen

生成代码的入口点函数使用codegen(MATLAB编码器)。因为C和c++静态类型语言中,您必须确定所有变量的属性在编译时的入口点函数。指定的数据类型和大小的所有输入时的入口点函数的调用codegen通过使用arg游戏选择。

在这种情况下,通过X作为一个价值arg游戏选项来指定所生成的代码必须接受一个输入相同的数据类型和数组大小为训练数据X

codegenpredictLabelsSVMarg游戏{X}
代码生成成功。

如果观测的数量在编译时是未知的,您还可以指定输入所适应的使用coder.typeof(MATLAB编码器)。有关详细信息,请参见为代码生成指定适应可变参数指定入口点函数输入的属性(MATLAB编码器)

构建类型

MATLAB编码器可以生成代码后构建类型:

  • 墨西哥人(MATLAB可执行)函数

  • 独立的C / c++代码

  • 独立的C / c++代码编译为一个静态库

  • 独立的C / c++代码编译成动态链接库

  • 独立的C / c++代码编译为可执行

您可以指定构建类型使用配置选择codegen(MATLAB编码器)。设置代码生成选项的更多细节,请参阅配置选择codegen(MATLAB编码器)配置构建设置(MATLAB编码器)

默认情况下,codegen生成一个墨西哥人的功能。一个墨西哥人的函数是一个C / c++程序,从MATLAB是可执行的。您可以使用一个墨西哥人功能加速MATLAB算法和测试生成的代码的功能和运行时的问题。有关详细信息,请参见MATLAB算法加速(MATLAB编码器)为什么测试墨西哥人在MATLAB函数吗?(MATLAB编码器)

代码生成报告

您可以使用报告国旗产生代码生成报告。这份报告可以帮助您调试代码生成问题和视图生成的C / c++代码。有关详细信息,请参见代码生成报告(MATLAB编码器)

验证生成的代码

测试一个墨西哥人函数来验证生成的代码提供了相同的功能与原始MATLAB代码。执行这个测试,运行墨西哥人使用相同的输入函数用于运行最初的MATLAB代码,然后比较结果。运行墨西哥人在MATLAB函数生成独立的代码还可以检测并修复运行时错误,更难诊断在生成独立的代码。更多细节,请参阅为什么测试墨西哥人在MATLAB函数吗?(MATLAB编码器)

一些预测数据来验证是否通过预测,predictLabelsSVM,墨西哥人函数返回相同的标签。

labels1 =预测(Mdl X);labels2 = predictLabelsSVM (X);labels3 = predictLabelsSVM_mex (X);

通过比较预测的标签isequal

verifyMEX = isequal (labels1 labels2 labels3)
verifyMEX =逻辑1

isequal返回逻辑1 (真正的),这意味着所有的输入都是平等的。确认进行了比较预测函数,predictLabelsSVM功能,墨西哥人函数返回相同的标签。

另请参阅

(MATLAB编码器)|||

相关的话题