主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

learnerCoderConfigurer

機械学習モデルのコ,ダ,コンフィギュアラ,の作成

説明

機械学習モデルに学習をさせた後で,learnerCoderConfigurerを使用してモデルのコ,ダ,コンフィギュアラ,を作成します。コンフィギュアラーのプロパティとオブジェクト関数を使用することにより,コード生成オプションを指定し,機械学習モデルの関数预测および更新に対するc / c++コドを生成します。C/ c++コ,ドの生成にはMATLAB®编码器™が必要です。

次のフローチャートは,コーダーコンフィギュアラーを使用するコード生成のワークフローを示します。強調表示されているステップでlearnerCoderConfigurerを使用します。

配置= learnerCoderConfigurer (MdlXは,機械学習モデルMdlのコダコンフィギュアラ配置を返します。Mdlの関数预测のための予測子デ,タXを指定します。

配置= learnerCoderConfigurer (MdlX名称,值は1つ以上の名前と値のペアの引数で指定された追加オプションを使用して,コーダーコンフィギュアラーを返します。たとえば,関数预测の出力引数の個数,生成されるC / c++のファイル名,およびコーダーコンフィギュアラーの詳細レベルを指定できます。

すべて折りたたむ

機械学習モデルに学習させてから,コ,ダ,コンフィギュアラ,を使用して,このモデルの関数预测および更新に対してコ,ドを生成します。

carsmallデ,タセットを読み込み,サポ,トベクタ,マシン(svm)回帰モデルに学習をさせます。

负载carsmallX =[马力,重量];Y = mpg;Mdl = fitrsvm(X,Y);

Mdlは,RegressionSVMオブジェクトです。

learnerCoderConfigurerを使用して,RegressionSVMモデルに。予測子デ,タXを指定します。関数learnerCoderConfigurerは,入力Xを使用して,関数预测の入力のコ,ダ,属性を設定します。

configurer = learnerCoderConfigurer(Mdl,X)
configurer = RegressionSVMCoderConfigurer with properties: Update input: Alpha: [1x1 LearnerCoderInput] S万博1manbetxupportVectors: [1x1 LearnerCoderInput] Scale: [1x1 LearnerCoderInput] Bias: [1x1 LearnerCoderInput] Predict input: X: [1x1 LearnerCoderInput]代码生成参数:NumOutputs: 1 OutputFileName: ' regressionsvdermodel '属性,方法

配置は,RegressionSVMオブジェクトのコ,ダ,コンフィギュアラ,であるRegressionSVMCoderConfigurerオブジェクトです。

C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポ,トされている,ンスト,ラを探して使用します。墨西哥人设置を使用すると,既定のコンパ。詳細は,既定のコンパ@ @ラの変更を参照してください。

既定の設定を使用して,svm回帰モデル(Mdl)の関数预测および更新に対するコ,ドを生成します。

generateCode(配置)
generateCode在output文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“RegressionSVMModel。代码生成成功。

関数generateCodeは,以下の処理を実行します。

  • コドを生成するために必要なmatlabファルを生成する。これには,Mdlの関数预测および更新にそれぞれ対応する2のエントリポント関数predict.mおよびupdate.mが含まれます。

  • 2のエントリポント関数に対して,RegressionSVMModelという名前のmex関数を作成する。

  • Mex関数のコ,ドをcodegen \墨西哥人\ RegressionSVMModelフォルダ,に作成する。

  • Mex関数を現在のフォルダ,にコピ,する。

関数类型を使用して,predict.mupdate.mおよびinitialize.mファ@ @ルの内容を表示します。

类型predict.m
function varargout = predict(X,varargin) %#codegen %由MATLAB自动生成,26-Jun-2021 04:54:55 [varargout{1:nargout}] =初始化('predict',X,varargin{:});结束
类型update.m
函数更新(varargin) %#codegen %由MATLAB自动生成,26-Jun-2021 04:54:55初始化('update',varargin{:});结束
类型initialize.m
function [varargout] = initialize(command,varargin) %#codegen %由MATLAB自动生成,26-Jun-2021 04:54:55 code .inline('always')持久化模型if isempty(模型)model = loadLearnerForCoder('RegressionSVMModel.mat');end switch(command) case 'update' %更新结构字段:Alpha % SupportVectors %万博1manbetx Scale %偏差模型= update(model,varargin{:});预测输入:X X = varargin{1};if nargin == 2 [varargout{1:nargout}] = predict(模型,X);else PVPairs = cell(1,nargin-2);如果i = 1:nargin-2 pvairs {1,i} = varargin{i+1};end [varargout{1:nargout}] = predict(model,X,PVPairs{:});结束结束

データセットの一部を使用してSVMモデルに学習をさせ,モデルについてコーダーコンフィギュアラーを作成します。コーダーコンフィギュアラーのプロパティを使用して,SVMモデルパラメーターのコーダー属性を指定します。コ,ダ,コンフィギュアラ,のオブジェクト関数を使用して,新しい予測子データについてラベルを予測する C コードを生成します。その後、データセット全体を使用してモデルに再学習をさせ、コードを再生成せずに、生成されたコードのパラメーターを更新します。

モデルの学習

电离层デ,タセットを読み込みます。このデタセットには,レダ反射にいての34個の予測子と,不良(“b”)または良好(‘g’)という351個の二項反応が含まれています。最初の50個の観測値を使用して,バesc escナリSVM分類モデルに学習をさせます。

负载电离层Mdl = fitcsvm(X(1:50,:),Y(1:50));

Mdlは,ClassificationSVMオブジェクトです。

コ,ダ,コンフィギュアラ,の作成

learnerCoderConfigurerを使用して,ClassificationSVMモデルに。予測子デ,タXを指定します。関数learnerCoderConfigurerは,入力Xを使用して,関数预测の入力のコ,ダ,属性を設定します。また,生成されるコードが予測ラベルおよびスコアを返すようにするため,出力の個数を2に設定します。

配置器= learnerCoderConfigurer(Mdl,X(1:50,:)),“NumOutputs”2);

配置は,ClassificationSVMオブジェクトのコ,ダ,コンフィギュアラ,であるClassificationSVMCoderConfigurerオブジェクトです。

パラメ,タ,のコ,ダ,属性の指定

生成されたコードのパラメーターをモデルの再学習後に更新できるようにするため,支持向量机分類モデルのパラメーターのコーダー属性を指定します。この例では,生成されたコードに渡す予測子データのコーダー属性と,SVMモデルのサポートベクターのコーダー属性を指定します。

はじめに,生成されたコ,ドが任意の個数の観測値を受け入れるように,Xのコ,ダ,属性を指定します。属性SizeVectorおよびVariableDimensionsを変更します。属性SizeVectorは、予測子デ、タのサ、ズの上限を指定し、属性VariableDimensionsは,予測子デ,タの各次元が可変サ。

configuration . x . sizevector = [Inf 34];configuration . x . variabledimensions = [true false];

1番目の次元のサaapl . exeズは,観測値の個数です。このケスでは,サズの上限がであり,サ▪▪▪▪▪ズが可変,▪▪▪▪まりXの観測値の個数が任意であることを指定します。この指定は,コ,ドを生成するときに観測値の個数が不明である場合に便利です。

2番目の次元のサaapl . exeズは,予測子変数の個数です。この値は,機械学習モデルに対し固定でなければなりません。Xには34個の予測子が含まれているので,属性SizeVectorの値は34,属性VariableDimensionsの値はでなければなりません。

新しいデータまたは異なる設定を使用してSVMモデルに再学習をさせた場合,サポートベクターの個数が変化する可能性があります。したがって,生成されたコ,ドのサポ,トベクタ,を更新できるように万博1manbetxSupportVectorsのコ,ダ,属性を指定します。

configurati万博1manbetxon . supportvectors . sizevector = [250 34];
Alpha的SizeVector属性已被修改以满足配置约束。SupportVectorLabels的SizeV万博1manbetxector属性已被修改以满足配置约束。
configurati万博1manbetxon . supportvectors . variabledimensions = [true false];
Alpha的VariableDimensions属性已被修改以满足配置约束。已修改SupportVectorLabels的VariableDi万博1manbetxmensions属性以满足配置约束。

万博1manbetxSupportVectorsのコ,ダ,属性が変更されると,αおよび万博1manbetxSupportVectorLabelsのコ,ダ,属性が構成の制約を満たすように変更されます。あるパラメーターのコーダー属性の変更によって構成の制約を満たすために他の従属パラメーターの変更が必要になる場合,従属パラメーターのコーダー属性は変更されます。

コ,ドの生成

C / c++コードを生成するには,適切に設定されているC / c++コンパイラにアクセスできなければなりません。MATLAB编码器は,サポ,トされている,ンスト,ラを探して使用します。墨西哥人设置を使用すると,既定のコンパ。詳細は,既定のコンパ@ @ラの変更を参照してください。

generateCodeを使用して,svm分類モデル(Mdl)の関数预测および更新にいて,既定の設定でコドを生成します。

generateCode(配置)
generateCode在output文件夹中创建这些文件:米”、“预测。米”、“更新。米”、“ClassificationSVMModel。代码生成成功。

generateCodeは,コ,ドを生成するために必要なmatlabファ,ルを生成します。これには,Mdlの関数预测および更新にそれぞれ対応する2のエントリポント関数predict.mおよびupdate.mが含まれます。次にgenerateCodeは,2のエントリポClassificationSVMModelという名前のmex関数をcodegen \墨西哥人\ ClassificationSVMModelフォルダ,内に作成し,このmex関数を現在のフォルダ,にコピ,します。

生成されたコ,ドの確認

予測子デ,タを渡して,Mdlの関数预测とmex関数の関数预测が同じラベルを返すかどうかを確認します。複数のエントリポイントがある墨西哥人関数内のエントリポイント関数を呼び出すため,1番目の入力引数として関数名を指定します。

[label,score] = predict(Mdl,X);[label_mex,score_mex] = ClassificationSVMModel(“预测”, X);

isequalを使用して,标签label_mexを比較します。

label_mex isequal(标签)
ans =逻辑1

すべての入力が等しい場合,isequalは逻辑1 (真正的)を返します。この比較により,同じラベルをMdlの関数预测とmex関数の関数预测が返すことを確認します。

分数と比較すると,score_mexには丸めによる差が含まれている場合があります。このような場合は,小さい誤差を許容してscore_mex分数を比較します。

Find (abs(score-score_mex) > 1e-8)
Ans = 0x1空双列向量

この比較により,許容誤差1 e-8内で分数score_mexが等しいことを確認します。

モデルの再学習と生成コ,ド内のパラメ,タ,の更新

デ,タセット全体を使用してモデルに再学習をさせます。

retrainedMdl = fitcsvm(X,Y);

validatedUpdateInputsを使用して,更新するパラメ,タ,を抽出します。この関数は,retrainedMdl内の修正されたモデルパラメーターを判別し,修正されたパラメーター値がパラメーターのコーダー属性を満たすかどうかを検証します。

params = validatedUpdateInputs(配置器,retrainedMdl);

生成されたコ,ド内のパラメ,タ,を更新します。

ClassificationSVMModel (“更新”params)

生成されたコ,ドの確認

retrainedMdlの関数预测の出力と,更新したmex関数の関数预测の出力を比較します。

[label,score] = predict(retrainedMdl,X);[label_mex,score_mex] = ClassificationSVMModel(“预测”, X);label_mex isequal(标签)
ans =逻辑1
Find (abs(score-score_mex) > 1e-8)
Ans = 0x1空双列向量

この比較により,标签labels_mexが等しく,スコアの値が許容誤差内で等しいことを確認します。

入力引数

すべて折りたたむ

機械学習モデル。完全またはコンパクトなモデルオブジェクトを指定します。サポ,トされるモデルは次の表に記載されています。

モデル 完全/コンパクトなモデルオブジェクト 学習関数
マルチクラス分類用の二分決定木 ClassificationTreeCompactClassificationTree fitctree
1クラスおよびバesc支持向量机ナリ分類用の ClassificationSVMCompactClassificationSVM fitcsvm
バ@ @ナリ分類用の線形モデル ClassificationLinear fitclinear
支持向量机モデルおよび線形モデル用のマルチクラスモデル ClassificationECOCCompactClassificationECOC fitcecoc
回帰用の二分決定木 RegressionTreeCompactRegressionTree fitrtree
サポ,トベクタ,マシン(svm)回帰 RegressionSVMCompactRegressionSVM fitrsvm
線形回帰 RegressionLinear fitrlinear

機械学習モデルのコード生成に関する使用上の注意および制限については,モデルオブジェクトのページの”コード生成“セクションを参照してください。

Mdlの関数预测の予測子デ,タ。n行 p 列の数値行列を指定します。n は観測値の個数、p は予測子変数の個数です。代わりにXを観測値が列に対応するp行n列の行列として指定するには,名前と値のペアの引数“ObservationsIn”“列”に設定します。このオプションが利用できるのは,線形バaaplナリ学習器を含む線形モデルとecocモデルのみです。

機械学習モデルの関数预测は,分類の場合はラベルを,回帰の場合は応答を,与えられた予測子デ,タに対して予測します。コダコンフィギュアラ配置の作成後,関数generateCodeを使用してMdlの関数预测に対するc / c++コドを生成できます。生成されるコ,ドは,Xと同じサズおよびデタ型の予測子デタを受け入れます。配置の作成後,各次元のサ。

100年たとえば個の観測値と3つの予測子変数を使用してラベルを予測するC / c++コードを生成する場合,Xとして0 (100 3)を指定します。関数learnerCoderConfigurerは,Xの値ではなく,サ。したがってXは,特定のデタ型をも一連の値を表すmatlab式または予測子デタにすることができます。出力配置には,配置Xプロパティ内のXのサ▪▪ズおよびデ▪▪タ型が格納されます。配置の作成後,Xのサ▪▪ズおよびデ▪▪タ型を変更できます。たとえば,観測値の個数を 200 に、データ型をに変更します。

configuration . x . sizevector = [200 3];configurer.X.DataType =“单一”

生成されるC / c++コードが,最大100個の観測値がある予測子データを受け入れるようにするには,Xとして0 (100 3)を指定し,VariableDimensionsプロパティを変更します。

configuration . x . variabledimensions = [10];
[1 0]は,Xの1番目の次元(観測値の個数)が可変サXの2番目の次元(予測子変数の個数)が固定サesc escズであることを示します。指定した観測値の個数(この例では100)は,生成されるC / c++コードで許容される観測値の最大数になります。任意の個数の観測値を可能にするには,上限としてを指定します。
configuration . x . sizevector = [Inf 3];

デ,タ型:|

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:configurer = learnerCoderConfigurer(Mdl,X,'NumOutputs',2,'OutputFileName','myModel')は,预测の出力の個数を2に設定し,生成されるc / c++コドのファル名として“myModel”を指定します。

機械学習モデルMdlの関数预测の出力引数の個数。“NumOutputs”と正の整数nから構成されるコンマ区切りのペアとして指定します。

次の表は,各種のモデルにおける関数预测の出力の一覧です。生成されるc / c++コドの预测は,“出力”列に示されている順序で関数预测の最初のn個の出力を返します。

モデル モデルの関数预测 出力
マルチクラス分類用の二分決定木 预测 标签(予測クラスラベル),分数(事後確率)、节点(予測クラスのノ,ド数),cnum(予測ラベルのクラス数)
1クラスおよびバesc支持向量机ナリ分類用の 预测 标签(予測されたクラスラベル),分数(スコアまたは事後確率)
バ@ @ナリ分類用の線形モデル 预测 标签(予測されたクラスラベル),分数(分類スコア)
支持向量机モデルおよび線形モデル用のマルチクラスモデル 预测 标签(予測されたクラスラベル),NegLoss(符号を反転した平均バaapl .ナリ損失),PBScore(正のクラススコア)
回帰用の二分決定木 预测 Yfit(予測された応答),节点(予測のノ,ド数)
支持向量机回帰 预测 yfit(予測された応答)
線形回帰 预测 YHat(予測された応答)

たとえば,svm分類モデルに対して“NumOutputs”,1を指定した場合,预测は生成されたc / c++コドで予測クラスラベルを返します。

コダコンフィギュアラ配置を作成した後で,ドット表記を使用して出力の個数を変更できます。

配置。NumOutputs= 2;

名前と値のペアの引数“NumOutputs”は,codegen(MATLAB编码器)のコンパ@ @ラオプション“-nargout”と等価です。このオプションは,コ,ド生成のエントリポ,ント関数における出力引数の個数を指定します。コ,ダ,コンフィギュアラ,のオブジェクト関数generateCodeは,Mdlの関数预测および更新に対してpredict.mおよびupdate.mという2つのエントリポイント関数をそれぞれ生成し,この2つのエントリポイント関数に対してC / c++コードを生成します。“NumOutputs”にいて指定した値は,predict.mの出力引数の個数に対応します。

例:“NumOutputs”,2

デ,タ型:|

生成されるc / c++コドのファル名。“OutputFileName”と文字ベクトルまたは字符串スカラ,から構成されるコンマ区切りのペアとして指定します。

コ,ダ,コンフィギュアラ,のオブジェクト関数generateCodec / c++コドを生成します。

オペレーティングシステムの構成によってはコード生成に失敗する可能性があるので,ファイル名には空白を含めないでください。また,名前は有効なmatlab関数名でなければなりません。

既定のファ电子邮箱ル名は,Mdlのオブジェクト名に“模型”を追加した名前です。たとえば,MdlCompactClassificationSVMまたはClassificationSVMオブジェクトである場合,既定の名前は“ClassificationSVMModel”です。

コダコンフィギュアラ配置を作成した後で,ドット表記を使用してファ。

配置。OutputFileName =“myModel”

例:“OutputFileName”、“myModel”

デ,タ型:字符|字符串

詳細レベル。“详细”真正的(逻辑1)または(逻辑0)のいずれかから構成されるコンマ区切りのペアとして指定します。詳細レベルは,コマンドランにおけるコダコンフィギュアラ配置に関する通知メッセ,ジの表示を制御します。

説明
真正的(逻辑1) パラメーターのコーダー属性に対する変更によって他の従属するパラメーターが変化する場合,通知メッセージが表示されます。
(逻辑0) 通知メッセ,ジは表示されません。

生成コード内の機械学習のモデルパラメーターを更新できるようにするには,コード生成の前にパラメーターのコーダー属性を構成する必要があります。パラメ,タ,のコ,ダ,属性は互いに依存するので,依存関係が構成の制約として保存されます。コダコンフィギュアラを使用してパラメーターのコーダー属性を変更するときに、構成の制約を満たすために他の従属するパラメーターも変更する必要がある場合、従属するパラメーターのコーダー属性が変更されます。詳細レベルは、これらの引き続いて起きた変更についてメッセージを表示するかどうかを決定します。

コダコンフィギュアラ配置を作成した後で,ドット表記を使用して詳細レベルを変更できます。

配置。详细的= false;

例:“详细”,假的

デ,タ型:逻辑

予測子デ,タにおける観測値の次元。“ObservationsIn”と,“行”または“列”のいずれかから構成されるコンマ区切りのペアとして指定します。“ObservationsIn”“列”に設定すると,観測値が列に対応するように予測子デ,タXの方向を設定しなければなりません。

メモ

“列”オプションが利用できるのは,線形バaaplナリ学習器を含む線形モデルとecocモデルのみです。

例:“ObservationsIn”、“列”

出力引数

すべて折りたたむ

機械学習モデルのコ,ダ,コンフィギュアラ,オブジェクト。次の表のいずれかのコ,ダ,コンフィギュアラ,オブジェクトとして返されます。

モデル コ,ダ,コンフィギュアラ,オブジェクト
マルチクラス分類用の二分決定木 ClassificationTreeCoderConfigurer
1クラスおよびバesc支持向量机ナリ分類用の ClassificationSVMCoderConfigurer
バ@ @ナリ分類用の線形モデル ClassificationLinearCoderConfigurer
支持向量机モデルおよび線形モデル用のマルチクラスモデル ClassificationECOCCoderConfigurer
回帰用の二分決定木 RegressionTreeCoderConfigurer
サポ,トベクタ,マシン(svm)回帰 RegressionSVMCoderConfigurer
線形回帰 RegressionLinearCoderConfigurer

コーダーコンフィギュアラーオブジェクトのプロパティとオブジェクト関数を使用することにより,コード生成オプションを設定し,機械学習モデルの関数预测および更新に対するc / c++コドを生成します。

R2018bで導入