回帰学習モデルのApp Designerへの実装について

回帰学習アプリ(Statistics and Machine Learning Toolbox)で作った統計モデルをApp Designerで使用したいです。
回帰学習器アプリでエクスポートしたモデルをMATLAB Functionブロックと同様にloadLearnerForCoderで呼び出して実行しようとしましたがモデルが見つかりませんと言うエラーが出てしまいます。
使用している回帰モデル:線形回帰モデル、ガウス過程回帰モデル

 採用された回答

Kojiro Saito
Kojiro Saito 2024 年 1 月 9 日

1 投票

loadLearnerForCoderはC/C++コード生成を行うためのモデルの読み込みですが、今回はApp Designerで使用するためなのでloadで十分です。
回帰学習器アプリでエクスポートしたモデルの変数(例:trainedModel)をワークスペースで右クリック「名前を付けて保存」からmatファイル(ファイル名の例:model.mat)として保存します。それをApp Designerのコールバックのどこかで下記のようにloadで読み込めばOKです。
load('model.mat')

6 件のコメント

hiroshiii
hiroshiii 2024 年 1 月 10 日
早々にご回答いただきありがとうございました。
load('model.mat')の呼び出しも試したのですが同様に、
「ファイルまたはディレクトリ'model.mat'が見つかりません。」
と言うエラーが出てしまいます。よろしくお願いいたします。
Kojiro Saito
Kojiro Saito 2024 年 1 月 10 日
matファイルがMATLABの現在のフォルダーやパスが通っているところにないのが原因です。
App Designerの.mlappのファイルと同じフォルダーにmatファイルを置いてみてください。
hiroshiii
hiroshiii 2024 年 1 月 10 日
早々に誠にありがとうございます。読み込み問題、解決できました。
ただ、以下の様に計算値が返って来ない状況です。よろしくお願いいたします。
S = load('model.mat');
<トライ1>
Y = predict(S, X); % Xは入力する2変数(200*2 double)
エラーメッセージ:
モデルの入力数と出力数はデータの入力数と出力数と一致しなければなりません
<トライ2>
Y = S.predictFcn(X);
エラーメッセージ:
フィールド名 ”predictFcn"が認識されません。
Kojiro Saito
Kojiro Saito 2024 年 1 月 10 日
loadだけを実行するとワークスペース変数がそのまま読み込まれ、trainedModeltrainedModelとしてワークスペースに格納されます。
出力変数を割り当てると、その中のフィールド値として格納されるので、
S = load('model.mat');
Y = predict(S.trainedModel, X);
とすれば実行できると思います。
hiroshiii
hiroshiii 2024 年 1 月 10 日
フィールド名"trainedModel"が認識されません。と言うエラーが出てしまいます。
loadしたModel.matの構造は1*1 structで、
その中はcompactStruct(1*1 struct)となっています。
Kojiro Saito
Kojiro Saito 2024 年 1 月 10 日
モデルをcompactStructという名前で保存しているようなので、
S = load('model.mat');
Y = predict(S.compactStruct, X);
でどうでしょうか?

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!