このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
コード生成における 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
と表示されます。MATLAB では、
dlarray
によってラベルの順序'SCBTU'
が強制的に適用されます。この適用により、演算であいまいなセマンティクスが回避され、暗黙的に入力間でラベルが一致します。この動作は、MEX コードの生成時に模倣されます。ただし、スタティック ライブラリ、ダイナミック ライブラリ、実行可能ファイルなどのスタンドアロン コード生成の場合、データ形式はdlarray
オブジェクトのfmt
引数の指定に従います。そのため、エントリポイント関数の入力または出力がdlarray
オブジェクトで、そのラベルの順序が'SCBTU'
でない場合、データ レイアウトは MATLAB 環境とスタンドアロン コードで異なります。たとえば、
dlarray
オブジェクトを出力とする関数foo
について考えます。function dlA = foo() rng default dlA = dlarray(rand(5,4), 'BC'); end
MATLAB では、
dlA
は4(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
スタンドアロン コード生成では、
dlA
は5(B)
行4(C)
列です。コード生成では、
dlnetwork
オブジェクトのpredict
メソッドのdlarray
入力はsingle
データ型でなければなりません。
参考
オブジェクト
関連する例
詳細
- Code Generation for dlarray
- カスタム学習ループ、損失関数、およびネットワークの定義 (Deep Learning Toolbox)
- カスタム学習ループを使用したネットワークの学習 (Deep Learning Toolbox)
- dlnetwork オブジェクトを使用した予測の実行 (Deep Learning Toolbox)