이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
averagePooling2dLayer
평균값 풀링 계층
설명
2차원 평균값 풀링 계층은 입력값을 직사각형 풀링 영역으로 나누어 다운샘플링을 수행한 다음 각 영역의 평균값 계산을 수행합니다.
생성
설명
는 평균값 풀링 계층을 만들고 layer
= averagePooling2dLayer(poolSize
)PoolSize
속성을 설정합니다.
는 이름-값 쌍을 사용하여 선택적 layer
= averagePooling2dLayer(poolSize
,Name,Value
)Stride
와 Name
속성을 설정합니다. 입력값 채우기를 지정하려면 'Padding'
이름-값 쌍 인수를 사용하십시오. 예를 들어, averagePooling2dLayer(2,'Stride',2)
는 풀 크기가 [2 2]
이고 스트라이드가 [2 2]
인 평균값 풀링 계층을 만듭니다. 여러 개의 이름-값 쌍을 지정할 수 있습니다. 각 속성 이름을 작은따옴표로 묶습니다.
입력 인수
쉼표로 구분된 이름-값 쌍 인수를 사용하여 계층 입력값의 가장자리에 더할 0 채우기의 크기를 지정하거나 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
은 입력값의 위와 아래에 채우기 한 행을 더하고, 왼쪽과 오른쪽에 채우기 한 열을 더합니다.
예: '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]
는 입력값의 위와 아래에 채우기 한 행을 더하고, 왼쪽과 오른쪽에 채우기 두 열을 더합니다.
PaddingMode
— 채우기 크기를 결정하는 방법
'manual'
(디폴트 값) | 'same'
채우기 크기를 결정하는 방법으로, 'manual'
또는 'same'
으로 지정됩니다.
계층을 만들 때 사용자가 지정한 'Padding'
값을 기준으로 자동으로 PaddingMode
의 값이 설정됩니다.
'Padding'
옵션을 스칼라 또는 음이 아닌 정수로 구성된 벡터로 설정한 경우, 자동으로PaddingMode
가'manual'
로 설정됩니다.'Padding'
옵션을'same'
으로 설정한 경우, 자동으로PaddingMode
가'same'
으로 설정되고, 스트라이드가 1인 경우 출력 크기가 입력 크기와 같아지도록 채우기 크기가 훈련 시점에 계산됩니다. 스트라이드가 1보다 큰 경우, 출력 크기는ceil(inputSize/stride)
가 됩니다. 여기서inputSize
는 입력값의 높이 또는 너비이고stride
는 대응되는 차원의 스트라이드입니다. 가능한 경우 상하좌우에 동일한 양의 채우기가 적용됩니다. 세로 방향으로 더해야 하는 채우기가 홀수 값을 갖는 경우, 아래에 추가로 채우기가 적용됩니다. 가로 방향으로 더해야 하는 채우기가 홀수 값을 갖는 경우, 오른쪽에 추가로 채우기가 적용됩니다.
PaddingValue
— 입력값을 채우는 데 사용되는 값
0
(디폴트 값) | "mean"
입력값을 채우는 데 사용되는 값으로, 0
또는 "mean"
으로 지정됩니다.
Padding
옵션을 사용하여 입력값에 채우기를 추가하는 경우, 적용되는 채우기의 값은 다음 중 하나일 수 있습니다.
0
— 입력값은Padding
속성으로 지정된 위치에서 0으로 채워집니다. 채워진 영역은 가장자리를 따라 수행되는 풀링 영역의 평균값 계산에 포함됩니다."mean"
— 입력값은Padding
옵션으로 지정된 위치에서 풀링 영역의 평균값으로 채워집니다. 채워진 영역은 각 풀링 영역의 평균값 계산에서 사실상 제외됩니다.
Padding
— 채우기 크기
[0 0]
(디폴트 값) | 2개의 음이 아닌 정수로 구성된 벡터
참고
Padding
속성은 향후 릴리스에서 제거될 예정입니다. PaddingSize
를 대신 사용하십시오. 계층을 만들 때 'Padding'
이름-값 쌍 인수를 사용하여 채우기 크기를 지정합니다.
입력값 테두리에 세로와 가로 방향으로 적용할 채우기 크기로, 2개의 음이 아닌 정수로 구성된 벡터 [a b]
로 지정됩니다. 여기서 a
는 입력 데이터의 위와 아래에 적용할 채우기이고 b
는 왼쪽과 오른쪽에 적용할 채우기입니다.
예: [1 1]
은 입력값의 위와 아래에 채우기 한 행을 더하고, 왼쪽과 오른쪽에 채우기 한 열을 더합니다.
계층
Name
— 계층 이름
''
(디폴트 값) | 문자형 벡터 | string형 스칼라
계층 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. Layer
배열 입력값에 대해 trainNetwork
, assembleNetwork
, layerGraph
, dlnetwork
함수는 이름이 ''
인 계층에 자동으로 이름을 할당합니다.
데이터형: char
| string
NumInputs
— 입력값의 개수
1
(디폴트 값)
읽기 전용 속성입니다.
계층의 입력값 개수. 이 계층은 단일 입력값만 받습니다.
데이터형: double
InputNames
— 입력값 이름
{"in"}
(디폴트 값)
읽기 전용 속성입니다.
계층의 입력값 이름. 이 계층은 단일 입력값만 받습니다.
데이터형: cell
NumOutputs
— 출력값 개수
1
(디폴트 값)
읽기 전용 속성입니다.
계층의 출력값 개수. 이 계층은 단일 출력값만 가집니다.
데이터형: double
OutputNames
— 출력값 이름
{'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
classificationLayer]
layers = 7x1 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 7 '' Classification Output crossentropyex
비중첩 풀링 영역을 갖는 평균값 풀링 계층 만들기
비중첩 풀링 영역을 갖는 평균값 풀링 계층을 만듭니다.
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 classificationLayer]
layers = 7x1 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 7 '' Classification Output crossentropyex
중첩되는 풀링 영역을 갖는 평균값 풀링 계층 만들기
중첩되는 풀링 영역을 갖는 평균값 풀링 계층을 만듭니다.
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 classificationLayer]
layers = 7x1 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 7 '' Classification Output crossentropyex
알고리즘
2차원 평균값 풀링 계층
2차원 평균값 풀링 계층은 입력값을 직사각형 풀링 영역으로 나누어 다운샘플링을 수행한 다음 각 영역의 평균값 계산을 수행합니다.
계층이 풀링하는 차원은 계층 입력값에 따라 다릅니다.
2차원 영상 입력값의 경우(2개 공간 차원의 픽셀, 채널, 관측값에 상응하는 4차원 데이터), 계층은 공간 차원에 대해 풀링합니다.
2차원 영상 시퀀스 입력값의 경우(2개 공간 차원의 픽셀, 채널, 관측값, 시간 스텝에 상응하는 5차원 데이터), 계층은 공간 차원에 대해 풀링합니다.
1차원 영상 시퀀스 입력값의 경우(1개 공간 차원의 픽셀, 채널, 관측값, 시간 스텝에 상응하는 4차원 데이터), 계층은 공간 차원과 시간 차원에 대해 풀링합니다.
계층 입력 형식 및 출력 형식
계층 배열 또는 계층 그래프의 계층은 뒤에 오는 계층에 데이터를 전달할 때 형식이 지정된 dlarray
객체로 전달합니다. dlarray
객체의 형식은 문자들로 구성된 문자열로, 각 문자는 데이터의 대응되는 차원을 설명합니다. 형식은 다음 문자 중 하나 이상으로 구성됩니다.
"S"
— 공간"C"
— 채널"B"
— 배치"T"
— 시간"U"
— 지정되지 않음
4차원 배열로 표현된 2차원 영상 데이터를 예로 들면 처음 2개 차원은 영상의 공간 차원, 3번째 차원은 영상의 채널, 4번째 차원은 배치 차원에 대응되며, "SSCB"
(공간, 공간, 채널, 배치) 형식으로 설명될 수 있습니다.
functionLayer
객체를 사용하여 사용자 지정 계층을 개발하거나, dlnetwork
객체에 forward
및 predict
함수를 사용할 때와 같은 자동 미분 워크플로에서 이러한 dlarray
객체와 상호 작용할 수 있습니다.
이 표는 AveragePooling2DLayer
객체의 지원되는 입력 형식과 그에 대응되는 출력 형식을 보여줍니다. 계층의 출력이 nnet.layer.Formattable
클래스를 상속하지 않는 사용자 지정 계층에 전달되거나 Formattable
속성을 0
(false)으로 설정한 FunctionLayer
객체에 전달될 경우 이 계층은 이 표에 나와 있는 형식에 대응하는 순서의 차원을 갖는, 형식이 지정되지 않은 dlarray
객체를 수신합니다.
입력 형식 | 출력 형식 |
---|---|
|
|
|
|
|
|
|
|
dlnetwork
객체에서 AveragePooling2DLayer
객체는 다음 입력 형식과 출력 형식의 결합도 지원합니다.
입력 형식 | 출력 형식 |
---|---|
|
|
|
|
|
|
|
|
|
|
참고 문헌
[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'
을 사용할 수 있습니다.MKL-DNN
, ARM Compute와 같은 타사 라이브러리를 사용한 코드 생성 시 평균값 채우기는 지원되지 않습니다.MATLAB Function 블록을 사용하여 딥러닝 기능을 구현하는 Simulink® 모델의 경우 신경망에 0이 아닌 채우기 값을 갖는 평균 풀링 계층이 포함되어 있으면 시뮬레이션에 오류가 발생합니다. 이러한 경우 MATLAB Function 대신 Deep Neural Networks 라이브러리의 블록을 사용하여 딥러닝 기능을 구현합니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
cuDNN
, ARM Compute와 같은 타사 라이브러리를 사용한 코드 생성 시 0이 아닌 채우기 값은 지원되지 않습니다.MATLAB Function 블록을 사용하여 딥러닝 기능을 구현하는 Simulink 모델의 경우 신경망에 0이 아닌 채우기 값을 갖는 평균 풀링 계층이 포함되어 있으면 시뮬레이션에 오류가 발생합니다. 이러한 경우 MATLAB Function 대신 Deep Neural Networks 라이브러리의 블록을 사용하여 딥러닝 기능을 구현합니다.
버전 내역
R2016a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 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)