创建机器学习模型的编码器配置程序
在训练一个机器学习模型之后,使用Learnercoderconfigurer
.使用配置程序的对象函数和属性来指定代码生成选项并为此生成C / C ++代码预测
和更新
机器学习模型的功能。生成C/ c++代码需要马铃薯®编码器™.
此流程图显示使用编码器配置程序的代码生成工作流程。使用Learnercoderconfigurer
对于突出的步骤。
火车机器学习模型,然后为此生成代码预测
和更新
通过使用编码器配置器来实现模型的功能。
加载carsmall
数据集和培训支持向量机(SVM)回归模型。金宝app
加载carsmallX =(功率、重量);Y = MPG;Mdl = fitrsvm (X, Y);
Mdl
是一个回归vm.
对象。
为此创建一个编码器配置程序回归vm.
模型通过使用Learnercoderconfigurer
.指定预测器数据X
.这Learnercoderconfigurer
功能使用输入X
配置编码器属性预测
功能输入。
X配置= learnerCoderConfigurer (Mdl)
配置属性= RegressionSVMCoderConfigurer:更新输入:α:[1 x1 LearnerCoderInput] SupportVectors: [1 x1 LearnerCoderInpu金宝appt]: [1 x1 LearnerCoderInput]偏见:[1 x1 LearnerCoderInput]预测输入:X: [1 x1 LearnerCoderInput]代码生成参数:NumOutputs: 1 OutputFileName:“RegressionSVMModel”属性,方法
配置程序
是一个RegressionSVMCoderConfigurer
对象的代码配置器回归vm.
对象。
要生成C/ c++代码,您必须能够访问正确配置的C/ c++编译器。MATLAB编码器定位和使用一个支持的,安装的编译器。金宝app您可以使用墨西哥人
设置
查看和更改默认编译器。更多信息请参见改变默认的编译器.
为此生成代码预测
和更新
SVM回归模型的功能(Mdl
)默认设置。
generateCode(配置)
GenerateCode在输出文件夹中创建这些文件:'Initialize.m','predict.m','update.m','回归vmmodel.mat'代码生成成功。
这Generatecode.
函数完成这些操作:
生成生成代码所需的MATLAB文件,包括两个入口点函数预测.M.
和update.m
为了预测
和更新
函数Mdl
, 分别。
创建名为MEX函数RegressionSVMModel
用于两个入口点功能。
创建MEX函数的代码codegen \墨西哥人\ RegressionSVMModel
文件夹中。
将MEX函数复制到当前文件夹。
显示该内容预测.M.
那update.m
,initialize.m
使用类型
功能。
类型预测.M.
函数varargout = predict(x,varargin)%#codegen%by matlab,23-feb-2021 19:18:25 [varargout {1:nargout}] =初始化('predict',x,varargin {:});结尾
类型update.m
function update(varargin) %#codegen % Autogenerated by MATLAB, 23- 2 -2021 19:18:25 initialize('update',varargin{:});结尾
类型initialize.m
function [varargout] = initialize(command,varargin) %#codegen %由MATLAB自动生成,23- 2月2021 19:18:25 coder.inline('always') persistent model if isempty(model) model = loadLearnerForCoder('RegressionSVMModel.mat');Alpha % SupportVectors % Scale % Bias model = update(model,varargi金宝appn{:});case 'predict' % predict输入:X X = varargin{1};if nargin == 2 [varargout{1:nargout}] =预测(模型,X);else PVPairs = cell(1,nargin-2);PVPairs{1,i} = varargin{i+1};end [varargout{1:nargout}] = predict(model,X,PVPairs{:});结束结束结束
使用部分数据集列车SVM模型,并为模型创建一个编码器配置器。使用编码器配置器的属性指定SVM模型参数的编码器属性。使用编码器配置器的对象函数来生成C代码,该C代码预测新的预测器数据的标签。然后使用整个数据集重新恢复模型,并在生成的代码中更新参数而无需重新生成代码。
火车模型
加载电离层
数据集。该数据集有34个预测器和351个雷达返回的二进制响应,要么是坏的(“b”
)或好('G'
).使用前50个观察点训练一个二值SVM分类模型。
加载电离层mdl = fitcsvm(x(1:50,:),y(1:50));
Mdl
是一个分类VM.
对象。
创建编码器配置程序
为此创建一个编码器配置程序分类VM.
模型通过使用Learnercoderconfigurer
.指定预测器数据X
.这Learnercoderconfigurer
功能使用输入X
配置编码器属性预测
功能输入。此外,将输出的数量设置为2,以便生成的代码返回预测的标签和分数。
configurer =学习者(MDL,x(1:50,:),“NumOutputs”2);
配置程序
是一个classificationsvmcoderconfigurer
对象的代码配置器分类VM.
对象。
指定参数的编码器属性
指定SVM分类模型参数的编码器属性,以便在再培训模型后可以更新生成的代码中的参数。此示例指定要传递给生成的代码和SVM模型的支持向量的编码器属性的预测器数据的编码器属性。金宝app
首先,指定编码器属性X
这样生成的代码就可以接受任何数量的观察结果。修改秘诀
和杂色金属依赖项
属性。这秘诀
属性指定预测器数据大小的上界,以及杂色金属依赖项
属性指定预测器数据的每个维度是否具有可变大小或固定大小。
configuration . x . sizevector = [Inf 34];configuration . x . variabledimensions = [true false];
第一维度的大小是观察的数量。在这种情况下,代码指定大小的上限是INF.
大小是可变的,这意味着X
可以有任意数量的观察结果。如果您在生成代码时不知道观察数据的数量,则此规范非常方便。
第二维度的大小是预测变量的数量。必须为机器学习模型固定此值。X
包含34个预测因子,因此值秘诀
属性必须是34和值的值杂色金属依赖项
属性必须错误的
.
如果您使用新的数据或不同的设置重新训练SVM模型,支持向量的数量可能会有所不同。金宝app的编码器属性金宝appSupportVectors
这样就可以在生成的代码中更新支持向量。金宝app
configurati金宝appon . supportvectors . sizevector = [250 34];
alpha的Sizevector属性已被修改为满足配置约束。SizeVector属性for SupportVe金宝appctorLabels已被修改为满足配置约束。
configurer.金宝appsupportVectors.variabledimensions = [true false];
Alpha的VariableDimensions属性已经被修改以满足配置约束。SupportVectorLabels的VariableDimen金宝appsions属性已经被修改以满足配置约束。
如果修改编码器属性金宝appSupportVectors
,然后软件修改了编码器属性Α
和金宝appSupportVectorLabels
满足配置约束。如果一个参数的编码器属性的修改需要随后的改变对其他从属参数来满足配置约束,则软件改变了从属参数的编码器属性。
生成代码
要生成C/ c++代码,您必须能够访问正确配置的C/ c++编译器。MATLAB编码器定位和使用一个支持的,安装的编译器。金宝app您可以使用墨西哥人
设置
查看和更改默认编译器。更多信息请参见改变默认的编译器.
使用Generatecode.
为此生成代码预测
和更新
SVM分类模型的功能(Mdl
)默认设置。
generateCode(配置)
generateCode在输出文件夹中创建这些文件:'initialize。米”、“预测。米”、“更新。米”、“ClassificationSVMModel。mat'代码生成成功。
Generatecode.
生成生成代码所需的MATLAB文件,包括两个入口点函数预测.M.
和update.m
为了预测
和更新
函数Mdl
, 分别。然后Generatecode.
创建一个名为ClassificationsVMModel.
对于两个入口点函数codegen \墨西哥人\ ClassificationSVMModel
文件夹并将MEX函数复制到当前文件夹。
验证生成的代码
传递一些预测数据来验证是否预测
功能Mdl
和预测
MEX函数中的函数返回相同的标签。要在具有多个入口点的MEX函数中调用一个入门点函数,请将函数名称指定为第一个输入参数。
[标签,得分] =预测(MDL,x);[label_mex,score_mex] = classificationsvmmodel(“预测”,X);
比较标签
和label_mex
通过使用是平等的
.
isequal(标签,label_mex)
ans =.逻辑1
是平等的
返回逻辑1(真正的
)如果所有输入相等。比较证实了预测
功能Mdl
和预测
MEX函数中的函数返回相同的标签。
得分_mex.
与...相比,可能包括圆截止差异分数
.在这种情况下,比较得分_mex.
和分数
,允许小的公差。
查找(ABS(得分 - 得分_MEX)> 1E-8)
Ans = 0x1空双列向量
比较证实了分数
和得分_mex.
在容忍范围内是否相等1E-8
.
培训模型和生成代码中的更新参数
使用整个数据集重新培训模型。
RetrainingMDL = FITCSVM(X,Y);
通过使用提取要更新的参数validatedUpdateInputs
.此功能检测到修改的模型参数retrainedMdl
并验证修改后的参数值是否满足参数的编码器属性。
params = validatedUpdateInputs(配置、retrainedMdl);
更新生成代码中的参数。
classificationsvmmodel('更新'params)
验证生成的代码
的输出进行比较预测
功能retrainedMdl
和预测
函数。
(标签,分数)=预测(retrainedMdl X);[label_mex,score_mex] = classificationsvmmodel(“预测”,X);isequal(标签,label_mex)
ans =.逻辑1
查找(ABS(得分 - 得分_MEX)> 1E-8)
Ans = 0x1空双列向量
比较证实了标签
和Labels_mex.
相等,并且在公差范围内分值相等。
Mdl
-机器学习模型机器学习模型,指定为完整或紧凑的模型对象,如支持的模型表所示。金宝app
模型 | 全/紧凑的模型对象 | 培训功能 |
---|---|---|
多包分类的二进制决策树 | ClassificationTree. 那CompactClassificationTree |
fitctree |
单级和二进制分类的SVM | 分类VM. 那CompactClassificationsVM. |
fitcsvm. |
二进制分类的线性模型 | ClassificationLinear |
fitclinear |
支持向量机和线性模型的多类模型 | Classifiedecoc. 那CompactClassificeCoc. |
fitcecoc |
二叉决策树的回归 | 回归植物 那CompactRegressionTree |
fitrtree. |
金宝app支持向量机(SVM)回归 | 回归vm. 那compactregressionsvm. |
fitrsvm |
线性回归 | RegressionLinear |
Fitrinear. |
对于代码生成使用说明和机器学习模型的限制,请参阅模型对象页面的代码生成部分。
X
-预测数据预测数据预测
功能Mdl
,指定为N-经过-P.数字矩阵,N观察的次数是多少P.是预测变量的数量。而是指定X
作为一个P.-经过-N矩阵,其中观察值对应列,必须设置'观察'
的名称-值对参数'列'
.此选项仅适用于带线性二进制学习者的线性模型和ECOC模型。
这预测
机器学习模型的功能预测标签分类和响应回归给定的预测数据。创建编码器配置器后配置程序
,你可以使用Generatecode.
为生成C / C ++代码的函数预测
功能Mdl
.生成的代码接受具有相同大小和数据类型的预测器数据X
.您可以在创建后指定每个维度是否具有可变大小或固定大小配置程序
.
例如,如果要生成使用100个预测变量的100个观察预测标签的C / C ++代码,则指定X
作为零(100,3)
.这Learnercoderconfigurer
函数仅使用大小和数据类型X
而不是它的价值。因此,X
可以是预测器数据或MATLAB表达式,其表示具有特定数据类型的值。输出配置程序
存储尺寸和数据类型X
在里面X
财产配置程序
.的大小和数据类型X
在创建配置程序
.例如,将观察次数与200和数据类型更改为单
.
configurer.x.sizevector = [200 3];configur.x.datatype =.'单身的';
要允许生成的C/ c++代码接受最多100个观测值的预测器数据,请指定X
作为零(100,3)
和改变杂色金属依赖项
财产。
configur.x.variabledimensions = [1 0];
[1 0]
的第一个维度X
(观察数)有一个可变的大小和第二个维度X
(预测变量的数量)有固定的大小。指定的观察数(在本例中为100)成为生成的C/ c++代码中允许的最大观察数。为了允许任意数量的观察,将边界指定为INF.
.configurer.x.sizevector = [INF 3];
数据类型:单
|双倍的
指定可选的逗号分离对名称,价值
论点。的名字
是参数名称和价值
是对应的值。的名字
必须出现在引号内。您可以按如下顺序指定几个名称和值对参数name1,value1,...,namen,valuen
.
Configurer = LearnerCoderConfigurer(MDL,x,'numoutputs',2,'outputfilename','mymodel')
设置输出的数量预测
到2并指定文件名'mymodel'
生成的C/ c++代码。
“NumOutputs”
-中输出数预测
输出参数的数量预测
机器学习模型的功能Mdl
,指定为逗号分隔的对,由“NumOutputs”
和一个正整数N
.
此表列出了输出的预测
不同型号的功能。预测
在生成的C/ c++代码中返回第一个N
输出的预测
按输出列中给出的顺序函数。
模型 | 预测 的函数模型 |
输出 |
---|---|---|
多包分类的二进制决策树 | 预测 |
标签 (预测类标签),分数 (后验概率),节点 (预测类的节点数),CNUM (预测标签的类别号) |
单级和二进制分类的SVM | 预测 |
标签 (预测类标签),分数 (分数或后验概率) |
二进制分类的线性模型 | 预测 |
标签 (预测类标签),分数 (分类评分) |
支持向量机和线性模型的多类模型 | 预测 |
标签 (预测类标签),negl (负平均二进制损失),PBScore (正阶级得分) |
二叉决策树的回归 | 预测 |
Yfit (预测的答复),节点 (用于预测的节点数) |
SVM回归 | 预测 |
YFIT. (预测的答复) |
线性回归 | 预测 |
yhat (预测的答复) |
例如,如果您指定'numoutputs',1
,建立支持向量机分类模型预测
在生成的C/ c++代码中返回预测的类标签。
创建编码器配置器后配置程序
,您可以使用点表示法修改输出的数量。
configurer.numOutputs = 2;
这“NumOutputs”
名称-值对参数等价于“-nargout”
编译器选项的codegen
(MATLAB编码器).此选项指定代码生成的入口点函数中输出参数的数量。对象功能Generatecode.
编码器配置器生成两个入口点函数 -预测.M.
和update.m
为了预测
和更新
函数Mdl
,并为这两个入口点函数生成C/ c++代码。的指定值“NumOutputs”
对应于输出参数的数量预测.M.
.
例子:'numoutputs',2
数据类型:单
|双倍的
“OutputFileName”
-生成的C/ c++代码的文件名Mdl
对象名称+“模型”
(默认)|字符向量|字符串标量生成的C / C ++代码的文件名,指定为逗号分隔对组成“OutputFileName”
和一个字符矢量或字符串标量。
对象功能Generatecode.
代码配置器使用这个文件名生成C/ c++代码。
文件名不能包含空格,因为它们可能导致某些操作系统配置中的代码生成失败。同样,名称必须是一个有效的MATLAB函数名称。
的对象名Mdl
其次是“模型”
.例如,如果Mdl
是一个CompactClassificationsVM.
或分类VM.
对象,然后默认名称是'pressificationsvmmodel'
.
创建编码器配置器后配置程序
,您可以使用点表示法修改文件名。
配置。OutputFileName ='mymodel';
例子:“OutputFileName”、“myModel”
数据类型:char
|字符串
'verbose'
-冗长的水平真正的
(逻辑1)(默认)|错误的
(逻辑0)详细级别,指定为逗号分隔对组成'verbose'
和任何一种真正的
(逻辑1)或错误的
(逻辑0)。详细级别控制编码器配置器在命令行上显示通知消息配置程序
.
价值 | 描述 |
---|---|
真正的 (逻辑1) |
当您对参数的编码器属性的更改导致其他相关参数的更改时,该软件将显示通知消息。 |
错误的 (逻辑0) |
该软件不显示通知消息。 |
要在生成代码中更新机器学习模型参数,需要在生成代码之前配置参数的编码器属性。参数的编码器属性彼此依赖,因此软件将依赖关系存储为配置约束。如果您通过使用编码器配置器修改参数的编码器属性,并且该修改需要后续更改其他相关参数以满足配置约束,那么软件将更改相关参数的编码器属性。详细级别决定软件是否为这些后续更改显示通知消息。
创建编码器配置器后配置程序
,您可以使用点表示法修改详细级别。
配置。详细的= false;
例子:“详细”,假的
数据类型:逻辑
'观察'
-预测数据观测维数'行'
(默认)|'列'
预测器数据观察维,指定为逗号分隔的对由'观察'
和任何一种'行'
或'列'
.如果你设置了'观察'
来'列'
,然后是预测的数据X
必须是定向的,以便观察对应的列。
笔记
这'列'
选项仅适用于线性模型和带有线性二元学习者的ECOC模型。
例子:“ObservationsIn”、“列”
配置程序
- 编码器配置程序机器学习模型的编码器配置程序,作为此表中的编码器配置器对象之一返回。
模型 | 编码器配置对象 |
---|---|
多包分类的二进制决策树 | ClassificationTreeCoderConfigurer |
单级和二进制分类的SVM | classificationsvmcoderconfigurer |
二进制分类的线性模型 | ClassificeLcoderConfigurer. |
支持向量机和线性模型的多类模型 | ClassificationECOCCoderConfigurer |
二叉决策树的回归 | RegressionTreeCoderConfigurer |
金宝app支持向量机(SVM)回归 | RegressionSVMCoderConfigurer |
线性回归 | RegentionLinearcoderConfigurer |
使用编码器配置程序对象的对象函数和属性来配置代码生成选项,并为此生成C / C ++代码预测
和更新
机器学习模型的功能。
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。