ドキュメンテーション

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

loadCompactModel

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

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

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

構文

Mdl = loadCompactModel(filename)

説明

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
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

出力引数

すべて折りたたむ

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

  • コンパクトな分類モデル オブジェクト

    モデル オブジェクトメモ:

    ClassificationKNN

    ClassificationKNN モデル オブジェクトは、対応するコンパクトなオブジェクトがない完全なオブジェクトです。saveCompactModel は、交差検証パラメーターとハイパーパラメーターが含まれていないコンパクトなバージョンを保存します。 loadCompactModel は、saveCompactModel を使用して保存されたコンパクトなバージョンを返します。

    ClassificationLinear

    このモデル オブジェクトは、対応するコンパクトなオブジェクトがない完全なオブジェクトです。saveCompactModel はモデルをそのまま保存し、loadCompactModel は保存されたモデルを返します。

    CompactClassificationDiscriminant

     

    CompactClassificationECOC

     
    CompactClassificationEnsemble 

    CompactClassificationSVM

    事後確率を予測する SVM モデルを保存するために saveCompactModel を使用し、モデルを読み込むために loadCompactModel を使用した場合、loadCompactModelScoreTransform プロパティを MATLAB ワークスペースに復元できません。しかし loadCompactModel は、コード生成用のコンパイル時に、エントリポイント関数内で ScoreTransform プロパティを含めてモデルを読み込むことができます。

    CompactClassificationTree

     

  • コンパクトな回帰モデル オブジェクト

    モデル オブジェクトメモ:

    CompactGeneralizedLinearModel

     

    CompactLinearModel

    fitlm を使用し、RobustWgtFun フィールドに無名関数ハンドルを設定した構造体を 'RobustOpts' に対して指定することにより線形モデルに学習をさせた場合、saveCompactModel を使用してモデルを保存し、loadCompactModel を使用してモデルを読み込むと、loadCompactModelRobust プロパティを MATLAB ワークスペースに復元できません。しかし loadCompactModel は、コード生成用のコンパイル時にエントリポイント関数内でモデルを読み込むことができます。

    CompactRegressionEnsemble

     

    CompactRegressionGP

     

    CompactRegressionSVM

     

    CompactRegressionTree

     

    RegressionLinear

    このモデル オブジェクトは、対応するコンパクトなオブジェクトがない完全なオブジェクトです。saveCompactModel はモデルをそのまま保存し、loadCompactModel は保存されたモデルを返します。

  • 最近傍探索モデル オブジェクト

    モデル オブジェクトメモ:

    ExhaustiveSearcher

    このモデル オブジェクトは、対応するコンパクトなオブジェクトがない完全なオブジェクトです。saveCompactModel はモデルをそのまま保存し、loadCompactModel は保存されたモデルを返します。

    KDTreeSearcher

    このモデル オブジェクトは、対応するコンパクトなオブジェクトがない完全なオブジェクトです。saveCompactModel はモデルをそのまま保存し、loadCompactModel は保存されたモデルを返します。

Mdl はコンパイル時の定数でなければなりません。loadCompactModel を使用して読み込んだ後で変更することはできません。

代替機能

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

拡張機能

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

R2016b で導入