ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

maxPooling2dLayer

説明

最大プーリング層は、入力を四角形のプーリング領域に分割し、各領域の最大値を計算することによって、ダウンサンプリングを実行します。

作成

説明

layer = maxPooling2dLayer(poolSize) は、最大プーリング層を作成し、PoolSize プロパティを設定します。

layer = maxPooling2dLayer(poolSize,Name,Value) は、名前と値のペアを使用して、オプションの StrideName、および HasUnpoolingOutputs の各プロパティを設定します。入力パディングを指定するには、名前と値のペアの引数 'Padding' を使用します。たとえば、maxPooling2dLayer(2,'Stride',3) は、プール サイズが [2 2]、ストライドが [3 3] の最大プーリング層を作成します。複数の名前と値のペアを指定できます。各プロパティ名を一重引用符で囲みます。

入力引数

すべて展開する

名前と値のペアの引数

コンマ区切りの名前と値のペアの引数を使用して、層の入力の端に沿って追加するパディングのサイズを指定し、StrideName、および HasUnpoolingOutputs の各プロパティを設定します。名前を一重引用符で囲みます。

例: maxPooling2dLayer(2,'Stride',3) は、プール サイズが [2 2]、ストライドが [3 3] の最大プーリング層を作成します。

入力の端のパディング。'Padding' と、次の値のいずれかから成るコンマ区切りのペアとして指定します。

  • 'same' — ストライドが 1 である場合、出力サイズが入力サイズと同じになるように、学習時または予測時にサイズが計算されたパディングを追加します。ストライドが 1 より大きい場合、出力サイズは ceil(inputSize/stride) になります。ここで、inputSize は入力の高さまたは幅、stride は対応する次元のストライドです。可能な場合、上下および左右に同じ量のパディングが追加されます。垂直方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは下に追加されます。水平方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは右に追加されます。

  • 非負の整数 p — サイズ p のパディングを入力のすべての端に追加します。

  • 非負の整数のベクトル [a b] — サイズ a のパディングを入力の上下に追加し、サイズ b のパディングを左右に追加します。

  • 非負の整数のベクトル [t b l r] — サイズが tblr のパディングを、それぞれ入力の上、下、左、右に追加します。

例: 'Padding',1 は、入力の上下に 1 行のパディングを追加し、入力の左右に 1 列のパディングを追加します。

例: 'Padding','same' は、(ストライドが 1 の場合) 出力サイズが入力サイズと同じになるようにパディングを追加します。

プロパティ

すべて展開する

最大プーリング

プーリング領域の次元。2 つの正の整数のベクトル [h w] として指定します。h は高さ、w は幅です。層を作成する場合、PoolSize をスカラーとして指定して、両方の次元に同じ値を使用できます。

ストライドの次元 Stride がそれぞれのプーリングの次元より小さい場合、プーリング領域が重なります。

パディングの次元 PaddingSize は、プーリング領域の次元 PoolSize より小さくなければなりません。

例: [2 1] は、高さが 2、幅が 1 のプーリング領域を指定します。

入力を垂直方向および水平方向に走査するステップ サイズ。2 つの正の整数のベクトル [a b] として指定します。a は垂直方向のステップ サイズ、b は水平方向のステップ サイズです。層を作成する場合、Stride をスカラーとして指定して、両方の次元に同じ値を使用できます。

ストライドの次元 Stride がそれぞれのプーリングの次元より小さい場合、プーリング領域が重なります。

パディングの次元 PaddingSize は、プーリング領域の次元 PoolSize より小さくなければなりません。

例: [2 3] は、垂直方向のステップ サイズとして 2、水平方向のステップ サイズとして 3 を指定します。

入力の境界に適用するパディングのサイズ。4 つの非負の整数のベクトル [t b l r] として指定します。t は上に適用されるパディング、b は下に適用されるパディング、l は左に適用されるパディング、r は右に適用されるパディングです。

層の作成時に、名前と値のペアの引数 'Padding' を使用してパディングのサイズを指定します。

例: [1 1 2 2] は、入力の上下に 1 行のパディングを追加し、入力の左右に 2 列のパディングを追加します。

パディングのサイズを決定するメソッド。'manual' または 'same' として指定します。

PaddingMode の値は、層の作成時に指定した 'Padding' 値に基づいて自動的に設定されます。

  • 'Padding' オプションをスカラーまたは非負の整数のベクトルに設定した場合、PaddingMode'manual' に自動的に設定されます。

  • 'Padding' オプションを 'same' に設定した場合、PaddingMode'same' に自動的に設定されます。ストライドが 1 である場合、出力サイズが入力サイズと同じになるように、学習時にパディングのサイズが計算されます。ストライドが 1 より大きい場合、出力サイズは ceil(inputSize/stride) になります。ここで、inputSize は入力の高さまたは幅、stride は対応する次元のストライドです。可能な場合、上下および左右に同じ量のパディングが追加されます。垂直方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは下に追加されます。水平方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは右に追加されます。

メモ

Padding プロパティは将来のリリースで削除される予定です。代わりに PaddingSize を使用してください。層の作成時に、名前と値のペアの引数 'Padding' を使用してパディングのサイズを指定します。

入力の境界に垂直方向および水平方向に適用するパディングのサイズ。2 つの非負の整数のベクトル [a b] として指定します。a は入力データの上下に適用されるパディング、b は左右に適用されるパディングです。

例: [1 1] は、入力の上下に 1 行のパディングを追加し、入力の左右に 1 列のパディングを追加します。

逆プーリング層への出力のフラグ。true または false として指定します。

HasUnpoolingOutputs の値が false に等しい場合、最大プーリング層には 'out' という名前の 1 つの出力があります。

最大プーリング層の出力を最大逆プーリング層への入力として使用するには、HasUnpoolingOutputs の値を true に設定します。この場合、最大プーリング層には、最大逆プーリング層に結合できる 2 つの追加の出力があります。

  • 'indices' — プールされた各領域の最大値のインデックス。

  • 'size' — 入力の特徴マップのサイズ。

最大逆プーリング層への出力を有効にするには、最大プーリング層のプーリング領域が重なっていてはなりません。

最大プーリング層の出力を逆プーリングする方法の詳細は、maxUnpooling2dLayer を参照してください。

層の名前。文字ベクトルまたは string スカラーとして指定します。層グラフに層を含めるには、空ではない一意の層の名前を指定しなければなりません。この層が含まれる系列ネットワークに学習させて Name'' に設定すると、学習時に層に名前が自動的に割り当てられます。

データ型: char | string

層の入力の数。この層は単一の入力のみを受け入れます。

データ型: double

層の入力名。この層は単一の入力のみを受け入れます。

データ型: cell

層の出力の数。

HasUnpoolingOutputs の値が false に等しい場合、最大プーリング層には 'out' という名前の 1 つの出力があります。

最大プーリング層の出力を最大逆プーリング層への入力として使用するには、HasUnpoolingOutputs の値を true に設定します。この場合、最大プーリング層には、最大逆プーリング層に結合できる 2 つの追加の出力があります。

  • 'indices' — プールされた各領域の最大値のインデックス。

  • 'size' — 入力の特徴マップのサイズ。

最大逆プーリング層への出力を有効にするには、最大プーリング層のプーリング領域が重なっていてはなりません。

最大プーリング層の出力を逆プーリングする方法の詳細は、maxUnpooling2dLayer を参照してください。

データ型: double

層の出力名。

HasUnpoolingOutputs の値が false に等しい場合、最大プーリング層には 'out' という名前の 1 つの出力があります。

最大プーリング層の出力を最大逆プーリング層への入力として使用するには、HasUnpoolingOutputs の値を true に設定します。この場合、最大プーリング層には、最大逆プーリング層に結合できる 2 つの追加の出力があります。

  • 'indices' — プールされた各領域の最大値のインデックス。

  • 'size' — 入力の特徴マップのサイズ。

最大逆プーリング層への出力を有効にするには、最大プーリング層のプーリング領域が重なっていてはなりません。

最大プーリング層の出力を逆プーリングする方法の詳細は、maxUnpooling2dLayer を参照してください。

データ型: cell

すべて折りたたむ

プーリング領域が重なっていない最大プーリング層を作成します。

layer = maxPooling2dLayer(2,'Stride',2)
layer = 
  MaxPooling2DLayer with properties:

                   Name: ''
    HasUnpoolingOutputs: 0
             NumOutputs: 1
            OutputNames: {'out'}

   Hyperparameters
               PoolSize: [2 2]
                 Stride: [2 2]
            PaddingMode: 'manual'
            PaddingSize: [0 0 0 0]

矩形領域の高さと幅 (プール サイズ) はいずれも 2 です。イメージを垂直方向および水平方向に走査するためのステップ サイズ (ストライド) も [2 2] であるため、プーリング領域は重なりません。

Layer 配列に領域が重なっていない最大プーリング層を含めます。

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected         10 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   crossentropyex

プーリング領域が重なっている最大プーリング層を作成します。

layer = maxPooling2dLayer([3 2],'Stride',2)
layer = 
  MaxPooling2DLayer with properties:

                   Name: ''
    HasUnpoolingOutputs: 0
             NumOutputs: 1
            OutputNames: {'out'}

   Hyperparameters
               PoolSize: [3 2]
                 Stride: [2 2]
            PaddingMode: 'manual'
            PaddingSize: [0 0 0 0]

この層は、サイズ [3 2] のプーリング領域を作成し、各領域の 6 つの要素の最大値を取ります。それぞれのプーリングの次元 PoolSize より小さいストライドの次元 Stride があるため、プーリング領域が重なります。

Layer 配列にプーリング領域が重なっている最大プーリング層を含めます。

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer([3 2],'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   Max Pooling             3x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected         10 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   crossentropyex

詳細

すべて展開する

参照

[1] Nagi, J., F. Ducatelle, G. A. Di Caro, D. Ciresan, U. Meier, A. Giusti, F. Nagi, J. Schmidhuber, L. M. Gambardella. ''Max-Pooling Convolutional Neural Networks for Vision-based Hand Gesture Recognition''. IEEE International Conference on Signal and Image Processing Applications (ICSIPA2011), 2011.

R2016a で導入