このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
MATLAB®编码器™を使用して,英特尔®プロセッサを使用する組み込みプラットフォームをターゲットとする,既に学習済みの畳み込みニューラルネットワーク(CNN)からの予測のためのコードを生成できます。コードジェネレーターは英特尔数学内核库深层神经网络(MKL-DNN)を利用します。生成されたコードは,入力SeriesNetwork
(深度学习工具箱)またはDAGNetwork
(深度学习工具箱)ネットワークオブジェクトで指定されるアーキテクチャ,レイヤーおよびパラメーターを使用してCNNを実装します。
次のいずれかの方法を使用してコードを生成します。
MATLABコードからのC / c++コード生成のための標準codegen
コマンド。
MATLAB编码器アプリ。
窗户®では,関数codegen
を使用した深層学習ネットワークのコード生成には微软®Visual Studio®2015年以降が必要です。
深度学习库的MATLAB编码器接口。このサポートパッケージをインストールするには,これをMATLABの[アドオン]メニューから選択します。
用于深度神经网络的英特尔数学内核库(MKL-DNN)。
深度学习工具箱。
コンパイラおよびライブラリの環境変数。詳細については,MATLAB编码器を使用した深層学習の前提条件を参照してください。
codegen
を使用したコード生成MATLABで,以下を行うエントリポイント関数を記述します。
関数coder.loadDeepLearningNetwork
を使用してCNNネットワークオブジェクトを構築し設定する。詳細については,コード生成のための事前学習済みネットワークの読み込みを参照してください。
エントリポイント関数の入力におけるネットワークの预测
(深度学习工具箱)メソッドを呼び出す。
预测
メソッドでMiniBatchSize
を指定して,複数の入力イメージ,または観測値の予測のメモリ使用を管理する。
以下に例を示します。
函数= googlenet_predict(中)% # codegen%持久化对象mynet用于加载系列网络对象。在第一次调用这个函数时,将构造持久对象%设置。当后续调用该函数时,将重用相同的对象%调用预测输入,从而避免重新构造和重新加载%网络对象。持续的mynet;如果isempty(mynet) mynet = code . loaddeeplearningnetwork (“googlenet”);结束输入通过率=预测(mynet,,“MiniBatchSize”2);
墨西哥人用またはスタティックまたはダイナミックリンクライブラリ用のコード生成構成オブジェクトを作成します。MKL-DNNのコード生成パラメーターを指定するには,DeepLearningConfig
プロパティを编码器。DeepLearningConfig
をを用して作物成し编码器。MklDNNConfig
オブジェクトに設定します。
cfg = coder.config (“自由”);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“mkldnn”);
codegen
コマンドを実行します。配置
オプションを使用して,構成オブジェクトを指定します。arg游戏
オプションを使用して,入力型を指定します。入力サイズは16
の異なるイメージまたは観測値をもつGoogLeNetネットワークの入力層サイズに対応します。
codegen配置cfggooglenet_predictarg游戏{(224224 3 16)的}报告
メモ
コード生成では半精度入力を指定できます。ただし,コードジェネレーターによって入力が単精度に型キャストされます。深度学习工具箱は,MATLABでのすべての計算に単精度浮動小数点演算を使用します。
ネットワークは,層のクラスの配列を含むc++クラスとして生成されます。このクラスの设置()
メソッドは,ハンドルを設定し,ネットワークオブジェクトの各層にメモリを割り当てます。预测()
メソッドは,ネットワークの各層の予測を呼び出します。コードジェネレーターは関数googlenet_predict ()
をMATLABエントリポイント関数に対応するgooglenet_predict.cpp
に作成します。この関数はネットワーク用に静的オブジェクトを構築し,设置メソッドおよび预测メソッドを起動します。
バイナリファイルは,ネットワークの全結合層および畳み込み層などの層に対してエクスポートされます。たとえば,ファイルcnn_googlenet_conv * _w
およびcnn_googlenet_conv * _b
は,ネットワークの畳み込み層の重みパラメーターおよびバイアスパラメーターに対応します。
通常の手順に従い,エントリポイント関数の指定および入力型の指定を行います。MATLAB编码器アプリを使用したCコードの生成を参照してください。
[コードの生成)ステップで,以下を実行。
[言語]を(c++)に設定します。
[詳細設定]をクリックします。[深層学習]ペインで,[ターゲットライブラリ]を[mkl-dnn]
に設定します。
コードを生成します。
codegen
|编码器。DeepLearningConfig
|编码器。MklDNNConfig
|coder.loadDeepLearningNetwork