ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

loadCompactModel

保存されたコード生成用モデルからのモデル オブジェクトの再構築

説明

機械学習モデルのオブジェクト関数 (predictrandomknnsearch または rangesearch) に対する C/C++ コードを生成するには、saveCompactModelloadCompactModel および codegen を使用します。機械学習モデルに学習をさせた後で、saveCompactModel を使用してモデルを保存します。loadCompactModel を使用してモデルを読み込みオブジェクト関数を呼び出す、エントリポイント関数を定義します。その後、codegen または MATLAB® Coder™ アプリを使用して C/C++ コードを生成します。C/C++ コードの生成には MATLAB Coder が必要です。

次のフロー チャートは、機械学習モデルのオブジェクト関数に対するコード生成ワークフローを示します。強調表示されているステップで loadCompactModel を使用します。

Mdl = loadCompactModel(filename) は、filename という名前で MATLAB 形式のバイナリ ファイル (MAT ファイル) に格納されている保存済みモデルから、分類モデル、回帰モデルまたは最近傍探索モデル (Mdl) を再構築します。filename ファイルは、saveCompactModel を使用して作成しなければなりません。

すべて折りたたむ

機械学習モデルに学習をさせた後で、saveCompactModel を使用してモデルを保存します。loadCompactModel を使用してモデルを読み込み学習済みモデルの関数 predict を呼び出す、エントリポイント関数を定義します。その後、codegen を使用して C/C++ コードを生成します。

この例では、コマンド ラインで機械学習モデルの予測を行うためのコード生成ワークフローについて簡単に説明します。詳細は、機械学習モデルの予測をコマンド ラインで行うコードの生成を参照してください。MATLAB Coder アプリを使用してコードを生成することもできます。詳細については、機械学習モデルの予測を MATLAB Coder アプリを使用して行うコードの生成を参照してください。再近傍探索モデルを使用した最近傍探索用のコード生成の詳細については、最近傍探索モデルのコード生成を参照してください。

モデルの学習

フィッシャーのアヤメのデータセットを読み込みます。観測された setosa 種のアヤメをすべて削除して、2 つのクラスのデータのみが XY に含まれるようにします。

load fisheriris
inds = ~strcmp(species,'setosa');
X = meas(inds,:);
Y = species(inds);

処理済みのデータセットを使用して、サポート ベクター マシン (SVM) 分類モデルに学習をさせます。

Mdl = fitcsvm(X,Y);

MdlClassificationSVM モデルです。

モデルの保存

saveCompactModel を使用して、SVM 分類モデルを SVMIris.mat というファイルに保存します。

saveCompactModel(Mdl,'SVMIris');

エントリポイント関数の定義

以下を行う classifyIrises という名前のエントリポイント関数を定義します。

  • meas に対応する列をもつアヤメの花の測定値を受け入れ、予測したラベルを返す。

  • 学習済みの SVM 分類モデルを読み込む。

  • 読み込んだアヤメの花の測定値の分類モデルを使用して、ラベルを予測する。

type classifyIrises.m % Display contents of classifyIrises.m file
function label = classifyIrises(X) %#codegen
%CLASSIFYIRISES Classify iris species using SVM Model
%   CLASSIFYIRISES classifies the iris flower measurements in X using the
%   compact SVM model in the file SVMIris.mat, and then returns class
%   labels in label.
CompactMdl = loadCompactModel('SVMIris');
label = predict(CompactMdl,X);
end

MATLAB のアルゴリズムについてのコードを生成しようとしていることを指示するため、コンパイラ命令 %#codegen (またはプラグマ) をエントリポイント関数のシグネチャの後に追加します。この命令を追加すると、MATLAB Code Analyzer はコード生成時にエラーになる違反の診断と修正を支援します。

メモ: この例の右上にあるボタンをクリックしてこの例を MATLAB® で開くと、例のフォルダーが開きます。このフォルダーには、エントリポイント関数のファイルが含まれています。

コードの生成

codegen を使用して、エントリポイント関数のコードを生成します。C および C++ は静的な型の言語なので、エントリポイント関数内のすべての変数のプロパティをコンパイル時に決定しなければなりません。-args オプションの値として X を渡し、生成コードが学習データ X と同じデータ型および配列サイズをもつ入力を受け入れなければならないことを指定します。コンパイル時に観測値の個数が不明である場合、coder.typeof を使用して可変サイズの入力を指定することもできます。詳細は、コード生成用の可変サイズ引数の指定エントリポイント関数の入力のプロパティの指定 (MATLAB Coder) を参照してください。

codegen classifyIrises -args {X}

codegen は、プラットフォームに依存する拡張子をもつ MEX 関数 classifyIrises_mex を生成します。

生成されたコードの確認

predictclassifyIrises および classifyIrises_mex を使用して分類されたラベルを比較します。

label1 = predict(Mdl,X);
label2 = classifyIrises(X);
label3 = classifyIrises_mex(X);
verify_label = isequal(label1,label2,label3)
verify_label = logical
   1

isequal は、すべての入力が等しいことを意味する logical 1 (true) を返します。3 つの方法で分類したラベルは、すべて同じです。

入力引数

すべて折りたたむ

モデル オブジェクトを表す構造体配列が格納されている MAT ファイルの名前。文字ベクトルを指定します。filename ファイルは、saveCompactModel を使用して作成しなければなりません。

loadCompactModel は、filename ファイルに格納されているモデルをコンパイル時に再構築します。サポートされるモデルについては、saveCompactModel の入力引数 Mdl を参照してください。

filename ファイルの拡張子は .mat でなければなりません。filename に拡張子がない場合、loadCompactModel.mat を追加します。

filename に絶対パスが含まれていない場合、loadCompactModel は現在のフォルダーからファイルを読み込みます。

例: 'Mdl'

データ型: char | string

出力引数

すべて折りたたむ

機械学習モデル。次のいずれかのモデル オブジェクトとして返されます。

アルゴリズム

saveCompactModel は、予測には必要ないプロパティを削除することにより、分類モデルと回帰モデル (Mdl) のメモリ フットプリントを縮小します。

  • 対応するコンパクトなモデルがあるモデルの場合、関数 saveCompactModel は該当する関数 compact をモデルに適用してからモデルを保存します。

  • 対応するコンパクトなモデルがないモデル (ClassificationLinearRegressionLinearExhaustiveSearcherKDTreeSearcher など) の場合、関数 saveCompactModel はモデルをそのまま保存します。

  • ClassificationKNN モデル オブジェクトは、対応するコンパクトなオブジェクトがない完全なオブジェクトです。このモデルの場合、saveCompactModel はハイパーパラメーター最適化プロパティが含まれていないコンパクトなバージョンを保存します。

loadCompactModel は、saveCompactModel によって保存された縮小バージョンを読み込みます。

代替機能

  • 次の表に記載されているモデルに対して、learnerCoderConfigurer が作成したコーダー コンフィギュアラーを使用します。

    モデルコーダー コンフィギュアラー オブジェクト
    サポート ベクター マシン (SVM) 回帰RegressionSVMCoderConfigurer
    1 クラスおよびバイナリ分類用の SVMClassificationSVMCoderConfigurer
    SVM 用のマルチクラス モデルClassificationECOCCoderConfigurer

    機械学習モデルに学習をさせた後で、モデルのコーダー コンフィギュアラーを作成します。コンフィギュアラーのプロパティとオブジェクト関数を使用することにより、コード生成オプションを設定し、モデルの関数 predict および update に対するコードを生成します。コーダー コンフィギュアラーを使用してコードを生成した場合、コードを再生成せずに、生成されたコードのモデル パラメーターを更新できます。詳細については、予測用のコード生成とコーダー コンフィギュアラーの使用による更新を参照してください。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

R2016b で導入