このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
cnncodegen
ARM Mali GPU プロセッサをターゲットとする深層学習ネットワークのコードの生成
構文
説明
cnncodegen(
は、Mali GPU 用の ARM® Compute Library を使用して、指定されたネットワーク オブジェクトの C++ コードを生成します。net
,'targetlib','arm-compute-mali')
GPU Coder™ 製品と GPU Coder Interface for Deep Learning が必要です。
cnncodegen(
は、追加のコード生成オプションと共に Mali GPU 用の ARM Compute Library を使用して、指定されたネットワーク オブジェクトの C++ コードを生成します。net
,'targetlib','arm-compute-mali',targetparams
)
例
cnncodegen
を使用して ARM Mali グラフィックス プロセッサに展開するための事前学習済みネットワークの C++ コードを生成します。
関数 googlenet
(Deep Learning Toolbox) を使用して事前学習済みの GoogLeNet モデルを取得します。この関数には、Deep Learning Toolbox™ Model for GoogLeNet Network が必要です。このサポート パッケージをインストールしていない場合、関数によってダウンロード用リンクが表示されます。または、https://www.mathworks.com/matlabcentral/fileexchange/64456-deep-learning-toolbox-model-for-googlenet-networkを参照してください。
net = googlenet;
cnncodegen
を使用し、'targetlib'
を 'arm-compute-mali'
に設定してコードを生成します。既定では、コード ジェネレーターは ARM のバージョン '19.05'
をターゲットにします。別のバージョンの Compute Library をターゲットにするには、'ArmComputeVersion'
パラメーターを使用します。
cnncodegen(net,'targetlib','arm-compute-mali'... ,'targetparams',struct('ArmComputeVersion','19.02'));
------------------------------------------------------------------------ Compilation suppressed: generating code only. ------------------------------------------------------------------------ ### Codegen Successfully Generated for arm device
コード ジェネレーターは、'/pwd/codegen'
フォルダーに .cpp
ファイルとヘッダー ファイルを生成します。DAG ネットワークは、87 個の層クラスから成る配列を含む CnnMain
という名前の C++ クラスとして生成されます。コード ジェネレーターは畳み込み層とバッチ正規化層のレイヤー フュージョン最適化で層の数を削減します。このクラスの setup()
メソッドは、ハンドルを設定し、各層オブジェクトにリソースを割り当てます。predict()
メソッドは、ネットワーク内の 87 個の層それぞれについて予測を呼び出します。cleanup()
メソッドは、各層オブジェクトに割り当てられたすべてのメモリとシステムのリソースを解放します。ネットワークの畳み込み層のバイナリ重み (cnn_**_w
) およびバイアス ファイル (cnn_**_b
) はすべて、codegen
フォルダーに保存されます。
ライブラリをビルドするには、生成されたコードを ARM ターゲット プラットフォームに移動して、生成された makefile cnnbuild_rtw.mk
を使用します。
入力引数
事前学習済みの SeriesNetwork
または DAGNetwork
オブジェクト。
メモ
cnncodegen
は dlnetwork
オブジェクトをサポートしません。
ARM Compute Library 固有のパラメーター。次の表で説明するフィールドを含む 1
行 1
列の構造体として指定します。
フィールド | 説明 |
---|---|
ArmComputeVersion | ターゲット ハードウェア上の ARM Compute Library のバージョン。 |
バージョン履歴
R2017b で導入R2021b 以降、関数 cnncodegen
は、コンピューター ビジョンおよび機械学習用の ARM Compute Library を使用して、ARM Mali GPU プロセッサ専用のスタティック ライブラリをビルドするための C++ コードと makefile を生成します。
他のすべてのターゲットには、codegen
コマンドを使用します。関数 coder.loadDeepLearningNetwork
を使用して深層学習モデルを読み込み、predict
(Deep Learning Toolbox) を呼び出して応答を予測するエントリポイント関数を MATLAB® で記述します。次に例を示します。
function out = googlenet_predict(in) %#codegen persistent mynet; if isempty(mynet) mynet = coder.loadDeepLearningNetwork('googlenet'); end % pass in input out = predict(mynet,in);
cnncodegen
の代表的な使用法と、代わりに codegen
を使用するためのコードの更新方法を、次の表に示します。
ターゲット ワークフロー | 非推奨 | 推奨 |
---|---|---|
|
cnncodegen(net,'targetlib'... ,'arm-compute','targetparams' ... ,struct('ArmComputeVersion'... ,'19.02','ArmArchitecture'... ,'armv8')) ARM Compute Library でサポートされている他のバージョンは、 ARM アーキテクチャには、 | スタティック ライブラリを生成するための cfg = coder.config('lib'); cfg.TargetLang = 'C++';
dlcfg = coder.DeepLearningConfig ... ('arm-compute'); dlcfg.ArmArchitecture = 'armv8'; dlcfg.ArmComputeVersion = '19.02'; cfg.DeepLearningConfig = dlcfg; 関数 arg = {ones(224,224,3,'single')}; codegen -args arg ... -config cfg googlenet_predict 詳細については、ARM Compute Library を使用した、深層学習ネットワークのためのコード生成を参照してください。 |
CUDA® Deep Neural Network library (cuDNN) を使用する NVIDIA® GPU |
cnncodegen(net,'targetlib'... ,'cudnn','ComputeCapability'... ,'7.0','targetparams' ... ,struct('AutoTuning',true ... ,'DataType','INT8'... ,'CalibrationResultFile' ... 'myInt8Cal.mat')) 自動調整の機能により、cuDNN ライブラリで最速の畳み込みアルゴリズムを見つけられるようになります。
| スタティック ライブラリを生成するための cfg = coder.gpuConfig('lib'); cfg.TargetLang = 'C++'; コード生成に最低限の Compute Capability を設定するには、GPU コード構成オブジェクトの cfg.GpuConfig.ComputeCapability = '7.0';
dlcfg = coder.DeepLearningConfig('cudnn'); dlcfg.AutoTuning = true; dlcfg.DataType = 'int8'; dlcfg.CalibrationResultFile = 'myInt8Cal.mat'; cfg.DeepLearningConfig = dlcfg; 関数 arg = {ones(224,224,3,'single')}; codegen -args arg ... -config cfg googlenet_predict 詳細については、cuDNN を使用した深層学習ネットワークのコード生成を参照してください。 |
Intel® CPU プロセッサ | Intel CPU 用の Intel Math Kernel Library for Deep Neural Networks (MKL-DNN) を使用するには、 cnncodegen(net,'targetlib'... ,'mkldnn'); | スタティック ライブラリを生成するための cfg = coder.config('lib'); cfg.TargetLang = 'C++';
dlcfg = coder.DeepLearningConfig... ('mkldnn'); cfg.DeepLearningConfig = dlcfg; 関数 arg = {ones(224,224,3,'single')}; codegen -args arg ... -config cfg googlenet_predict 詳細については、MKL-DNN を使用した、深層学習ネットワークのためのコード生成を参照してください。 |
高性能な深層学習用推論オプティマイザーおよびランタイム ライブラリである NVIDIA TensorRT™ を使用する NVIDIA GPU |
cnncodegen(net,'targetlib'... ,'tensorrt','ComputeCapability'... ,'7.0','targetparams' ... ,struct('DataType','INT8' ... 'DataPath','image_dataset'... ,'NumCalibrationBatches',50)) | スタティック ライブラリを生成するための cfg = coder.gpuConfig('lib'); cfg.TargetLang = 'C++'; コード生成に最低限の Compute Capability を設定するには、GPU コード構成オブジェクトの cfg.GpuConfig.ComputeCapability = '7.0';
dlcfg = coder.DeepLearningConfig... ('cudnn'); dlcfg.DataType = 'int8'; dlcfg.DataPath = 'image_dataset'; dlcfg.NumCalibrationBatches = 50; cfg.DeepLearningConfig = dlcfg; 関数 arg = {ones(224,224,3,'single')}; codegen -args arg ... -config cfg googlenet_predict 詳細については、NVIDIA TensorRT ライブラリを使用した深層学習予測を参照してください。 |
一般オプション | makefile の生成やビルドを行わずにコードを生成します。次に例を示します。 cnncodegen(net,'targetlib' ... ,'mkldnn','codegenonly',1); | make コマンドを呼び出したりオブジェクト コードをビルドしたりせずにソース コードを生成するには、 cfg = coder.codeConfig('lib');
cfg.GenCodeOnly = true;
|
コンパイルの対象とする NVIDIA GPU Compute Capability の指定。引数は cnncodegen(net,'targetlib'... ,'cudnn','ComputeCapability','7.0'); | コード生成に最低限の Compute Capability を設定するには、GPU コード構成オブジェクトの cfg = coder.gpuConfig('lib'); cfg.GpuConfig.ComputeCapability = '7.0'; |
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)