Main Content

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

activations

深層学習ネットワーク層の活性化の計算

説明

1 つの CPU または 1 つの GPU で深層学習ネットワーク層の活性化を計算できます。GPU を使用するには、Parallel Computing Toolbox™ および Compute Capability 3.0 以上の CUDA® 対応 NVIDIA® GPU が必要です。名前と値のペアの引数 ExecutionEnvironment を使用してハードウェア要件を指定します。

act = activations(net,imds,layer) は、学習済みネットワーク net およびイメージ データストア imds 内のイメージ データを使用して、特定の層のネットワーク活性化を返します。

act = activations(net,ds,layer) は、データストア ds 内のデータを使用してネットワーク活性化を返します。

act = activations(net,X,layer) は、数値配列 X 内のイメージ データまたは特徴データを使用してネットワーク活性化を返します。

act = activations(net,X1,...,XN) は、複数入力ネットワーク net の数値配列 X1、…、XN のデータに対するネットワーク活性化を返します。入力 Xi は、ネットワーク入力 net.InputNames(i) に対応します。

act = activations(net,sequences,layer) は、再帰型ネットワーク (LSTM ネットワークや GRU ネットワークなど) に対するネットワーク活性化を返します。ここで、sequences にはシーケンスまたは時系列予測子が含まれます。

act = activations(net,tbl,layer) は、table tbl 内のデータを使用してネットワーク活性化を返します。

act = activations(___,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して、ネットワーク活性化を返します。たとえば、'OutputAs','rows' は、活性化出力形式を 'rows' に指定します。名前と値のペアの引数は、他のすべての入力引数の後で指定します。

すべて折りたたむ

この例では、事前学習済みの畳み込みニューラル ネットワークから学習済みのイメージの特徴を抽出し、これらの特徴を使用してイメージ分類器に学習させる方法を説明します。特徴抽出は、事前学習済みの深いネットワークの表現能力を活用できる最も簡単で時間のかからない方法です。たとえば、抽出した特徴に対して 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);

for i = 1:16
    I{i} = readimage(imdsTrain,idx(i));
end

figure
imshow(imtile(I))

事前学習済みのネットワークの読み込み

事前学習済みの AlexNet ネットワークを読み込みます。Deep Learning Toolbox Model for AlexNet Network サポート パッケージがインストールされていない場合、ダウンロード用リンクが表示されます。AlexNet は、100 万枚を超えるイメージについて学習済みであり、イメージを 1000 個のオブジェクト カテゴリに分類できます。たとえば、キーボード、マウス、鉛筆、多くの動物などです。結果として、このモデルは広範囲のイメージに対する豊富な特徴表現を学習しています。

net = alexnet;

ネットワーク アーキテクチャを表示します。ネットワークには 5 つの畳み込み層と 3 つの全結合層があります。

net.Layers
ans = 
  25x1 Layer array with layers:

     1   'data'     Image Input                   227x227x3 images with 'zerocenter' normalization
     2   'conv1'    Convolution                   96 11x11x3 convolutions with stride [4  4] and padding [0  0  0  0]
     3   'relu1'    ReLU                          ReLU
     4   'norm1'    Cross Channel Normalization   cross channel normalization with 5 channels per element
     5   'pool1'    Max Pooling                   3x3 max pooling with stride [2  2] and padding [0  0  0  0]
     6   'conv2'    Grouped Convolution           2 groups of 128 5x5x48 convolutions with stride [1  1] and padding [2  2  2  2]
     7   'relu2'    ReLU                          ReLU
     8   'norm2'    Cross Channel Normalization   cross channel normalization with 5 channels per element
     9   'pool2'    Max Pooling                   3x3 max pooling with stride [2  2] and padding [0  0  0  0]
    10   'conv3'    Convolution                   384 3x3x256 convolutions with stride [1  1] and padding [1  1  1  1]
    11   'relu3'    ReLU                          ReLU
    12   'conv4'    Grouped Convolution           2 groups of 192 3x3x192 convolutions with stride [1  1] and padding [1  1  1  1]
    13   'relu4'    ReLU                          ReLU
    14   'conv5'    Grouped Convolution           2 groups of 128 3x3x192 convolutions with stride [1  1] and padding [1  1  1  1]
    15   'relu5'    ReLU                          ReLU
    16   'pool5'    Max Pooling                   3x3 max pooling with stride [2  2] and padding [0  0  0  0]
    17   'fc6'      Fully Connected               4096 fully connected layer
    18   'relu6'    ReLU                          ReLU
    19   'drop6'    Dropout                       50% dropout
    20   'fc7'      Fully Connected               4096 fully connected layer
    21   'relu7'    ReLU                          ReLU
    22   'drop7'    Dropout                       50% dropout
    23   'fc8'      Fully Connected               1000 fully connected layer
    24   'prob'     Softmax                       softmax
    25   'output'   Classification Output         crossentropyex with 'tench' and 999 other classes

最初の層であるイメージ入力層には、サイズが 227 x 227 x 3 の入力イメージが必要です。ここで、3 はカラー チャネルの数です。

inputSize = net.Layers(1).InputSize
inputSize = 1×3

   227   227     3

イメージの特徴の抽出

ネットワークは、入力イメージの階層表現を構築します。深い層には、初期の層の低レベルの特徴を使用して構築された、より高レベルの特徴が含まれます。学習イメージとテスト イメージの特徴表現を取得するには、全結合層 'fc7'activations を使用します。イメージの低レベルの表現を取得するには、ネットワークの初期の層を使用します。

ネットワークにはサイズが 227 x 227 x 3 の入力イメージが必要ですが、イメージ データストアにあるイメージのサイズは異なります。学習およびテスト イメージのサイズをネットワークへの入力前に自動的に変更するには、拡張イメージ データストアを作成して、目的のイメージ サイズを指定し、これらのデータストアを activations の入力引数として使用します。

augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain);
augimdsTest = augmentedImageDatastore(inputSize(1:2),imdsTest);

layer = 'fc7';
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 は高い精度を示しています。特徴抽出を使用しても十分な精度が得られない場合、代わりに転移学習を試してください。

入力引数

すべて折りたたむ

学習済みネットワーク。SeriesNetwork または DAGNetwork オブジェクトとして指定します。事前学習済みのネットワークをインポートする (たとえば、関数 googlenet を使用する)、または trainNetwork を使用して独自のネットワークに学習させることによって、学習済みネットワークを取得できます。

イメージ データストア。ImageDatastore オブジェクトとして指定します。

ImageDatastore を使用すると、事前取得を使用して JPG または PNG イメージ ファイルのバッチ読み取りを行うことができます。イメージの読み取りにカスタム関数を使用する場合、ImageDatastore は事前取得を行いません。

ヒント

イメージのサイズ変更を含む深層学習用のイメージの前処理を効率的に行うには、augmentedImageDatastore を使用します。

imageDatastorereadFcn オプションは通常、速度が大幅に低下するため、前処理またはサイズ変更に使用しないでください。

メモリ外のデータおよび前処理用のデータストア。データストアは、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}
複数入力

少なくとも numInputs 個の列をもつ cell 配列。numInputs はネットワーク入力の数です。

最初の numInputs 個の列は、各入力の予測子を指定します。

入力の順序は、ネットワークの InputNames プロパティによって指定されます。

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 はシーケンス長です。

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 は特徴の数です。

詳細については、深層学習用のデータストアを参照してください。

イメージ データまたは特徴データ。数値配列として指定します。配列のサイズは入力のタイプによって以下のように異なります。

入力説明
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 のイメージのサイズは、ネットワークのイメージ入力層の入力サイズと同じでなければなりません。

シーケンス データまたは時系列データ。数値配列の N 行 1 列の cell 配列、1 つのシーケンスを表す数値配列、またはデータストアとして指定します。ここで、N は観測値の数です。

cell 配列入力または数値配列入力の場合、シーケンスが含まれる数値配列の次元は、データのタイプによって異なります。

入力説明
ベクトル シーケンスc 行 s 列の行列。ここで、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 に対応していなければなりません。

イメージ データまたは特徴データの table。table の各行は観測値に対応します。

table の列での予測子の配置は、入力データのタイプによって異なります。

入力予測子
イメージ データ
  • イメージの絶対ファイル パスまたは相対ファイル パス。単一列の文字ベクトルとして指定します。

  • イメージ。3 次元数値配列として指定します。

単一列で予測子を指定します。

特徴データ

数値スカラー。

table の numFeatures 個の列で予測子を指定します。numFeatures は入力データの特徴の数です。

この引数は、単一の入力のみがあるネットワークをサポートします。

データ型: table

活性化の抽出元の層。数値インデックスまたは文字ベクトルとして指定します。

SeriesNetwork オブジェクトの活性化を計算するには、層の数値インデックスを使用するか、層の名前に対応する文字ベクトルとして層を指定します。

DAGNetwork オブジェクトの活性化を計算するには、層の名前に対応する文字ベクトルとして層を指定します。層に複数の出力がある場合、層と出力を、層の名前、その後に文字 "/"、層出力の名前と続けて指定します。つまり、layer'layerName/outputName' の形式を取ります。

例: 3

例: 'conv1'

例: 'mpool/out'

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: activations(net,X,layer,'OutputAs','rows')

出力活性化の形式。'OutputAs''channels''rows'、または 'columns' のいずれかで構成されるコンマ区切りのペアとして指定します。さまざまな出力形式の説明については、act を参照してください。

イメージ入力の場合、'OutputAs' オプションが 'channels' の場合、入力データ X のイメージは、ネットワークのイメージ入力層の入力サイズより大きくすることができます。その他の出力形式では、X のイメージのサイズは、ネットワークのイメージ入力層の入力サイズと同じでなければなりません。

例: 'OutputAs','rows'

予測に使用するミニバッチのサイズ。正の整数として指定します。ミニバッチのサイズが大きくなるとより多くのメモリが必要になりますが、予測時間が短縮される可能性があります。

例: 'MiniBatchSize',256

入力シーケンスのパディング、切り捨て、または分割を行うオプション。次のいずれかに指定します。

  • 'longest' — 各ミニバッチで、最長のシーケンスと同じ長さになるようにシーケンスのパディングを行います。このオプションを使用するとデータは破棄されませんが、パディングによってネットワークにノイズが生じることがあります。

  • 'shortest' — 各ミニバッチで、最短のシーケンスと同じ長さになるようにシーケンスの切り捨てを行います。このオプションを使用するとパディングは追加されませんが、データが破棄されます。

  • 正の整数 — 各ミニバッチで、ミニバッチで最長のシーケンスより大きい、指定長の最も近い倍数になるようにシーケンスのパディングを行った後、それらのシーケンスを指定長のより小さなシーケンスに分割します。分割が発生すると、追加のミニバッチが作成されます。シーケンス全体がメモリに収まらない場合は、このオプションを使用します。または、'MiniBatchSize' オプションをより小さい値に設定して、ミニバッチごとのシーケンス数を減らしてみます。

入力シーケンスのパディング、切り捨て、および分割の効果の詳細は、シーケンスのパディング、切り捨て、および分割を参照してください。

例: 'SequenceLength','shortest'

入力シーケンスをパディングする値。スカラーとして指定します。このオプションは、SequenceLength'longest' または正の整数の場合にのみ有効です。ネットワーク全体にエラーが伝播される可能性があるため、NaN でシーケンスをパディングしないでください。

例: 'SequencePaddingValue',-1

パディングまたは切り捨ての方向。次のいずれかに指定します。

  • 'right' — シーケンスの右側に対してパディングまたは切り捨てを行います。シーケンスは同じタイム ステップで始まり、シーケンスの末尾に対して切り捨てまたはパディングの追加が行われます。

  • 'left' — シーケンスの左側に対してパディングまたは切り捨てを行います。シーケンスが同じタイム ステップで終わるように、シーケンスの先頭に対して切り捨てまたはパディングの追加が行われます。

LSTM 層は 1 タイム ステップずつシーケンス データを処理するため、層の OutputMode プロパティが 'last' の場合、最後のタイム ステップでパディングを行うと層の出力に悪影響を与える可能性があります。シーケンス データの左側に対してパディングまたは切り捨てを行うには、'SequencePaddingDirection' オプションを 'left' に設定します。

sequence-to-sequence ネットワークの場合 (各 LSTM 層について OutputMode プロパティが 'sequence' である場合)、最初のタイム ステップでパティングを行うと、それ以前のタイム ステップの予測に悪影響を与える可能性があります。シーケンスの右側に対してパディングまたは切り捨てを行うには、'SequencePaddingDirection' オプションを 'right' に設定します。

入力シーケンスのパディング、切り捨て、および分割の効果の詳細は、シーケンスのパディング、切り捨て、および分割を参照してください。

パフォーマンスの最適化。'Acceleration' と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'auto' — 入力ネットワークとハードウェア リソースに適した最適化の回数を自動的に適用します。

  • 'mex' — MEX 関数をコンパイルして実行します。このオプションは GPU の使用時にのみ利用できます。GPU を使用するには、Parallel Computing Toolbox および Compute Capability 3.0 以上の CUDA 対応 NVIDIA GPU が必要です。Parallel Computing Toolbox または適切な GPU が利用できない場合、エラーが返されます。

  • 'none' — すべての高速化を無効にします。

既定のオプションは 'auto' です。'auto' が指定されている場合、MATLAB® は互換性のある最適化を複数適用します。'auto' オプションを使用する場合、MATLAB は MEX 関数を生成しません。

'Acceleration' オプション 'auto' および 'mex' を使用すると、パフォーマンス上のメリットが得られますが、初期実行時間が長くなります。互換性のあるパラメーターを使用した後続の呼び出しは、より高速になります。新しい入力データを使用して関数を複数回呼び出す場合は、パフォーマンスの最適化を使用してください。

'mex' オプションは、関数の呼び出しに使用されたネットワークとパラメーターに基づいて MEX 関数を生成し、実行します。複数の MEX 関数を一度に 1 つのネットワークに関連付けることができます。ネットワークの変数をクリアすると、そのネットワークに関連付けられている MEX 関数もクリアされます。

'mex' オプションは、GPU の使用時にのみ利用できます。C/C++ コンパイラと GPU Coder™ Interface for Deep Learning Libraries サポート パッケージがインストールされていなければなりません。MATLAB でアドオン エクスプローラーを使用してサポート パッケージをインストールします。設定手順については、MEX の設定 (GPU Coder)を参照してください。GPU Coder は不要です。

'mex' オプションではサポートされていない層があります。サポートされている層の一覧については、サポートされている層 (GPU Coder)を参照してください。sequenceInputLayer を含む再帰型ニューラル ネットワーク (RNN) はサポートされていません。

'mex' オプションは、複数の入力層または複数の出力層をもつネットワークをサポートしていません。

'mex' オプションの使用時に、MATLAB Compiler™ を使用してネットワークを配布することはできません。

例: 'Acceleration','mex'

ハードウェア リソース。'ExecutionEnvironment' と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'auto' — 利用可能な場合は GPU を使用し、そうでない場合は CPU を使用します。

  • 'gpu' — GPU を使用します。GPU を使用するには、Parallel Computing Toolbox および Compute Capability 3.0 以上の CUDA 対応 NVIDIA GPU が必要です。Parallel Computing Toolbox または適切な GPU が利用できない場合、エラーが返されます。

  • 'cpu' — CPU を使用します。

例: 'ExecutionEnvironment','cpu'

出力引数

すべて折りたたむ

ネットワーク層からの活性化。数値配列、または数値配列の cell 配列として返されます。act の形式は、入力データのタイプ、層出力のタイプ、および 'OutputAs' オプションによって異なります。

イメージまたは折りたたみシーケンス出力

層がイメージまたは折りたたみシーケンス データを出力する場合、act は数値配列です。

'OutputAs'act
'channels'

2 次元イメージ出力の場合、act は h x w x c x n の配列になります。ここで、h、w、および c はそれぞれ選択した層の出力の高さ、幅、およびチャネル数、n はイメージの数です。この場合、act(:,:,:,i) には i 番目のイメージの活性化が含まれます。

3 次元イメージ出力の場合、act は h x w x d x c x n の配列になります。ここで、h、w、d、および c はそれぞれ選択した層の出力の高さ、幅、深さ、およびチャネル数、n はイメージの数です。この場合、act(:,:,:,:,i) には i 番目のイメージの活性化が含まれます。

折りたたみ 2 次元イメージ シーケンス出力の場合、act は h x w x c x (n*s) の配列になります。ここで、h、w、および c はそれぞれ選択した層の出力の高さ、幅、およびチャネル数、n はシーケンスの数、s はシーケンス長です。この場合、act(:,:,:,(t-1)*n+k) には k 番目のシーケンスのタイム ステップ t の活性化が含まれます。

折りたたみ 3 次元イメージ シーケンス出力の場合、act は h x w x d x c x (n*s) の配列になります。ここで、h、w、d、および c はそれぞれ選択した層の出力の高さ、幅、深さ、およびチャネル数、n はシーケンスの数、s はシーケンス長です。この場合、act(:,:,:,:,(t-1)*n+k) には k 番目のシーケンスのタイム ステップ t の活性化が含まれます。

'rows'

2 次元および 3 次元イメージ出力の場合、act は n 行 m 列の行列です。ここで、n はイメージの数、m は層からの出力要素の数です。この場合、act(i,:) には i 番目のイメージの活性化が含まれます。

折りたたみ 2 次元および 3 次元イメージ シーケンス出力の場合、act は (n*s) 行 m 列の行列です。ここで、n はシーケンスの数、s はシーケンス長、m は層からの出力要素の数です。この場合、act((t-1)*n+k,:) には k 番目のシーケンスのタイム ステップ t の活性化が含まれます。

'columns'

2 次元および 3 次元イメージ出力の場合、act は m 行 n 列の行列です。ここで、m は層からの出力要素の数、n はイメージの数です。この場合、act(:,i) には i 番目のイメージの活性化が含まれます。

折りたたみ 2 次元および 3 次元イメージ シーケンス出力の場合、act は m 行 (n*s) 列の行列です。ここで、m は層からの出力要素の数、n はシーケンスの数、s はシーケンス長です。この場合、act(:,(t-1)*n+k) には k 番目のシーケンスのタイム ステップ t の活性化が含まれます。

シーケンス出力

layer にシーケンス出力 (たとえば、出力モードが 'sequence' の LSTM 層) がある場合、act は cell 配列になります。この場合、'OutputAs' オプションは 'channels' でなければなりません。

'OutputAs'act
'channels'

ベクトル シーケンス出力の場合、act は、c 行 s 列の行列の n 行 1 列の cell 配列になります。ここで、n はシーケンスの数、c はシーケンスの特徴の数、s はシーケンス長です。

2 次元イメージ シーケンス出力の場合、act は、h x w x c x s の行列の n 行 1 列の cell 配列になります。ここで、n はシーケンスの数、h、w、および c はそれぞれイメージの高さ、幅、およびチャネル数、s はシーケンス長です。

3 次元イメージ シーケンス出力の場合、act は、h x w x c x d x s の行列の n 行 1 列の cell 配列になります。ここで、n はシーケンスの数、h、w、d、および c はそれぞれイメージの高さ、幅、深さ、およびチャネル数、s はシーケンス長です。

この場合、act{i} には i 番目のシーケンスの活性化が含まれます。

単一のタイム ステップ出力

layer がシーケンスの単一のタイム ステップを出力する場合 (たとえば、出力モードが 'last' の LSTM 層)、act は数値配列になります。

'OutputAs'act
'channels'

ベクトル データを含む単一のタイム ステップの場合、act は c 行 n 列の行列になります。ここで、n はシーケンスの数、c はシーケンスの特徴の数です。

2 次元イメージ データを含む単一のタイム ステップの場合、act は h x w x c x n の配列になります。ここで、n はシーケンスの数、h、w、および c はそれぞれイメージの高さ、幅、およびチャネル数です。

3 次元イメージ データを含む単一のタイム ステップの場合、act は h x w x c x d x n の配列になります。ここで、n はシーケンスの数、h、w、d、および c はそれぞれイメージの高さ、幅、深さ、およびチャネル数です。

'rows'n 行 m 列の行列。ここで、n は観測値の数、m は選択した層からの出力要素の数です。この場合、act(i,:) には i 番目のシーケンスの活性化が含まれます。
'columns'm 行 n 列の行列。ここで、m は選択した層からの出力要素の数、n は観測値の数です。この場合、act(:,i) には i 番目のイメージの活性化が含まれます。

アルゴリズム

Deep Learning Toolbox™ に含まれる深層学習における学習、予測、検証用のすべての関数は、単精度浮動小数点演算を使用して計算を実行します。深層学習用の関数には trainNetworkpredictclassifyactivations などがあります。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

拡張機能

R2016a で導入