Main Content

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

maxunpool

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

説明

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

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

メモ

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

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

dlX が書式設定されていない dlarray である場合、dlY = maxunpool(dlX,indx,outputSize,'DataFormat',FMT) は、次元書式 FMT も指定します。出力 dlY は、dlX と同じ順序で次元が並べられた、書式設定されていない 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 オブジェクトとして指定します。

dlX が書式設定されていない dlarray の場合、'DataFormat' オプションを使用して書式を指定しなければなりません。

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

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

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

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

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

書式設定されていない入力データの次元の順序。'DataFormat' と、データの各次元のラベルを表す文字配列または string である FMT で構成されるコンマ区切りのペアとして指定します。FMT の各文字は次のいずれかでなければなりません。

  • 'S' — 空間

  • 'C' — チャネル

  • 'B' — バッチ (サンプルや観測値など)

  • 'T' — 時間 (シーケンスなど)

  • 'U' — 指定なし

'S' または 'U' のラベルが付いた次元については、複数回指定できます。'C''B''T' のラベルについては、1 回のみ使用できます。

入力データ dlX が書式設定されていない dlarray の場合、'DataFormat',FMT を指定しなければなりません。

例: 'DataFormat','SSCB'

データ型: char | string

出力引数

すべて折りたたむ

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

入力データ dlX が書式設定された dlarray の場合、dlY の次元のラベルは dlX と同じになります。入力データが書式設定されていない dlarray の場合、dlY は、入力データと同じ順序で次元が並べられた、書式設定されていない dlarray になります。

拡張機能

R2019b で導入