ニューラルネットワークのC++共有ライブラリ化について
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
feedforwardnet関数をしようして機械学習のプログラムを作成したのですが、これによって出力されたnetworkオブジェクトを使用したプログラムをライブラリコンパイラによってC++共有ライブラリに変換することは可能でしょうか。
現在、MATLABで行った機械学習をC++で利用できるようなプログラムを開発しています。
compiler.build.cppSharedLibrary関数を使用してC++共有ライブラリ化をやろうとしたのですが、networkオブジェクトを呼び出す部分でエラーが発生してしまい、うまくライブラリ化することができませんでした。
ご回答のほうをよろしくお願いします。
2 Kommentare
Kojiro Saito
am 1 Okt. 2023
networkオブジェクトを呼び出すのもC++ライブラリに変換可能(MATLAB Compiler SDKが対応している関数)なので、呼び出し方に何か原因がありそうです。
エラーメッセージと、該当部分のコード抜粋を開示いただけますか?
Antworten (1)
Kojiro Saito
am 6 Okt. 2023
2点あります。
(1) matファイルの読み込み
Call_testing2.mの処理の中でmatファイルを読み込む処理がないため、ANNmethodが存在しないというエラーが出てしまいます。load('ANNmethod.mat')を追加してください。
function K = Call_testing2(Data)
load('ANNmethod.mat')
K=ANNmethod(Data); % ANNmethod.mat 機械学習によって出力された.mat機械学習ファイル
end
入力引数は文字列なので、
compiler.build.cppSharedLibrary(Call_testing2)
ではなく
compiler.build.cppSharedLibrary('Call_testing2.m')
となります。
また、処理に使うmatファイルはcompiler.build.cppSharedLibraryを実行する必要がありません。コンパイルするのは、メインとなる関数(.mファイルまたは.mlxファイル)だけです。
compiler.build.cppSharedLibraryが自動的にファイルの依存関係を見て.matファイルなどをコンパイルに取り込んでくれますが、うまく行かない場合はAdditionalFilesのオプションで手動で追加することもできます。
compiler.build.cppSharedLibrary('Call_testing2.m', 'AdditionalFiles', 'ANNmethod.mat')
コマンドを使わず、GUIからもできます。アプリタブにある「ライブラリコンパイラー」をクリックして、タイプを「C++共有ライブラリ」にし、エクスポートする関数で「'Call_testing2.m」をファイル選択します。「パッケージ化」】ボタンを押せば自動的にコンパイルされます。
8 Kommentare
Kojiro Saito
am 6 Nov. 2023
- C++共有ライブラリは64bitのみのライブラリのみ作成できます。
- MATLAB CoderでC++に変換することは可能ですが、loadの出力を変数に代入したりgenFunctionでCコード生成に対応する関数を作成したりなどのステップが必要になります。
ただ、追加の質問は本質問の当初の内容から離れてきているので、新規の質問として別スレッドにしたほうが良いです。
Siehe auch
Kategorien
Mehr zu C 共有ライブラリの統合 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!