maxPooling2dLayer
최댓값 풀링 계층
설명
2차원 최댓값 풀링 계층은 입력값을 직사각형 풀링 영역으로 나누어 다운샘플링을 수행한 다음 각 영역의 최댓값 계산을 수행합니다.
생성
설명
는 하나 이상의 이름-값 인수를 사용하여 선택적 속성을 설정합니다.layer = maxPooling2dLayer(poolSize,Name=Value)
입력 인수
풀링 영역의 차원으로, 2개의 양의 정수로 구성된 벡터 [h w]로 지정됩니다. 여기서 h는 높이이고 w는 너비입니다. 계층을 만들 때 두 차원에 모두 같은 값을 사용하려면 poolSize를 스칼라로 지정하면 됩니다.
스트라이드 차원 Stride가 각 풀링 차원보다 작은 경우, 풀링 영역이 중첩됩니다.
채우기 차원 PaddingSize는 풀링 영역 차원 poolSize보다 작아야 합니다.
예: [2 1]은 높이가 2이고 너비가 1인 풀링 영역을 지정합니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.
예: maxPooling2dLayer(2,Stride=3)은 풀 크기가 [2 2]이고 스트라이드가 [3 3]인 최댓값 풀링 계층을 만듭니다.
입력값을 세로와 가로 방향으로 순회하는 스텝 크기로, 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은 입력값의 위와 아래에 채우기 한 행을 더하고, 왼쪽과 오른쪽에 채우기 한 열을 더합니다.
예: Padding="same"은 (스트라이드가 1인 경우) 출력 크기가 입력 크기와 같아지도록 채우기를 더합니다.
언풀링 계층으로의 출력값 플래그로, true 또는 false로 지정됩니다.
HasUnpoolingOutputs 값이 false인 경우, 최댓값 풀링 계층은 이름이 'out'인 출력값 1개를 갖습니다.
최댓값 풀링 계층의 출력값을 최댓값 언풀링 계층의 입력값으로 사용하려면 HasUnpoolingOutputs 값을 true로 설정하십시오. 이렇게 하면 최댓값 풀링 계층은 최댓값 언풀링 계층으로 연결할 수 있는 2개의 추가적인 출력값을 갖게 됩니다.
"indices"— 풀링된 각 영역의 최댓값 인덱스."size"— 입력 특징 맵의 크기.
최댓값 언풀링 계층으로의 출력값을 사용하기 위해서는 최댓값 풀링 계층의 풀링 영역이 중첩되지 않아야 합니다.
최댓값 풀링 계층의 출력값을 언풀링하는 방법에 대한 자세한 내용은 maxUnpooling2dLayer를 참조하십시오.
속성
최댓값 풀링
풀링 영역의 차원으로, 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]는 입력값의 위와 아래에 채우기 한 행을 더하고, 왼쪽과 오른쪽에 채우기 두 열을 더합니다.
채우기 크기를 결정하는 방법으로, "manual" 또는 "same"으로 지정됩니다.
계층을 만들 때 사용자가 지정한 Padding 값을 기준으로 자동으로 PaddingMode의 값이 설정됩니다.
Padding옵션을 스칼라 또는 음이 아닌 정수로 구성된 벡터로 설정한 경우, 자동으로PaddingMode가"manual"로 설정됩니다.Padding옵션을"same"으로 설정한 경우, 자동으로PaddingMode가'same'으로 설정되고, 스트라이드가 1인 경우 출력 크기가 입력 크기와 같아지도록 채우기 크기가 훈련 시점에 계산됩니다. 스트라이드가 1보다 큰 경우, 출력 크기는ceil(inputSize/stride)가 됩니다. 여기서inputSize는 입력값의 높이 또는 너비이고stride는 대응되는 차원의 스트라이드입니다. 가능한 경우 상하좌우에 동일한 양의 채우기가 적용됩니다. 세로 방향으로 더해야 하는 채우기가 홀수 값을 갖는 경우, 아래에 추가로 채우기가 적용됩니다. 가로 방향으로 더해야 하는 채우기가 홀수 값을 갖는 경우, 오른쪽에 추가로 채우기가 적용됩니다.
참고
Padding 속성은 향후 릴리스에서 제거될 예정입니다. PaddingSize를 대신 사용하십시오. 계층을 만들 때 Padding 이름-값 인수를 사용하여 채우기 크기를 지정합니다.
입력값 테두리에 세로와 가로 방향으로 적용할 채우기 크기로, 2개의 음이 아닌 정수로 구성된 벡터 [a b]로 지정됩니다. 여기서 a는 입력 데이터의 위와 아래에 적용할 채우기이고 b는 왼쪽과 오른쪽에 적용할 채우기입니다.
예: [1 1]은 입력값의 위와 아래에 채우기 한 행을 더하고, 왼쪽과 오른쪽에 채우기 한 열을 더합니다.
언풀링 계층으로의 출력값 플래그로, true 또는 false로 지정됩니다.
HasUnpoolingOutputs 값이 false인 경우, 최댓값 풀링 계층은 이름이 'out'인 출력값 1개를 갖습니다.
최댓값 풀링 계층의 출력값을 최댓값 언풀링 계층의 입력값으로 사용하려면 HasUnpoolingOutputs 값을 true로 설정하십시오. 이렇게 하면 최댓값 풀링 계층은 최댓값 언풀링 계층으로 연결할 수 있는 2개의 추가적인 출력값을 갖게 됩니다.
"indices"— 풀링된 각 영역의 최댓값 인덱스."size"— 입력 특징 맵의 크기.
최댓값 언풀링 계층으로의 출력값을 사용하기 위해서는 최댓값 풀링 계층의 풀링 영역이 중첩되지 않아야 합니다.
최댓값 풀링 계층의 출력값을 언풀링하는 방법에 대한 자세한 내용은 maxUnpooling2dLayer를 참조하십시오.
계층
읽기 전용 속성입니다.
계층에 대한 입력값의 개수로, 1로 저장됩니다. 이 계층은 단일 입력값만 받습니다.
데이터형: double
읽기 전용 속성입니다.
입력값 이름으로, {'in'}으로 저장됩니다. 이 계층은 단일 입력값만 받습니다.
데이터형: 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]
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 Max Pooling 2×2 max pooling with stride [2 2] and padding [0 0 0 0]
5 '' Fully Connected 10 fully connected layer
6 '' Softmax softmax
중첩되는 풀링 영역을 갖는 최댓값 풀링 계층을 만듭니다.
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개의 최댓값을 구합니다. 스트라이드 차원 Stride에 각각의 풀링 차원 PoolSize보다 작은 차원이 있으므로 풀링 영역이 중첩됩니다.
Layer 배열에 중첩되는 풀링 영역을 갖는 최댓값 풀링 계층을 포함시킵니다.
layers = [ ...
imageInputLayer([28 28 1])
convolution2dLayer(5,20)
reluLayer
maxPooling2dLayer([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 Max Pooling 3×2 max 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차원 데이터), 계층은 공간 차원에 대해 풀링합니다.
1차원 영상 시퀀스 입력값의 경우(1개 공간 차원의 픽셀, 채널, 관측값, 시간 스텝에 상응하는 4차원 데이터), 계층은 공간 차원과 시간 차원에 대해 풀링합니다.
계층 배열 또는 계층 그래프의 계층은 뒤에 오는 계층에 데이터를 전달할 때 형식이 지정된 dlarray 객체로 전달합니다. dlarray 객체의 형식은 문자들로 구성된 문자열로, 각 문자는 데이터의 대응되는 차원을 설명합니다. 형식은 다음 문자 중 하나 이상으로 구성됩니다.
"S"— 공간"C"— 채널"B"— 배치"T"— 시간"U"— 지정되지 않음
4차원 배열로 표현되는 2차원 영상 데이터를 예로 들면 처음 2개 차원은 영상의 공간 차원, 3번째 차원은 영상의 채널, 4번째 차원은 배치 차원에 대응되며, "SSCB"(공간, 공간, 채널, 배치) 형식으로 설명할 수 있습니다.
functionLayer 객체를 사용하여 사용자 지정 계층을 개발하거나, dlnetwork 객체에 forward 및 predict 함수를 사용하는 경우와 같은 자동 미분 워크플로에서 이러한 dlarray 객체와 상호 작용할 수 있습니다.
이 표는 MaxPooling2DLayer 객체의 지원되는 입력 형식과 그에 대응되는 출력 형식을 보여줍니다. 계층의 출력이 nnet.layer.Formattable 클래스를 상속하지 않는 사용자 지정 계층에 전달되거나 Formattable 속성을 0(false)으로 설정한 FunctionLayer 객체에 전달될 경우 이 계층은 이 표에 나와 있는 형식에 따라 순서가 지정된 차원을 갖는, 형식이 지정되지 않은 dlarray 객체를 수신합니다. 여기에 나와 있는 형식은 일부에 불과합니다. 계층은 다른 형식도 지원할 수 있습니다(예: 추가적인 "S"(공간) 또는 "U"(미지정) 차원을 갖는 형식).
| 입력 형식 | 출력 형식 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HasUnpoolingOutputs 속성이 1(true)이면 계층의 "size" 출력값은 형식이 지정되지 않은 dlarray 객체를 출력합니다. (R2024b 이후)
R2024b 이전: 계층의 "size" 출력값은 숫자형 배열을 출력합니다.
참고 문헌
[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.
확장 기능
사용법 관련 참고 및 제한 사항:
코드 생성 시 미지정(U) 차원을 가진
dlarray객체를 이 계층으로 전달하는 것은 지원되지 않습니다.동일한 최댓값이 커널 윈도우 비대각선을 따라 존재하면
maxPooling2dLayer의 구현 차이로 인해 MATLAB®과 생성된 코드 사이에 약간의 수치적 불일치가 발생할 수 있습니다. 이 문제는 풀링된 각 영역에서 최댓값의 인덱스 불일치를 일으킬 수도 있습니다.예를 들어,
maxPooling2dLayer에 대한 다음 입력값을 살펴보겠습니다. MATLAB의 출력값은 다음과 같습니다.
동일한 입력값에 대해 생성된 코드의 출력값은 다음과 같습니다.

C/C++ 코드 생성 섹션의 사용법 관련 참고 및 제한 사항을 참조하십시오. GPU 코드 생성에도 동일한 제한 사항이 적용됩니다.
버전 내역
R2016a에 개발됨HasUnpoolingOutputs 속성이 1(true)이면 계층의 "size" 출력값은 형식이 지정되지 않은 dlarray 객체를 출력합니다. 이전 버전에서는 계층의 "size" 출력값이 숫자형 배열을 출력합니다.
대부분의 경우 동작에는 변화가 없으며 코드를 업데이트할 필요가 없습니다. 코드가 숫자형 배열 출력값에 종속되는 경우에는 dlarray 객체에서 숫자형 데이터를 추출하려면 extractdata 함수를 사용하십시오.
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.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 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)