Main Content

深層学習ネットワーク向けの汎用 C/C++ コードの生成

MATLAB® Coder™ を使用して、既に学習済みのニューラル ネットワークからの予測のための汎用 C または C++ コードを生成できます。生成された C/C++ コードは、いずれのサードパーティ ライブラリにも依存しません。生成されたコードは、入力 SeriesNetwork (Deep Learning Toolbox) または DAGNetwork (Deep Learning Toolbox) ネットワーク オブジェクトで指定されるアーキテクチャ、レイヤー、およびパラメーターを使用してニューラル ネットワークを実装します。コード生成でサポートされているネットワークとレイヤーを参照してください。

次のいずれかの方法を使用してコードを生成します。

  • MATLAB コードからの C/C++ コード生成のための標準 codegen コマンド。

  • MATLAB Coder アプリ。

必要条件

  • Windows® では、関数 codegen を使用した深層学習ネットワークのコード生成には Microsoft® Visual Studio® または MinGW® コンパイラが必要です。

  • MATLAB Coder Interface for Deep Learning Libraries。このサポート パッケージをインストールするには、これを MATLAB の [アドオン] メニューから選択します。

  • Deep Learning Toolbox™。

codegen を使用したコード生成

  1. MATLAB で、以下を行うエントリポイント関数を記述します。

    次に例を示します。

    function out = my_predict(in) %#codegen
    
    % A persistent object mynet is used to load the series network object.
    % At the first call to this function, the persistent object is constructed and
    % setup. When the function is called subsequent times, the same object is reused 
    % to call predict on inputs, thus avoiding reconstructing and reloading the
    % network object.
    
    persistent mynet;
    
    if isempty(mynet)
        mynet = coder.loadDeepLearningNetwork('myNetwork.mat');
    end
    
    % pass in input   
    out = predict(mynet,in,'MiniBatchSize',2); 

  2. 関数 coder.DeepLearningConfig を使用して、汎用 C/C++ コードの生成用に設定された深層学習構成オブジェクト dlconfig を作成します。

    dlconfig = coder.DeepLearningConfig(TargetLibrary='none');

    MEX 用またはスタティックまたはダイナミック リンク ライブラリ用のコード生成構成オブジェクトを作成します。既定では、コード ジェネレーターは汎用 C コードを生成します。汎用 C++ コードを生成するには、コード生成構成オブジェクトで TargetLang パラメーターを 'C++' に設定します。DeepLearningConfig パラメーターを前に作成したオブジェクト dlconfig に設定します。

    cfg = coder.config('lib');
    cfg.TargetLang = 'C++';
    cfg.DeepLearningConfig = dlconfig;
  3. codegen コマンドを実行します。-config オプションを使用して、構成オブジェクトを指定します。-args オプションを使用して、入力型を指定します。

    codegen -config cfg my_predict -args {myInput} -report

    メモ

    コード生成では半精度入力を指定できます。ただし、コード ジェネレーターによって入力が単精度に型キャストされます。Deep Learning Toolbox は、MATLAB でのすべての計算に単精度浮動小数点演算を使用します。

MATLAB Coder アプリを使用したコード生成

  1. 通常の手順に従い、エントリポイント関数の指定および入力型の指定を行います。MATLAB Coder アプリを使用した C コードの生成を参照してください。

  2. [コードの生成] ステップで、以下を実行します。

    • [言語][C] または [C++] のいずれかに設定します。

    • [詳細設定] をクリックします。[深層学習] ペインで、[ターゲット ライブラリ][なし] に設定します。

  3. コードを生成します。

参考

| |

関連するトピック