Main Content

maxunpool

最大プーリング演算の出力の逆プーリング

R2019b 以降

説明

最大逆プーリング演算は、アップサンプリングとゼロを使ったパディングによって、最大プーリング演算の出力を逆プーリングします。

関数 maxunpool は、最大逆プーリング演算を dlarray データに適用します。dlarray オブジェクトを使用すると、次元にラベルを付けることができるため、高次元のデータをより簡単に扱うことができます。たとえば、"S""T""C""B" のラベルを使用して、各次元が空間、時間、チャネル、バッチのどの次元に対応するかを示すことができます。特に指定がないその他の次元については、ラベル "U" を使用します。特定の次元に対して演算を行うオブジェクト関数 dlarray の場合、dlarray オブジェクトの形式を直接整えるか、DataFormat オプションを使用することで、次元ラベルを指定できます。

メモ

dlnetwork オブジェクト内で最大逆プーリング演算を適用する場合は、maxUnpooling2dLayer を使用します。

Y = maxunpool(X,indx,outputSize) は、サイズ outputSize と一致するように、入力データ X の空間次元または時間次元をアップサンプリングします。データは、indx オプションで指定された最大値の位置の間がゼロでパディングされます。入力 X は、次元ラベルで形式を整えた dlarray です。出力 Y は、X と同じ次元形式をもち、形式を整えた dlarray になります。

X が、形式を整えていない dlarray である場合、Y = maxunpool(X,indx,outputSize,'DataFormat',FMT) は、次元形式 FMT も指定します。出力 Y は、X と同じ順序で次元が並べられた、形式を整えていない dlarray になります。

すべて折りたたむ

3 つのチャネルをもつ 28 x 28 のイメージが 128 個格納されたバッチを含む、形式を整えた dlarray オブジェクトを作成します。形式を 'SSCB' (空間、空間、チャネル、バッチ) として指定します。

miniBatchSize = 128;
inputSize = [28 28];
numChannels = 3;
X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);
dlX = dlarray(X,'SSCB');

入力データのサイズと形式を表示します。

size(dlX)
ans = 1×4

    28    28     3   128

dims(dlX)
ans = 
'SSCB'

プーリング領域サイズ 2、ストライド 2 でデータを最大値プーリングします。

[dlY,indx,dataSize] = maxpool(dlX,2,'Stride',2);

プーリングされたデータのサイズと形式を表示します。

size(dlY)
ans = 1×4

    14    14     3   128

dims(dlY)
ans = 
'SSCB'

データ サイズを表示します。

dataSize
dataSize = 1×4

    28    28     3   128

maxpool 演算から取得したインデックスとデータ サイズを使用してデータを逆プーリングします。

dlY = maxunpool(dlY,indx,dataSize);

逆プーリングされたデータのサイズと形式を表示します。

size(dlY)
ans = 1×4

    28    28     3   128

dims(dlY)
ans = 
'SSCB'

12 個のチャネルをもつ長さ 100 のシーケンスが 128 個格納されたバッチを含む、形式を整えた dlarray オブジェクトを作成します。形式を 'CBT' (チャネル、バッチ、時間) として指定します。

miniBatchSize = 128;
sequenceLength = 100;
numChannels = 12;
X = rand(numChannels,miniBatchSize,sequenceLength);
dlX = dlarray(X,'CBT');

入力データのサイズと形式を表示します。

size(dlX)
ans = 1×3

    12   128   100

dims(dlX)
ans = 
'CBT'

'PoolFormat' オプションと 'Stride' オプションを指定して関数 maxpool を使用し、プーリング領域サイズ 2、ストライド 2 で 1 次元の最大プーリングを適用します。

poolSize = 2;
[dlY,indx,dataSize] = maxpool(dlX,poolSize,'PoolFormat','T','Stride',2);

出力のサイズと形式を表示します。

size(dlY)
ans = 1×3

    12   128    50

dims(dlY)
ans = 
'CBT'

maxpool 演算から取得したインデックスとデータ サイズを使用してデータを逆プーリングします。

dlY = maxunpool(dlY,indx,dataSize);

逆プーリングされたデータのサイズと形式を表示します。

size(dlY)
ans = 1×3

    12   128   100

dims(dlY)
ans = 
'CBT'

入力引数

すべて折りたたむ

入力データ。形式を整えた、または形式を整えていない dlarray オブジェクトとして指定します。

X が、形式を整えていない dlarray の場合、'DataFormat' オプションを使用して形式を指定しなければなりません。

この関数は、outputSize で指定されたサイズとなるように、データの 'S' (空間) と 'T' の次元を逆プーリングします。

プーリングされた各領域の最大値のインデックス。dlarray として指定します。

関数 maxpool によって出力されたインデックスを、maxunpool への indx 入力として使用します。

出力特徴マップのサイズ。数値配列として指定します。

関数 maxpool によって出力されたサイズを、maxunpool への outputSize 入力として使用します。

データの次元の説明。文字ベクトルまたは string スカラーとして指定します。

データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。

各文字は以下のとおりです。

  • "S" — 空間

  • "C" — チャネル

  • "B" — バッチ

  • "T" — 時間

  • "U" — 指定なし

たとえば、シーケンスのバッチを含み、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。この配列の形式を "CBT" (チャネル、バッチ、時間) として指定できます。

"S" または "U" のラベルが付いた次元については、複数回指定できます。"C""B""T" のラベルについては、1 回のみ使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。

入力データが、形式を整えた dlarray オブジェクトでない場合は、FMT オプションを指定しなければなりません。

詳細については、Deep Learning Data Formatsを参照してください。

データ型: char | string

出力引数

すべて折りたたむ

逆プーリングされたデータ。dlarray として返されます。出力 Y の基となるデータ型は、入力 X と同じです。

入力データ X が、形式を整えた dlarray である場合、Y の次元形式は X と同じになります。入力データが、形式を整えた dlarray でない場合、Y は、入力データと同じ次元の順序をもち、形式を整えていない dlarray になります。

アルゴリズム

すべて折りたたむ

深層学習配列の形式

深層学習のほとんどのネットワークと関数は、入力データの各次元に対して異なる方法で演算を行います。

たとえば、LSTM 演算は入力データの時間次元を反復処理し、バッチ正規化演算は入力データのバッチ次元を正規化します。

ラベルが付いた次元をもつ入力データ、または追加のレイアウト情報をもつ入力データを指定するには、"データ形式" を使用します。

データ形式は文字列で、各文字は対応するデータ次元のタイプを表します。

各文字は以下のとおりです。

  • "S" — 空間

  • "C" — チャネル

  • "B" — バッチ

  • "T" — 時間

  • "U" — 指定なし

たとえば、シーケンスのバッチを含み、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列があるとします。この配列の形式を "CBT" (チャネル、バッチ、時間) として指定できます。

形式を整えた入力データを作成するには、dlarray オブジェクトを作成し、2 番目の引数を使用して形式を指定します。

形式を整えていないデータを使用して追加のレイアウト情報を指定するには、引数 FMT を使用して形式を指定します。

詳細については、Deep Learning Data Formatsを参照してください。

拡張機能

バージョン履歴

R2019b で導入