averagePooling2dLayer
平均プーリング層
説明
2 次元平均プーリング層は、入力を矩形のプーリング領域に分割し、各領域の平均を計算することによって、ダウンサンプリングを実行します。
作成
説明
は、1 つ以上の名前と値の引数を使用して、オプションのプロパティを設定します。 layer = averagePooling2dLayer(poolSize,Name=Value)
入力引数
プーリング領域の次元。2 つの正の整数のベクトル [h w] として指定します。h は高さ、w は幅です。層を作成する場合、poolSize をスカラーとして指定して、両方の次元に同じ値を使用できます。
ストライドの次元 Stride がそれぞれのプーリングの次元より小さい場合、プーリング領域が重なります。
パディングの次元 PaddingSize は、プーリング領域の次元 poolSize より小さくなければなりません。
例: [2 1] は、高さが 2、幅が 1 のプーリング領域を指定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: averagePooling2dLayer(2,Stride=2) は、プール サイズが [2 2]、ストライドが [2 2] の平均プーリング層を作成します。
入力を垂直方向および水平方向に走査するステップ サイズ。2 つの正の整数のベクトル [a b] として指定します。a は垂直方向のステップ サイズ、b は水平方向のステップ サイズです。層を作成する場合、Stride をスカラーとして指定して、両方の次元に同じ値を使用できます。
ストライドの次元 Stride がそれぞれのプーリングの次元より小さい場合、プーリング領域が重なります。
パディングの次元 PaddingSize は、プーリング領域の次元 PoolSize より小さくなければなりません。
例: [2 3] は、垂直方向のステップ サイズとして 2、水平方向のステップ サイズとして 3 を指定します。
入力の端のパディング。次のいずれかの値として指定します。
"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 の場合) 出力サイズが入力サイズと同じになるようにパディングを追加します。
入力のパディングに使用する値。0 または "mean" として指定します。
Padding オプションを使用して入力にパディングを追加する場合、適用されるパディングの値は次のいずれかになります。
0— 入力はPaddingプロパティで指定した位置にゼロでパディングされます。パディングされた領域は、外周のプーリング領域の平均値の計算に含められます。"mean"— 入力は、Paddingオプションで指定した位置にプーリング領域の平均でパディングされます。パディングされた領域は、各プーリング領域の平均値の計算対象から事実上除外されます。
プロパティ
平均プーリング
プーリング領域の次元。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は対応する次元のストライドです。可能な場合、上下および左右に同じ量のパディングが追加されます。垂直方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは下に追加されます。水平方向に追加しなければならないパディングの値が奇数の場合、余ったパディングは右に追加されます。
入力のパディングに使用する値。0 または "mean" として指定します。
Padding オプションを使用して入力にパディングを追加する場合、適用されるパディングの値は次のいずれかになります。
0— 入力はPaddingプロパティで指定した位置にゼロでパディングされます。パディングされた領域は、外周のプーリング領域の平均値の計算に含められます。"mean"— 入力は、Paddingオプションで指定した位置にプーリング領域の平均でパディングされます。パディングされた領域は、各プーリング領域の平均値の計算対象から事実上除外されます。
メモ
Padding プロパティは将来のリリースで削除される予定です。代わりに PaddingSize を使用してください。層の作成時に、名前と値の引数 Padding を使用してパディングのサイズを指定します。
入力の境界に垂直方向および水平方向に適用するパディングのサイズ。2 つの非負の整数のベクトル [a b] として指定します。a は入力データの上下に適用されるパディング、b は左右に適用されるパディングです。
例: [1 1] は、入力の上下に 1 行のパディングを追加し、入力の左右に 1 列のパディングを追加します。
層
この プロパティ は読み取り専用です。
層への入力の数。1 として格納されます。この層は単一の入力のみを受け入れます。
データ型: double
この プロパティ は読み取り専用です。
入力名。{'in'} として格納されます。この層は単一の入力のみを受け入れます。
データ型: cell
この プロパティ は読み取り専用です。
層からの出力の数。1 として格納されます。この層には単一の出力のみがあります。
データ型: double
この プロパティ は読み取り専用です。
出力名。{'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 =
6×1 Layer array with layers:
1 '' Image Input 28×28×1 images with 'zerocenter' normalization
2 '' 2-D Convolution 20 5×5 convolutions with stride [1 1] and padding [0 0 0 0]
3 '' ReLU ReLU
4 '' 2-D Average Pooling 2×2 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 =
6×1 Layer array with layers:
1 '' Image Input 28×28×1 images with 'zerocenter' normalization
2 '' 2-D Convolution 20 5×5 convolutions with stride [1 1] and padding [0 0 0 0]
3 '' ReLU ReLU
4 '' 2-D Average Pooling 2×2 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 =
6×1 Layer array with layers:
1 '' Image Input 28×28×1 images with 'zerocenter' normalization
2 '' 2-D Convolution 20 5×5 convolutions with stride [1 1] and padding [0 0 0 0]
3 '' ReLU ReLU
4 '' 2-D Average Pooling 3×2 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 つの空間次元内のピクセル、ならびにチャネルと観測値に対応する 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.
拡張機能
使用上の注意および制限:
PaddingValueプロパティの"mean"の設定を使用することで、C/C++ コードを生成できます。MATLAB Function ブロックを使用して深層学習機能を実装する Simulink® モデルでは、非ゼロのパディング値をもつ平均プーリング層がネットワークに含まれている場合、シミュレーションでエラーが発生します。このような場合、MATLAB Function の代わりに Deep Neural Networks ライブラリのブロックを使用して、深層学習機能を実装します。
コード生成では、指定なし (U) の次元をもつ
dlarrayオブジェクトをこの層に渡すことはサポートされていません。
使用上の注意および制限:
パディング サイズが対称である場合、
PaddingValueプロパティの"mean"の設定を使用することで、NVIDIA® の cuDNN ライブラリおよび TensorRT ライブラリを使用してコードを生成できます。たとえば、PaddingSizeプロパティをベクトル[2 2 3 3]として指定し、入力の上下に 2 行のパディングを追加し、入力の左右に 3 列のパディングを追加します。MATLAB Function ブロックを使用して深層学習機能を実装する Simulink モデルでは、非ゼロのパディング値をもつ平均プーリング層がネットワークに含まれている場合、シミュレーションでエラーが発生します。このような場合、MATLAB Function の代わりに Deep Neural Networks ライブラリのブロックを使用して、深層学習機能を実装します。
コード生成では、指定なし (U) の次元をもつ
dlarrayオブジェクトをこの層に渡すことはサポートされていません。
バージョン履歴
R2016a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)