이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

averagePooling2dLayer

평균값 풀링 계층

설명

평균값 풀링 계층은 입력값을 직사각형 풀링 영역으로 나누고 각 영역의 평균 값을 계산하여 다운샘플링을 수행합니다.

생성

설명

layer = averagePooling2dLayer(poolSize)는 평균값 풀링 계층을 만들고 PoolSize 속성을 설정합니다.

예제

layer = averagePooling2dLayer(poolSize,Name,Value)는 이름-값 쌍을 사용하여 선택 사항인 StrideName 속성을 설정합니다. 입력값 채우기를 지정하려면 'Padding' 이름-값 쌍 인수를 사용하십시오. 예를 들어, averagePooling2dLayer(2,'Stride',2)는 풀 크기가 [2 2]이고 스트라이드가 [2 2]인 평균값 풀링 계층을 만듭니다. 여러 개의 이름-값 쌍을 지정할 수 있습니다. 각 속성 이름을 작은따옴표로 묶습니다.

입력 인수

모두 확장

이름-값 쌍의 인수

쉼표로 구분된 이름-값 쌍 인수를 사용하여 계층 입력값의 가장자리에 더할 0 채우기의 크기를 지정하거나 Stride 속성과 Name 속성을 설정합니다. 이름을 작은따옴표로 묶습니다.

예: averagePooling2dLayer(2,'Stride',2)는 풀 크기가 [2 2]이고 스트라이드가 [2 2]인 평균값 풀링 계층을 만듭니다.

입력값 가장자리 채우기로, '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인 경우) 출력 크기가 입력 크기와 같아지도록 채우기를 더합니다.

속성

모두 확장

평균값 풀링

풀링 영역의 치수로, 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]은 입력값의 위와 아래에 채우기 한 행을 더하고, 왼쪽과 오른쪽에 채우기 한 열을 더합니다.

계층

계층 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 계층 그래프에 계층을 포함하려면 비어 있지 않은 고유한 계층 이름을 지정해야 합니다. 이 계층을 사용하여 시리즈 네트워크를 훈련시킬 때 Name''로 설정하면, 소프트웨어가 훈련 시점에 해당 계층에 자동으로 이름을 할당합니다.

데이터형: char | string

계층의 입력값 개수. 이 계층은 단일 입력값만 받습니다.

데이터형: double

계층의 입력값 이름. 이 계층은 단일 입력값만 받습니다.

데이터형: cell

계층의 출력값 개수. 이 계층은 단일 출력값만 가집니다.

데이터형: double

계층의 출력값 이름. 이 계층은 단일 출력값만 가집니다.

데이터형: 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]

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   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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]

직사각형 영역(풀 크기)의 높이와 너비는 모두 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   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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]

이 계층은 크기가 [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   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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

세부 정보

모두 확장

참고 문헌

[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.

확장 기능

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

R2016a에 개발됨