Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コード生成における dlarray の制限事項

推奨される使用方法

コード生成用に、関数 dlarray (Deep Learning Toolbox) を使用して深層学習配列を作成します。たとえば、mynet.mat MAT ファイルに事前学習済みの dlnetwork (Deep Learning Toolbox) ネットワーク オブジェクトがあるとします。このネットワークの応答を予測するには、次のコードに示すようなエントリポイント関数を MATLAB® で作成します。

function a = foo(in)
dlIn = dlarray(in, 'SSC');

persistent dlnet;
if isempty(dlnet)
    dlnet = coder.loadDeepLearningNetwork('mynet.mat');
end

dlA = predict(dlnet, dlIn);

a = extractdata(dlA);

end

制限

深層学習配列のコード生成には次の制限があります。

  • dlarray オブジェクトのデータ形式引数はコンパイル時の定数でなければなりません。次に例を示します。

    function out = foo()
    
    dlA = dlarray(ones(5,4),'SSC'); %fmt 'SSC' is constant
     .
     .
     .
    end

  • dlarray オブジェクトへのデータ入力は固定サイズでなければなりません。たとえば、次の dlarray dlA は、A が可変サイズであるためサポートされません。

    function dlA = foo()
    
    A = ones(5,4);
    coder.varsize('A') %'A' is variable sized.
    
    dlA = dlarray(A, 'SSC'); % Error: not supported.
    
    end
    

  • コード生成では、上限サイズと可変次元を指定して関数 coder.typeof を使用した dlarray 型オブジェクトの作成をサポートしていません。次に例を示します。

    function dlA = foo()
    
    A = dlarray(ones(5,4),'SC');
    A_type = coder.typeof(A,[5 10],[1 0]); % Error: not supported.
    
    end
    

    コード生成では、サイズ引数を指定しない coder.typeof の使用がサポートされます。次に例を示します。

    A = dlarray(ones(5,4),'SC');
    A_type = coder.typeof(A);
    

  • コード生成レポートには、dlarray オブジェクトのサイズは表示されません。サイズは常に 1x1 と表示されます。

    Screen shot of sample report generator showing dlarray size as 1-by-1

  • MATLAB では、dlarray によってラベルの順序 'SCBTU' が強制的に適用されます。この適用により、演算であいまいなセマンティクスが回避され、暗黙的に入力間でラベルが一致します。この動作は、MEX コードの生成時に模倣されます。ただし、スタティック ライブラリ、ダイナミック ライブラリ、実行可能ファイルなどのスタンドアロン コード生成の場合、データ形式は dlarray オブジェクトの fmt 引数の指定に従います。そのため、エントリポイント関数の入力または出力が dlarray オブジェクトで、そのラベルの順序が 'SCBTU' でない場合、データ レイアウトは MATLAB 環境とスタンドアロン コードで異なります。

    たとえば、dlarray オブジェクトを出力とする関数 foo について考えます。

    function dlA = foo()
    rng default
    dlA = dlarray(rand(5,4), 'BC');
     
    end
    

    MATLAB では、dlA4(C)5(B) 列です。

    dlA = 
    
      4(C) × 5(B) dlarray
    
        0.8147    0.9058    0.1270    0.9134    0.6324
        0.0975    0.2785    0.5469    0.9575    0.9649
        0.1576    0.9706    0.9572    0.4854    0.8003
        0.1419    0.4218    0.9157    0.7922    0.9595
    

    スタンドアロン コード生成では、dlA5(B)4(C) 列です。

  • コード生成では、dlnetwork オブジェクトの predict メソッドの dlarray 入力は single データ型でなければなりません。

参考

オブジェクト

関連する例

詳細