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
)
例
ARM プロセッサで実行する事前学習済みのネットワーク用の C++ コードを生成する
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
を使用します。
入力引数
net
— 事前学習済みの深層学習ネットワーク オブジェクト
文字ベクトル | string スカラー
事前学習済みの SeriesNetwork
または DAGNetwork
オブジェクト。
メモ
cnncodegen
は dlnetwork
オブジェクトはサポートしていません。
targetparams
— ライブラリ固有のパラメーター
構造体
ARM Compute Library の固有のパラメーター。次の表に示すフィールドを含む 1
行 1
列の構造体として指定します。
フィールド | 説明 |
---|---|
ArmComputeVersion | ターゲット ハードウェアの ARM Compute Library のバージョン。 |
バージョン履歴
R2017b で導入R2021a: ターゲット ライブラリのサポートの変更
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 コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)