このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
cnncodegen
ARM Mali GPU プロセッサをターゲットとする深層学習ネットワークのコードの生成
構文
説明
cnncodegen(
は、Mali GPU 用の ARM® Compute Library を使用して、指定されたネットワーク オブジェクトの C++ コードを生成します。net
,'targetlib','arm-compute-mali')
GPU Coder™ 製品と GPU Coder Interface for Deep Learning Libraries が必要です。
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
コード ジェネレーターは、'/pwd/codegen'
フォルダーに .cpp
ファイルとヘッダー ファイルを生成します。DAG ネットワークは、87 個の層クラスから成る配列を含む CnnMain
という名前の C++ クラスとして生成されます。コード ジェネレーターは畳み込み層とバッチ正規化層のレイヤー フュージョン最適化で層の数を削減します。このクラスの 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
は、コンピューター ビジョンおよび機械学習用の 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 コマンド
次の 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)