このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
GPU编码器™を使用して,深度学习工具箱™からさまざまな事前学習済みの深層学習ネットワークの予測に対する最適化されたコードを生成できます。生成コードでは,アーキテクチャを使用した深層畳み込みニューラルネットワーク(CNN),層,および入力オブジェクト(SeriesNetwork
(深度学习工具箱)またはDAGNetwork
(深度学习工具箱))で指定したパラメーターが実装されます。コードジェネレーターはコンピュータービジョンおよび機械学習用の手臂®计算库を利用します。手臂Mali GPU ターゲットで深層学習を実行するために、ホスト開発コンピューターでコードを生成します。次に、実行可能プログラムをビルドして実行するために、生成されたコードを ARM ターゲット プラットフォームに移動します。たとえば、HiKey960 は生成されたコードを実行できるターゲット プラットフォームの 1 つです。
深度学习工具。
深度学习工具箱MobileNet-v2网络模型サポートパッケージ。
深度学习库的GPU编码器接口サポートパッケージ。サポートパッケージをインストールするには、MATLAB®の[アドオン]メニューでサポートパッケージを選択します。
コンピューター ビジョンおよび機械学習用の 手臂计算库をターゲットハードウェアにインストールしなければなりません。サポートされているコンパイラおよびライブラリのバージョンの詳細は、前提条件となる製品のインストールを参照してください。
コンパイラおよびライブラリの環境変数。詳細については,環境変数を参照してください。
事前学習済みの MobileNet-v2ネットワークを読み込みます。イメージ分類用の異なる事前学習済みネットワークの読み込みを選択できます。必要なサポート パッケージがインストールされていない場合、ダウンロード用リンクが表示されます。
网= mobilenetv2;
オブジェクト网
にはDAGNetwork
オブジェクトが格納されています。関数analyzeNetwork
(深度学习工具箱)を使用して、ネットワーク アーキテクチャを対話的に可視化して表示し、ネットワークに関するエラーや問題を検出して、ネットワーク層についての詳細情報を表示します。層の情報には、層の活性化と学習可能なパラメーターのサイズ、学習可能なパラメーターの総数、および再帰層の状態パラメーターのサイズが含まれます。
analyzeNetwork(净);
分類するイメージのサイズは,ネットワークの入力サイズと同じでなければなりません。GoogLeNetの場合,imageInputLayer
(深度学习工具箱)のサイズは224 x 224 x 3です。出力classificationLayer
(深度学习工具箱)の类
プロパティには、ネットワークによって学習されたクラスの名前が含まれています。合計 1000個のクラス名のうち 10個をランダムに表示します。
一会= net.Layers . class(结束);numClasses =元素个数(类名);disp(类名(randperm (numClasses 10)))
公鸡,蜂房,肥皂分配器,titi,汽车车轮,guenon,枪口,木耳,七叶石柱
詳細については,深層学習層の一覧(深度学习工具箱)を参照してください。
cnncodegen
を使用したコード生成臂计算库を使ってコードを生成するには,cnncodegen
コマンドのtargetlib
オプションを使用します。cnncodegen
コマンドはSeriesNetwork
またはDAGNetwork
ネットワークオブジェクトのc++コードを生成します。
“arm-compute-mali”
として指定された“targetlib”
をもつcnncodegen
を呼び出します。次に例を示します。
网= googlenet;cnncodegen(净,“targetlib”,“arm-compute-mali”,“batchsize”1);
“arm-compute-mali”
の場合、batchsize
の値は1
でなければなりません。
臂计算库のライブラリ固有のパラメーターを指定できる“targetparams”
の名前と値のペアの引数は,手臂马里GPUをターゲットとする場合,適用されません。
cnncodegen
コマンドは,コード,makefile,cnnbuild_rtw.mk
,およびその他のサポートファイルを生成して,ターゲットハードウェアに生成されたコードをビルドします。コマンドはすべての生成されたファイルをcodegen
フォルダーに配置します。
预测
を呼び出すc++主要関数を作成します。生成されたコードと統合するメインファイルの例については,ARM马里GPUでの深層学習の予測を参照してください。
優先する安全文件副本(SCP)とSecure Shell (SSH)クライアントを使用して,生成されたcodegen
フォルダーとその他のファイルをホスト開発コンピューターから 手臂ハードウェアに移動します。ターゲットで実行可能プログラムをビルドします。
103年DAGネットワークは個の層クラスから成る配列を含むc++クラス(CnnMain
)として生成されます。コードジェネレーターは畳み込み層とバッチ正規化層のレイヤーフュージョン最適化で層の数を削減します。cnn_exec.hpp
ファイルからのクラス宣言のスニペットが表示されます。
このクラスの设置()
メソッドは,ハンドルを設定し,ネットワークオブジェクトの各層にメモリを割り当てます。
预测()
メソッドは,ネットワーク内の103個の層それぞれについて予測を呼び出します。
cnn_exec.cpp
ファイルにはCnnMain
クラスのオブジェクト関数の定義が含まれます。
バイナリファイルは,ネットワーク内の全結合層や畳み込み層などのパラメーターを持つ層に対してエクスポートされます。たとえば,ファイル美国有线电视新闻网
および美国有线电视新闻网
は,ネットワーク内の卷积
層の重みとバイアス パラメーターに対応します。コード ジェネレーターは、これらのバイナリ ファイルをcodegen
フォルダーに配置します。コードジェネレーターはライブラリファイルcnnbuild
をビルドし、生成されたすべてのファイルをcodegen
フォルダーに配置します。
手臂马里GPUのコード生成は,“channel-wise”
として設定されたNumGroups
プロパティまたは2を超える値をもつ2次元のグループ化された畳み込み層でサポートされません。