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。このサポート パッケージをインストールするには、これを 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. コードを生成します。

参考

| |

関連するトピック