このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
averagePooling2dLayer
平均プーリング層
説明
2 次元平均プーリング層は、入力を矩形のプーリング領域に分割し、各領域の平均を計算することによって、ダウンサンプリングを実行します。
作成
説明
は、平均プーリング層を作成し、layer
= averagePooling2dLayer(poolSize
)PoolSize
プロパティを設定します。
は、名前と値のペアを使用して、オプションの layer
= averagePooling2dLayer(poolSize
,Name,Value
)Stride
プロパティおよび Name
プロパティを設定します。入力パディングを指定するには、名前と値のペアの引数 'Padding'
を使用します。たとえば、averagePooling2dLayer(2,'Stride',2)
は、プール サイズが [2 2]
、ストライドが [2 2]
の平均プーリング層を作成します。複数の名前と値のペアを指定できます。各プロパティ名を一重引用符で囲みます。
入力引数
コンマ区切りの名前と値のペアの引数を使用して、層の入力の端に沿って追加するゼロ パディングのサイズを指定するか、Stride
プロパティおよび Name
プロパティを設定します。名前を一重引用符で囲みます。
例: averagePooling2dLayer(2,'Stride',2)
は、プール サイズが [2 2]
、ストライドが [2 2]
の平均プーリング層を作成します。
Padding
— 入力の端のパディング
[0 0 0 0]
(既定値) | 非負の整数のベクトル | 'same'
入力の端のパディング。'Padding'
と、次の値のいずれかから成るコンマ区切りのペアとして指定します。
'same'
— ストライドが 1 である場合、出力サイズが入力サイズと同じになるように、学習時または予測時にサイズが計算されたパディングを追加します。ストライドが 1 より大きい場合、出力サイズはceil(inputSize/stride)
になります。ここで、inputSize
は入力の高さまたは幅、stride
は対応する次元のストライドです。可能な場合、上下および左右に同じ量のパディングが追加されます。垂直方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは下に追加されます。水平方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは右に追加されます。非負の整数
p
— サイズp
のパディングを入力のすべての端に追加します。非負の整数のベクトル
[a b]
— サイズa
のパディングを入力の上下に追加し、サイズb
のパディングを左右に追加します。非負の整数のベクトル
[t b l r]
— サイズがt
、b
、l
、r
のパディングを、それぞれ入力の上、下、左、右に追加します。
例: 'Padding',1
は、入力の上下に 1 行のパディングを追加し、入力の左右に 1 列のパディングを追加します。
例: 'Padding','same'
は、(ストライドが 1 の場合) 出力サイズが入力サイズと同じになるようにパディングを追加します。
プロパティ
平均プーリング
PoolSize
— プーリング領域の次元
2 つの正の整数のベクトル
プーリング領域の次元。2 つの正の整数のベクトル [h w]
として指定します。h
は高さ、w
は幅です。層を作成する場合、PoolSize
をスカラーとして指定して、両方の次元に同じ値を使用できます。
ストライドの次元 Stride
がそれぞれのプーリングの次元より小さい場合、プーリング領域が重なります。
パディングの次元 PaddingSize
は、プーリング領域の次元 PoolSize
より小さくなければなりません。
例: [2 1]
は、高さが 2、幅が 1 のプーリング領域を指定します。
Stride
— 入力を走査するステップ サイズ
[1 1]
(既定値) | 2 つの正の整数のベクトル
入力を垂直方向および水平方向に走査するステップ サイズ。2 つの正の整数のベクトル [a b]
として指定します。a
は垂直方向のステップ サイズ、b
は水平方向のステップ サイズです。層を作成する場合、Stride
をスカラーとして指定して、両方の次元に同じ値を使用できます。
ストライドの次元 Stride
がそれぞれのプーリングの次元より小さい場合、プーリング領域が重なります。
パディングの次元 PaddingSize
は、プーリング領域の次元 PoolSize
より小さくなければなりません。
例: [2 3]
は、垂直方向のステップ サイズとして 2、水平方向のステップ サイズとして 3 を指定します。
PaddingSize
— パディングのサイズ
[0 0 0 0]
(既定値) | 4 つの非負の整数のベクトル
入力の境界に適用するパディングのサイズ。4 つの非負の整数のベクトル [t b l r]
として指定します。t
は上に適用されるパディング、b
は下に適用されるパディング、l
は左に適用されるパディング、r
は右に適用されるパディングです。
層の作成時に、名前と値のペアの引数 'Padding'
を使用してパディングのサイズを指定します。
例: [1 1 2 2]
は、入力の上下に 1 行のパディングを追加し、入力の左右に 2 列のパディングを追加します。
PaddingMode
— パディングのサイズを決定するメソッド
'manual'
(既定値) | 'same'
パディングのサイズを決定するメソッド。'manual'
または 'same'
として指定します。
PaddingMode
の値は、層の作成時に指定した 'Padding'
値に基づいて自動的に設定されます。
'Padding'
オプションをスカラーまたは非負の整数のベクトルに設定した場合、PaddingMode
は'manual'
に自動的に設定されます。'Padding'
オプションを'same'
に設定した場合、PaddingMode
が'same'
に自動的に設定されます。ストライドが 1 である場合、出力サイズが入力サイズと同じになるように、学習時にパディングのサイズが計算されます。ストライドが 1 より大きい場合、出力サイズはceil(inputSize/stride)
になります。ここで、inputSize
は入力の高さまたは幅、stride
は対応する次元のストライドです。可能な場合、上下および左右に同じ量のパディングが追加されます。垂直方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは下に追加されます。水平方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは右に追加されます。
PaddingValue
— 入力のパディングに使用する値
0
(既定値) | "mean"
入力のパディングに使用する値。0
または "mean"
として指定します。
Padding
オプションを使用して入力にパディングを追加する場合、適用されるパディングの値は次のいずれかになります。
0
— 入力はPadding
プロパティで指定した位置にゼロでパディングされます。パディングされた領域は、外周のプーリング領域の平均値の計算に含められます。"mean"
— 入力は、Padding
オプションで指定した位置にプーリング領域の平均でパディングされます。パディングされた領域は、各プーリング領域の平均値の計算対象から事実上除外されます。
Padding
— パディングのサイズ
[0 0]
(既定値) | 2 つの非負の整数のベクトル
メモ
Padding
プロパティは将来のリリースで削除される予定です。代わりに PaddingSize
を使用してください。層の作成時に、名前と値のペアの引数 'Padding'
を使用してパディングのサイズを指定します。
入力の境界に垂直方向および水平方向に適用するパディングのサイズ。2 つの非負の整数のベクトル [a b]
として指定します。a
は入力データの上下に適用されるパディング、b
は左右に適用されるパディングです。
例: [1 1]
は、入力の上下に 1 行のパディングを追加し、入力の左右に 1 列のパディングを追加します。
層
NumInputs
— 入力の数
1
(既定値)
この プロパティ は読み取り専用です。
層への入力の数。1
として返されます。この層は単一の入力のみを受け入れます。
データ型: double
InputNames
— 入力名
{'in'}
(既定値)
この プロパティ は読み取り専用です。
入力名。{'in'}
として返されます。この層は単一の入力のみを受け入れます。
データ型: cell
NumOutputs
— 出力の数
1
(既定値)
この プロパティ は読み取り専用です。
層からの出力の数。1
として返されます。この層には単一の出力のみがあります。
データ型: double
OutputNames
— 出力名
{'out'}
(既定値)
この プロパティ は読み取り専用です。
出力名。{'out'}
として返されます。この層には単一の出力のみがあります。
データ型: cell
例
平均プーリング層の作成
avg1
という名前の平均プーリング層を作成します。
layer = averagePooling2dLayer(2,Name="avg1")
layer = AveragePooling2DLayer with properties: Name: 'avg1' Hyperparameters PoolSize: [2 2] Stride: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0 0] PaddingValue: 0
Layer
配列に平均プーリング層を含めます。
layers = [ ...
imageInputLayer([28 28 1])
convolution2dLayer(5,20)
reluLayer
averagePooling2dLayer(2)
fullyConnectedLayer(10)
softmaxLayer]
layers = 6x1 Layer array with layers: 1 '' Image Input 28x28x1 images with 'zerocenter' normalization 2 '' 2-D Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0] 3 '' ReLU ReLU 4 '' 2-D Average Pooling 2x2 average pooling with stride [1 1] and padding [0 0 0 0] 5 '' Fully Connected 10 fully connected layer 6 '' Softmax softmax
プーリング領域が重なっていない平均プーリング層の作成
プーリング領域が重なっていない平均プーリング層を作成します。
layer = averagePooling2dLayer(2,'Stride',2)
layer = AveragePooling2DLayer with properties: Name: '' Hyperparameters PoolSize: [2 2] Stride: [2 2] PaddingMode: 'manual' PaddingSize: [0 0 0 0] PaddingValue: 0
矩形領域の高さと幅 (プール サイズ) はどちらも 2 です。イメージを垂直方向および水平方向に走査するステップ サイズ (ストライド) も 2 であるため、プーリング領域は重なりません。
Layer
配列に領域が重なっていない平均プーリング層を含めます。
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer averagePooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer]
layers = 6x1 Layer array with layers: 1 '' Image Input 28x28x1 images with 'zerocenter' normalization 2 '' 2-D Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0] 3 '' ReLU ReLU 4 '' 2-D Average Pooling 2x2 average pooling with stride [2 2] and padding [0 0 0 0] 5 '' Fully Connected 10 fully connected layer 6 '' Softmax softmax
プーリング領域が重なっている平均プーリング層の作成
プーリング領域が重なっている平均プーリング層を作成します。
layer = averagePooling2dLayer([3 2],'Stride',2)
layer = AveragePooling2DLayer with properties: Name: '' Hyperparameters PoolSize: [3 2] Stride: [2 2] PaddingMode: 'manual' PaddingSize: [0 0 0 0] PaddingValue: 0
この層は、サイズ [3 2] のプーリング領域を作成し、各領域の 6 つの要素の平均を取ります。Stride
に含まれる次元がそれぞれのプーリングの次元 PoolSize
より小さいため、プーリング領域が重なります。
Layer
配列に領域が重なっている平均プーリング層を含めます。
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer averagePooling2dLayer([3 2],'Stride',2) fullyConnectedLayer(10) softmaxLayer]
layers = 6x1 Layer array with layers: 1 '' Image Input 28x28x1 images with 'zerocenter' normalization 2 '' 2-D Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0] 3 '' ReLU ReLU 4 '' 2-D Average Pooling 3x2 average pooling with stride [2 2] and padding [0 0 0 0] 5 '' Fully Connected 10 fully connected layer 6 '' Softmax softmax
アルゴリズム
2 次元平均プーリング層
2 次元平均プーリング層は、入力を矩形のプーリング領域に分割し、各領域の平均を計算することによって、ダウンサンプリングを実行します。
層がプーリングを行う次元は、層の入力によって次のように異なります。
2 次元イメージ入力 (2 つの空間次元内のピクセル、ならびにチャネルと観測値に対応する 4 次元のデータ) の場合、層は空間次元でプーリングします。
2 次元イメージ シーケンス入力 (2 つの空間次元内のピクセル、ならびにチャネルと観測値とタイム ステップに対応する 5 次元のデータ) の場合、層は 2 つの空間次元でプーリングします。
1 次元イメージ シーケンス入力 (1 つの空間次元内のピクセル、ならびにチャネルと観測値とタイム ステップに対応する 4 次元のデータ) の場合、層は空間次元と時間次元でプーリングします。
層の入力形式と出力形式
層配列内または層グラフ内の層は、形式を整えた dlarray
オブジェクトとして後続の層にデータを渡します。dlarray
オブジェクトの形式は文字列で、各文字はデータ内の対応する次元を表します。この形式には次の文字が 1 つ以上含まれています。
"S"
— 空間"C"
— チャネル"B"
— バッチ"T"
— 時間"U"
— 指定なし
たとえば、4 次元配列として表された 2 次元イメージ データがあり、最初の 2 つの次元がイメージの空間次元に対応し、3 番目の次元がイメージのチャネルに対応し、4 番目の次元がバッチ次元に対応している場合、このイメージ データは "SSCB"
(空間、空間、チャネル、バッチ) という形式で表されます。
functionLayer
オブジェクトを使用するか、関数 forward
と関数 predict
を dlnetwork
オブジェクトと共に使用して、カスタム層の開発などの自動微分ワークフローで、これらの dlarray
オブジェクトを操作できます。
次の表は、AveragePooling2DLayer
オブジェクトでサポートされている入力形式、および対応する出力形式を示しています。ソフトウェアが nnet.layer.Formattable
クラスを継承していないカスタム層、または Formattable
プロパティが 0
(false
) に設定された FunctionLayer
オブジェクトに層の出力を渡す場合、その層は形式を整えていない dlarray
オブジェクトを受け取り、この表に示された形式に従って次元が並べられます。ここには一部の形式のみを示します。層では、追加の "S"
(空間) 次元または "U"
(未指定) 次元をもつ形式など、追加の形式がサポートされている場合があります。
入力形式 | 出力形式 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
参照
[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.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
PaddingValue
プロパティの'mean'
の設定を使用することで、C/C++ コードを生成できます。MATLAB Function ブロックを使用して深層学習機能を実装する Simulink® モデルでは、非ゼロのパディング値をもつ平均プーリング層がネットワークに含まれている場合、シミュレーションでエラーが発生します。このような場合、MATLAB Function の代わりに Deep Neural Networks ライブラリのブロックを使用して、深層学習機能を実装します。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
パディング サイズが対称である場合、
PaddingValue
プロパティの'mean'
の設定を使用することで、NVIDIA® の cuDNN ライブラリおよび TensorRT ライブラリを使用してコードを生成できます。たとえば、PaddingSize
プロパティをベクトル[2 2 3 3]
として指定し、入力の上下に 2 行のパディングを追加し、入力の左右に 3 列のパディングを追加します。MATLAB Function ブロックを使用して深層学習機能を実装する Simulink モデルでは、非ゼロのパディング値をもつ平均プーリング層がネットワークに含まれている場合、シミュレーションでエラーが発生します。このような場合、MATLAB Function の代わりに Deep Neural Networks ライブラリのブロックを使用して、深層学習機能を実装します。
バージョン履歴
R2016a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)