Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

maxunpool

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

R2019b 以降

説明

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

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

メモ

layerGraph オブジェクトまたは Layer 配列内で最大逆プーリング演算を適用する場合は、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 で導入