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
コード ジェネレーターは .cpp とヘッダー ファイルを '/pwd/codegen' フォルダーに生成します。DAG ネットワークは CnnMain と呼ばれる C++ クラスとして生成され、87 層のクラスの配列を含んでいます。コード ジェネレーターは、畳み込み層とバッチ正規化層のレイヤー フュージョン最適化で層の数を減らします。このクラスの 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 (GPU Coder) は ARM Mali GPU プロセッサのみを対象に、コンピューター ビジョンおよび機械学習用の ARM Compute Library を使用して C++ コードと makefile を生成し、それらのスタティック ライブラリをビルドします。
その他すべてのターゲットについては、codegen コマンドを使用します。関数 coder.loadDeepLearningNetwork (GPU Coder) を使用して深層学習モデルを読み込み、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 を使用した深層学習ネットワークのコード生成 (GPU Coder)を参照してください。 |
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 ライブラリを使用した深層学習予測 (GPU Coder)を参照してください。 |
一般オプション | 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)