このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
activations
深層学習ネットワーク層の活性化の計算
構文
説明
1 つの CPU または 1 つの GPU で深層学習ネットワーク層の活性化を計算できます。GPU を使用するには Parallel Computing Toolbox™ とサポートされている GPU デバイスが必要です。サポートされているデバイスについては、リリース別の GPU サポート (Parallel Computing Toolbox)を参照してください。名前と値のペアの引数 ExecutionEnvironment
を使用してハードウェア要件を指定します。
は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して、ネットワーク活性化を返します。たとえば、act
= activations(___,Name,Value
)'OutputAs','rows'
は、活性化出力形式を 'rows'
に指定します。名前と値のペアの引数は、他のすべての入力引数の後で指定します。
例
SqueezeNet を使用した特徴抽出
この例では、事前学習済みの畳み込みニューラル ネットワークから学習済みのイメージの特徴を抽出し、これらの特徴を使用してイメージ分類器に学習させる方法を説明します。特徴抽出は、事前学習済みの深いネットワークの表現能力を活用できる最も簡単で時間のかからない方法です。たとえば、抽出した特徴に対して fitcecoc
(Statistics and Machine Learning Toolbox™) を使用してサポート ベクター マシン (SVM) に学習させることができます。特徴抽出が必要とするものはデータを一巡する 1 つのパスのみであるため、ネットワークの学習を加速するための GPU がない場合、これは適切な開始点となります。
データの読み込み
サンプル イメージを解凍してイメージ データストアとして読み込みます。imageDatastore
は、フォルダー名に基づいてイメージに自動的にラベルを付け、データを ImageDatastore
オブジェクトとして格納します。イメージ データストアを使用すると、メモリに収まらないデータを含む大きなイメージ データを格納できます。データを 70% の学習データと 30% のテスト データに分割します。
unzip('MerchData.zip'); imds = imageDatastore('MerchData', ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames'); [imdsTrain,imdsTest] = splitEachLabel(imds,0.7,'randomized');
このとき、この非常に小さなデータセットには、55 個の学習イメージと 20 個の検証イメージが格納されています。いくつかのサンプル イメージを表示します。
numImagesTrain = numel(imdsTrain.Labels);
idx = randperm(numImagesTrain,16);
I = imtile(imds, 'Frames', idx);
figure
imshow(I)
事前学習済みのネットワークの読み込み
事前学習済みの SqueezeNet ネットワークを読み込みます。SqueezeNet は、100 万枚を超えるイメージについて学習済みであり、イメージを 1,000 個のオブジェクト カテゴリ (キーボード、マウス、鉛筆、多くの動物など) に分類できます。結果として、このモデルは広範囲のイメージに対する豊富な特徴表現を学習しています。
net = squeezenet;
ネットワーク アーキテクチャを解析します。
analyzeNetwork(net)
最初の層であるイメージ入力層には、サイズが 227 x 227 x 3 の入力イメージが必要です。ここで、3 はカラー チャネルの数です。
inputSize = net.Layers(1).InputSize
inputSize = 1×3
227 227 3
イメージの特徴の抽出
ネットワークは、入力イメージの階層表現を構築します。深い層には、それ以前の層の低レベルの特徴を使用して構築された、より高レベルの特徴が含まれます。学習イメージとテスト イメージの特徴表現を取得するには、グローバル平均プーリング層 'pool10'
で activations
を使用します。イメージの低レベルの表現を取得するには、ネットワークの初期の層を使用します。
ネットワークにはサイズが 227 x 227 x 3 の入力イメージが必要ですが、イメージ データストアにあるイメージのサイズは異なります。学習およびテスト イメージのサイズをネットワークへの入力前に自動的に変更するには、拡張イメージ データストアを作成して、目的のイメージ サイズを指定し、これらのデータストアを activations
の入力引数として使用します。
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain); augimdsTest = augmentedImageDatastore(inputSize(1:2),imdsTest); layer = 'pool10'; featuresTrain = activations(net,augimdsTrain,layer,'OutputAs','rows'); featuresTest = activations(net,augimdsTest,layer,'OutputAs','rows');
学習データおよびテスト データからクラス ラベルを抽出します。
YTrain = imdsTrain.Labels; YTest = imdsTest.Labels;
イメージ分類器のあてはめ
学習イメージから抽出された特徴を予測子変数として使用し、fitcecoc
(Statistics and Machine Learning Toolbox) を使用してマルチクラス サポート ベクター マシン (SVM) をあてはめます。
mdl = fitcecoc(featuresTrain,YTrain);
テスト イメージの分類
学習済みの SVM モデルとテスト イメージから抽出された特徴を使用して、テスト イメージを分類します。
YPred = predict(mdl,featuresTest);
4 個のサンプル テスト イメージと、その予測ラベルを表示します。
idx = [1 5 10 15]; figure for i = 1:numel(idx) subplot(2,2,i) I = readimage(imdsTest,idx(i)); label = YPred(idx(i)); imshow(I) title(label) end
テスト セットに対する分類精度を計算します。精度とは、ネットワークによって予測が正しく行われるラベルの割合です。
accuracy = mean(YPred == YTest)
accuracy = 1
この SVM は高い精度を示しています。特徴抽出を使用しても十分な精度が得られない場合、代わりに転移学習を試してください。
入力引数
net
— 学習済みネットワーク
SeriesNetwork
オブジェクト | DAGNetwork
オブジェクト
学習済みネットワーク。SeriesNetwork
または DAGNetwork
オブジェクトとして指定します。事前学習済みのネットワークをインポートする (たとえば、関数 googlenet
を使用する)、または trainNetwork
を使用して独自のネットワークに学習させることによって、学習済みネットワークを取得できます。
imds
— イメージ データストア
ImageDatastore
オブジェクト
イメージ データストア。ImageDatastore
オブジェクトとして指定します。
ImageDatastore
を使用すると、事前取得を使用して JPG または PNG イメージ ファイルのバッチ読み取りを行うことができます。イメージの読み取りにカスタム関数を使用する場合、ImageDatastore
は事前取得を行いません。
ヒント
イメージのサイズ変更を含む深層学習用のイメージの前処理を効率的に行うには、augmentedImageDatastore
を使用します。
imageDatastore
の readFcn
オプションは通常、速度が大幅に低下するため、前処理またはサイズ変更に使用しないでください。
ds
— データストア
データストア
メモリ外のデータおよび前処理用のデータストア。データストアは、table または cell 配列でデータを返さなければなりません。データストア出力の形式は、ネットワーク アーキテクチャによって異なります。
ネットワーク アーキテクチャ | データストア出力 | 出力の例 |
---|---|---|
単一入力 | table または cell 配列。最初の列は予測子を指定します。 table の要素は、スカラー、行ベクトルであるか、数値配列が格納された 1 行 1 列の cell 配列でなければなりません。 カスタム データストアは table を出力しなければなりません。 | data = read(ds) data = 4×1 table Predictors __________________ {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double} |
data = read(ds) data = 4×1 cell array {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double} | ||
複数入力 | 少なくとも 最初の 入力の順序は、ネットワークの | data = read(ds) data = 4×2 cell array {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} |
予測子の形式は、データのタイプによって異なります。
データ | 予測子の形式 |
---|---|
2 次元イメージ | h x w x c の数値配列。ここで、h、w、および c は、それぞれイメージの高さ、幅、およびチャネル数です。 |
3 次元イメージ | h x w x d x c の数値配列。ここで、h、w、d、および c は、それぞれイメージの高さ、幅、深さ、およびチャネル数です。 |
ベクトル シーケンス | c 行 s 列の行列。ここで、c はシーケンスの特徴の数、s はシーケンス長です。 |
1 次元イメージ シーケンス | h x c x s の配列。ここで、h および c はそれぞれイメージの高さおよびチャネル数に対応します。s はシーケンス長です。 ミニバッチ内の各シーケンスは、同じシーケンス長でなければなりません。 |
2 次元イメージ シーケンス | h x w x c x s の配列。ここで、h、w、および c はそれぞれイメージの高さ、幅、およびチャネル数に対応します。s はシーケンス長です。 ミニバッチ内の各シーケンスは、同じシーケンス長でなければなりません。 |
3 次元イメージ シーケンス | h x w x d x c x s の配列。ここで、h、w、d、および c は、それぞれイメージの高さ、幅、深さ、およびチャネル数に対応します。s はシーケンス長です。 ミニバッチ内の各シーケンスは、同じシーケンス長でなければなりません。 |
特徴 | c 行 1 列の列ベクトル。c は特徴の数です。 |
詳細については、深層学習用のデータストアを参照してください。
X
— イメージ データまたは特徴データ
数値配列
イメージ データまたは特徴データ。数値配列として指定します。配列のサイズは入力のタイプによって以下のように異なります。
入力 | 説明 |
---|---|
2 次元イメージ | h x w x c x N の数値配列。ここで、h、w、および c は、それぞれイメージの高さ、幅、およびチャネル数です。N はイメージの数です。 |
3 次元イメージ | h x w x d x c x N の数値配列。ここで、h、w、d、および c は、それぞれイメージの高さ、幅、深さ、およびチャネル数です。N はイメージの数です。 |
特徴 | N 行 numFeatures 列の数値配列。ここで、N は観測値の数、numFeatures は入力データの特徴の数です。 |
配列に NaN
が含まれる場合、ネットワーク全体に伝播されます。
複数の入力があるネットワークの場合、複数の配列 X1
、…、XN
を指定できます。ここで、N
はネットワーク入力の数であり、入力 Xi
はネットワーク入力 net.InputNames(i)
に対応します。
イメージ入力の場合、'OutputAs'
オプションが 'channels'
の場合、入力データ X
のイメージは、ネットワークのイメージ入力層の入力サイズより大きくすることができます。その他の出力形式では、X
のイメージのサイズは、ネットワークのイメージ入力層の入力サイズと同じでなければなりません。
sequences
— シーケンス データまたは時系列データ
数値配列の cell 配列 | 数値配列 | データストア
シーケンス データまたは時系列データ。数値配列の N 行 1 列の cell 配列、1 つのシーケンスを表す数値配列、またはデータストアとして指定します。ここで、N は観測値の数です。
cell 配列入力または数値配列入力の場合、シーケンスが含まれる数値配列の次元は、データのタイプによって異なります。
入力 | 説明 |
---|---|
ベクトル シーケンス | c 行 s 列の行列。ここで、c はシーケンスの特徴の数、s はシーケンス長です。 |
1 次元イメージ シーケンス | h x c x s の配列。ここで、h および c はそれぞれイメージの高さおよびチャネル数に対応します。s はシーケンス長です。 |
2 次元イメージ シーケンス | h x w x c x s の配列。ここで、h、w、および c は、それぞれイメージの高さ、幅、およびチャネル数に対応します。s はシーケンス長です。 |
3 次元イメージ シーケンス | h x w x d x c x s。ここで、h、w、d、および c は、それぞれ 3 次元イメージの高さ、幅、深さ、およびチャネル数に対応します。s はシーケンス長です。 |
データストア入力の場合、データストアはシーケンスの cell 配列、または最初の列にシーケンスが含まれる table としてデータを返さなければなりません。シーケンス データの次元は、上記の table に対応していなければなりません。
tbl
— イメージ データまたは特徴データの table
table
イメージ データまたは特徴データの table。table の各行は観測値に対応します。
table の列での予測子の配置は、入力データのタイプによって異なります。
入力 | 予測子 |
---|---|
イメージ データ |
単一列で予測子を指定します。 |
特徴データ | 数値スカラー。 table の最初の |
この引数は、単一の入力のみがあるネットワークをサポートします。
データ型: table
layer
— 活性化の抽出元の層
数値インデックス | 文字ベクトル
活性化の抽出元の層。数値インデックスまたは文字ベクトルとして指定します。
SeriesNetwork
オブジェクトの活性化を計算するには、層の数値インデックスを使用するか、層の名前に対応する文字ベクトルとして層を指定します。
DAGNetwork
オブジェクトの活性化を計算するには、層の名前に対応する文字ベクトルとして層を指定します。層に複数の出力がある場合、層と出力を、層の名前、その後に文字 "/"、層出力の名前と続けて指定します。つまり、layer
は 'layerName/outputName'
の形式を取ります。
例: 3
例: 'conv1'
例: 'mpool/out'
名前と値の引数
例: activations(net,X,layer,'OutputAs','rows')
オプションの引数 Name,Value
のコンマ区切りペアを指定します。Name
は引数名で、Value
は対応する値です。Name
は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値のペアの引数を、任意の順番で指定できます。
OutputAs
— 出力活性化の形式
'channels'
(既定値) | 'rows'
| 'columns'
MiniBatchSize
— ミニバッチのサイズ
128 (既定値) | 正の整数
予測に使用するミニバッチのサイズ。正の整数として指定します。ミニバッチのサイズが大きくなるとより多くのメモリが必要になりますが、予測時間が短縮される可能性があります。
例: 'MiniBatchSize',256
SequenceLength
— 入力シーケンスのパディング、切り捨て、または分割を行うオプション
'longest'
(既定値) | 'shortest'
| 正の整数
入力シーケンスのパディング、切り捨て、または分割を行うオプション。次のいずれかに指定します。
'longest'
— 各ミニバッチで、最長のシーケンスと同じ長さになるようにシーケンスのパディングを行います。このオプションを使用するとデータは破棄されませんが、パディングによってネットワークにノイズが生じることがあります。'shortest'
— 各ミニバッチで、最短のシーケンスと同じ長さになるようにシーケンスの切り捨てを行います。このオプションを使用するとパディングは追加されませんが、データが破棄されます。正の整数 — 各ミニバッチで、ミニバッチで最長のシーケンスより大きい、指定長の最も近い倍数になるようにシーケンスのパディングを行った後、それらのシーケンスを指定長のより小さなシーケンスに分割します。分割が発生すると、追加のミニバッチが作成されます。シーケンス全体がメモリに収まらない場合は、このオプションを使用します。または、
'MiniBatchSize'
オプションをより小さい値に設定して、ミニバッチごとのシーケンス数を減らしてみます。
入力シーケンスのパディング、切り捨て、および分割の効果の詳細は、シーケンスのパディング、切り捨て、および分割を参照してください。
例: 'SequenceLength','shortest'
SequencePaddingValue
— 入力シーケンスをパディングする値
0 (既定値) | スカラー
入力シーケンスをパディングする値。スカラーとして指定します。このオプションは、SequenceLength
が 'longest'
または正の整数の場合にのみ有効です。ネットワーク全体にエラーが伝播される可能性があるため、NaN
でシーケンスをパディングしないでください。
例: 'SequencePaddingValue',-1
SequencePaddingDirection
— パディングまたは切り捨ての方向
'right'
(既定値) | 'left'
パディングまたは切り捨ての方向。次のいずれかに指定します。
'right'
— シーケンスの右側に対してパディングまたは切り捨てを行います。シーケンスは同じタイム ステップで始まり、シーケンスの末尾に対して切り捨てまたはパディングの追加が行われます。'left'
— シーケンスの左側に対してパディングまたは切り捨てを行います。シーケンスが同じタイム ステップで終わるように、シーケンスの先頭に対して切り捨てまたはパディングの追加が行われます。
LSTM 層は 1 タイム ステップずつシーケンス データを処理するため、層の OutputMode
プロパティが 'last'
の場合、最後のタイム ステップでパディングを行うと層の出力に悪影響を与える可能性があります。シーケンス データの左側に対してパディングまたは切り捨てを行うには、'SequencePaddingDirection'
オプションを 'left'
に設定します。
sequence-to-sequence ネットワークの場合 (各 LSTM 層について OutputMode
プロパティが 'sequence'
である場合)、最初のタイム ステップでパティングを行うと、それ以前のタイム ステップの予測に悪影響を与える可能性があります。シーケンスの右側に対してパディングまたは切り捨てを行うには、'SequencePaddingDirection'
オプションを 'right'
に設定します。
入力シーケンスのパディング、切り捨て、および分割の効果の詳細は、シーケンスのパディング、切り捨て、および分割を参照してください。
Acceleration
— パフォーマンスの最適化
'auto'
(既定値) | 'mex'
| 'none'
パフォーマンスの最適化。'Acceleration'
と次のいずれかで構成されるコンマ区切りのペアとして指定します。
'auto'
— 入力ネットワークとハードウェア リソースに適した最適化の回数を自動的に適用します。'mex'
— MEX 関数をコンパイルして実行します。このオプションは GPU の使用時にのみ利用できます。GPU を使用するには Parallel Computing Toolbox とサポートされている GPU デバイスが必要です。サポートされているデバイスについては、リリース別の GPU サポート (Parallel Computing Toolbox)を参照してください。Parallel Computing Toolbox または適切な GPU が利用できない場合、エラーが返されます。'none'
— すべての高速化を無効にします。
既定のオプションは 'auto'
です。'auto'
が指定されている場合、MATLAB® は互換性のある最適化を複数適用します。'auto'
オプションを使用する場合、MATLAB は MEX 関数を生成しません。
'Acceleration'
オプション 'auto'
および 'mex'
を使用すると、パフォーマンス上のメリットが得られますが、初期実行時間が長くなります。互換性のあるパラメーターを使用した後続の呼び出しは、より高速になります。新しい入力データを使用して関数を複数回呼び出す場合は、パフォーマンスの最適化を使用してください。
'mex'
オプションは、関数の呼び出しに使用されたネットワークとパラメーターに基づいて MEX 関数を生成し、実行します。複数の MEX 関数を一度に 1 つのネットワークに関連付けることができます。ネットワークの変数をクリアすると、そのネットワークに関連付けられている MEX 関数もクリアされます。
'mex'
オプションは、GPU の使用時にのみ利用できます。MEX による高速化では、名前と値のオプション 'ExecutionEvironment','gpu'
を使用した単一の GPU 実行のみがサポートされます。
'mex'
オプションを使用するには、C/C++ コンパイラがインストールされ、GPU Coder™ Interface for Deep Learning Libraries サポート パッケージがなければなりません。MATLAB でアドオン エクスプローラーを使用してサポート パッケージをインストールします。設定手順については、MEX の設定 (GPU Coder)を参照してください。GPU Coder は不要です。
'mex'
オプションではサポートされていない層があります。サポートされている層の一覧については、サポートされている層 (GPU Coder)を参照してください。imageInputLayer
のあるネットワークのみがサポートされます。
'mex'
オプションの使用時に、MATLAB Compiler™ を使用してネットワークを配布することはできません。
例: 'Acceleration','mex'
ExecutionEnvironment
— ハードウェア リソース
'auto'
(既定値) | 'gpu'
| 'cpu'
| 'multi-gpu'
| 'parallel'
ハードウェア リソース。'ExecutionEnvironment'
と次のいずれかで構成されるコンマ区切りのペアとして指定します。
'auto'
— 利用可能な場合は GPU を使用し、そうでない場合は CPU を使用します。'gpu'
— GPU を使用します。GPU を使用するには Parallel Computing Toolbox とサポートされている GPU デバイスが必要です。サポートされているデバイスについては、リリース別の GPU サポート (Parallel Computing Toolbox)を参照してください。Parallel Computing Toolbox または適切な GPU が利用できない場合、エラーが返されます。'cpu'
— CPU を使用します。'multi-gpu'
— 既定のクラスター プロファイルに基づいてローカルの並列プールを使用して、1 つのマシンで複数の GPU を使用します。現在の並列プールがない場合、使用可能な GPU の数と等しいプール サイズの並列プールが起動されます。'parallel'
— 既定のクラスター プロファイルに基づいてローカルまたはリモートの並列プールを使用します。現在の並列プールがない場合、既定のクラスター プロファイルを使用して 1 つのプールが起動されます。プールから GPU にアクセスできる場合、固有の GPU を持つワーカーのみが計算を実行します。プールに GPU がない場合、代わりに使用可能なすべての CPU ワーカーで計算が実行されます。
さまざまな実行環境をどのような場合に使用するかの詳細は、Scale Up Deep Learning in Parallel, on GPUs, and in the Cloudを参照してください。
'gpu'
、'multi-gpu'
、および 'parallel'
のオプションを使用するには、Parallel Computing Toolbox が必要です。深層学習に GPU を使用するには、サポートされている GPU デバイスもなければなりません。サポートされているデバイスについては、リリース別の GPU サポート (Parallel Computing Toolbox)を参照してください。これらのいずれかのオプションの選択時に Parallel Computing Toolbox または適切な GPU を利用できない場合、エラーが返されます。
'multi-gpu'
および 'parallel'
オプションでは、lstmLayer
、bilstmLayer
、または gruLayer
オブジェクトを含む再帰型ニューラル ネットワーク (RNN) がサポートされません。
例: 'ExecutionEnvironment','cpu'
出力引数
act
— ネットワーク層からの活性化
数値配列 | cell 配列
ネットワーク層からの活性化。数値配列、または数値配列の cell 配列として返されます。act
の形式は、入力データのタイプ、層出力のタイプ、および 'OutputAs'
オプションによって異なります。
イメージまたは折りたたみシーケンス出力
層がイメージまたは折りたたみシーケンス データを出力する場合、act
は数値配列です。
'OutputAs' | act |
---|---|
'channels' | 2 次元イメージ出力の場合、 3 次元イメージ出力の場合、 折りたたみ 2 次元イメージ シーケンス出力の場合、 折りたたみ 3 次元イメージ シーケンス出力の場合、 |
'rows' | 2 次元および 3 次元イメージ出力の場合、 折りたたみ 2 次元および 3 次元イメージ シーケンス出力の場合、 |
'columns' | 2 次元および 3 次元イメージ出力の場合、 折りたたみ 2 次元および 3 次元イメージ シーケンス出力の場合、 |
シーケンス出力
layer
にシーケンス出力 (たとえば、出力モードが 'sequence'
の LSTM 層) がある場合、act
は cell 配列になります。この場合、'OutputAs'
オプションは 'channels'
でなければなりません。
'OutputAs' | act |
---|---|
'channels' | ベクトル シーケンス出力の場合、 2 次元イメージ シーケンス出力の場合、 3 次元イメージ シーケンス出力の場合、 この場合、 |
単一のタイム ステップ出力
layer
がシーケンスの単一のタイム ステップを出力する場合 (たとえば、出力モードが 'last'
の LSTM 層)、act
は数値配列になります。
'OutputAs' | act |
---|---|
'channels' | ベクトル データを含む単一のタイム ステップの場合、 2 次元イメージ データを含む単一のタイム ステップの場合、 3 次元イメージ データを含む単一のタイム ステップの場合、 |
'rows' | n 行 m 列の行列。ここで、n は観測値の数、m は選択した層からの出力要素の数です。この場合、act(i,:) には i 番目のシーケンスの活性化が含まれます。 |
'columns' | m 行 n 列の行列。ここで、m は選択した層からの出力要素の数、n は観測値の数です。この場合、act(:,i) には i 番目のイメージの活性化が含まれます。 |
アルゴリズム
関数 trainNetwork
を使用してネットワークに学習させる場合や、DAGNetwork
オブジェクトおよび SeriesNetwork
オブジェクトと共に予測関数または検証関数を使用する場合、ソフトウェアは単精度浮動小数点演算を使用して、これらの計算を実行します。学習、予測、および検証のための関数には、trainNetwork
、predict
、classify
、および activations
が含まれます。CPU と GPU の両方を使用してネットワークに学習させる場合、単精度演算が使用されます。
参照
[1] M. Kudo, J. Toyama, and M. Shimbo. "Multidimensional Curve Classification Using Passing-Through Regions." Pattern Recognition Letters. Vol. 20, No. 11–13, pages 1103–1111.
[2] UCI Machine Learning Repository: Japanese Vowels Dataset. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
C++ コード生成は、以下の構文をサポートします。
act = activations(net,X,layer)
act = activations(net,sequences,layer)
act = activations(__,Name,Value)
入力
X
は可変サイズにしないでください。入力のサイズはコード生成時に固定でなければなりません。ベクトル シーケンス入力の場合、特徴の数はコード生成時に定数でなければなりません。シーケンスの長さは可変サイズにできます。
イメージ シーケンス入力の場合、高さ、幅、およびチャネル数は、コード生成時に定数でなければなりません。
layer
引数は、コード生成時に定数でなければなりません。コード生成では、名前と値のペアの引数
'OutputAs'
、'MiniBatchSize'
、'SequenceLength'
、'SequencePaddingDirection'
、および'SequencePaddingValue'
のみがサポートされています。すべての名前と値のペアはコンパイル時の定数でなければなりません。出力の活性化の形式は
'channels'
でなければなりません。コード生成では、名前と値のペア
'SequenceLength'
のオプションとして'longest'
と'shortest'
のみがサポートされています。Intel® MKL-DNN ターゲット用のコード生成では、
'SequenceLength','longest'
、'SequencePaddingDirection','left'
、および'SequencePaddingValue',0
の名前と値の引数の組み合わせがサポートされません。
深層学習ニューラル ネットワーク用のコードの生成の詳細は、MATLAB Coder を使用した深層学習コード生成のワークフロー (MATLAB Coder)を参照してください。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
GPU コード生成は、以下の構文をサポートします。
act = activations(net,X,layer)
act = activations(net,sequences,layer)
act = activations(__,Name,Value)
入力
X
は可変サイズにしないでください。入力のサイズはコード生成時に固定でなければなりません。GPU コード生成では、関数
activations
へのgpuArray
入力はサポートされません。cuDNN ライブラリはベクトルおよび 2 次元イメージ シーケンスをサポートします。TensorRT ライブラリはベクトル入力シーケンスのみをサポートします。ARM®
Compute Library
for GPU は再帰型ネットワークをサポートしていません。ベクトル シーケンス入力の場合、特徴の数はコード生成時に定数でなければなりません。シーケンスの長さは可変サイズにできます。
イメージ シーケンス入力の場合、高さ、幅、およびチャネル数は、コード生成時に定数でなければなりません。
layer
引数は、コード生成時に定数でなければなりません。コード生成では、名前と値のペアの引数
'OutputAs'
、'MiniBatchSize'
、'SequenceLength'
、'SequencePaddingDirection'
、および'SequencePaddingValue'
のみがサポートされています。すべての名前と値のペアはコンパイル時の定数でなければなりません。出力の活性化の形式は
'channels'
でなければなりません。コード生成では、名前と値のペア
'SequenceLength'
のオプションとして'longest'
と'shortest'
のみがサポートされています。関数
activations
の GPU コード生成では、半精度浮動小数点データ型として定義されている入力がサポートされます。詳細については、half
(GPU Coder) を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
入力データが
gpuArray
、gpuArray
データを含む cell 配列か table、またはgpuArray
データを返すデータストアの場合、"ExecutionEnvironment"
オプションは"auto"
または"gpu"
にしなければなりません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)