Simulinkで機械学習モデルを使いたい
はじめに
Simulinkでガウス過程回帰モデルを用いたいと思ったのですが,少しハマったのでメモ.
やりたいこと
オフラインで,fitrgpコマンドで作成したガウス過程回帰モデルを作成した.
このモデルをMATLAB function ブロック内で用いて,変数Yを推定したい.
解決方法
1) XからYを予測するガウス過程回帰モデルを作成したら,saveCompactModel
でモデルを保存する.
gprMdl = fitrgp(X, Y);
saveCompactModel(gprMdl, 'GPRModel');
2) (Simulink内 MATLAB Function blockにおいて)loadCompactModelでモデルを呼び出してpredict
でYを計算する.
gprMdl = loadCompactModel('GPRModel');
Y = predict(gprMdl, X_online);
公式のページは以下を参照.
機械学習モデルの予測をコマンド ラインで行うコードの生成
ハマった方法
普通にmat ファイル形式でsave(gprMdl, 'GPRModel')とやると,Simulinkでは扱えない形式になってしまう.
具体的には,以下のエラーが出てくる.
調整不可プロパティをもつクラスは外部関数からの出力としてサポートされません
なんのことやら,という感じ.
データストアメモリを用いてもグローバル変数にしようとしても,だめだった.
サポートされているデータ型しか受け付けないらしい.
以前Simulinkで困ったときに,コード生成に対応しているかどうかが重要だったような・・・という記憶を頼りに調べたら上のサイトを見つけることができ,無事に解決したが,小一時間程度要してしまった.
Simulinkを用いるときにはコード生成に対応しているかどうかをチェックする癖をつけないと,また同じような問題にトラップされそう・・・
今後も気をつけよう(自戒).
Author And Source
この問題について(Simulinkで機械学習モデルを使いたい), 我々は、より多くの情報をここで見つけました https://qiita.com/stktu_KU/items/51c144401ad8a284e1b1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .