소품집

[DL] CNN 입출력, 파라미터 계산 본문

AI

[DL] CNN 입출력, 파라미터 계산

sodayeong 2021. 10. 6. 21:43
728x90

다음 조건과 같은 이미지를 학습하는 CNN의 각 레이어별 입력 데이터와 출력 데이터의 Shape을 계산해 보고 네트워크가 학습시키는 파라미터의 개수를 계산해 보겠습니다.

  • 입력 데이터 Shape: (39, 31, 1)
  • 최종 분류 클래스: 100

Layer 1의 Shape과 파라미터

Layer 1은 1개의 Convolution Layer와 1개의 Pooling Layer로 구성됩니다.
두 레이어의 출력 데이터 shape과 파라미터는 다음과 같이 계산 가능합니다.

1.1 Convolution Layer1

convolution layer1의 기본 정보는 다음과 같다.

  • 입력 shape = (39, 31, 1)
  • 입력 채널 = 1
  • 필터 = (4, 4)
  • 출력 채널 = 20
  • stride = 1

출력 데이터(Activation Map)의 Shape 계산 식
RowSize = (N-F) / Stride + 1
ColumnSize = (N - F) / Stride + 1

 

(39-4) / 1 +1= 36
(31-4)/1 +1 = 28

 

따라서 Activation Map의 Shape는 (36, 28, 20)이 된다.
Convolution layer1에서 학습시킬 대상은 입력채널 1, 필터사이즈 (4,4), 출력채널 20개입니다.
따라서 이 레이어의 학습 파라미터는 320개(4420)

1.2 Max Pooling Layer1

Max Pooling Layer1의 입력 데이터의 Shape는 (36, 28, 20)입니다.
Max Pooling의 크기가 (2, 2)이기 때문에 출력 데이터 크기는 다음과 같습니다.

 

Pooling layer 출력 데이터 크기 계산식
OutputRowSize = InputRowSize / PoolingSize
OutputColumnSize = InputColumnSize / PoolingSize

 

36/2=18
28/2 = 14

 

따라서 출력 데이터의 Shape은 (18, 14, 20)이 된다.
Max Pooling Layer에서 학습 파라미터는 없습니다.

 

2.1 Layer 2의 Shape과 파라미터

Layer 2는 1개의 Convolution Layer와 1개의 Pooling Layer로 구성됩니다.
두 레이어의 출력 데이터 Shape과 파라미터는 다음과 같이 계산할 수 있습니다.

2.2 Convolution Layer2

Convolution Layer2의 기본 정보는 다음과 같습니다.

  • 입력 데이터 Shape = (18, 14, 20)
  • 입력 채널 = 20
  • 필터 = (3, 3, 40)
  • 출력 채널 = 40
  • Stride = 1

입력 이미지에 Shape이 (3, 3) 인 필터를 40개 적용할 경우 출력 데이터(Activation Map)의 Shape을 계산하는 과정은 다음과 같다.
RowSize = (18-3)/1 +1 = 16
ColumnSize = (14-3)/1+1 = 12

 

따라서 Activation Map의 Shape는 (16, 12, 40)이 된다.
Convolution layer2에서 학습시킬 대상은 입력채널 20, 필터사이즈 (3, 3), 출력채널 40개입니다.
따라서 이 레이어의 학습 파라미터는 7200개(2033*40)

2.3 Max Pooling Layer2

Max Pooling Layer 2의 입력 데이터의 shpe는 (16, 12, 40)입니다.
Max Pooling 크기가 (2, 2)이기 때문에 출력 데이터 크기는 다음과 같이 계산될 수 있습니다.

 

16/2 = 8
12/2 = 6

 

따라서 출력 데이터의 Shape는 (8, 6, 40)입니다.
Max Pooling Layer에서 학습 파라미터가 없습니다.

 

3.1 Layer 3의 Shape과 파라미터

Layer 3는 1개의 Convolution Layer와 1개의 Pooling Layer로 구성됩니다.
두 레이어의 출력 데이터 Shape과 파라미터는 다음과 같이 계산할 수 있습니다.

3.2 Convolution Layer3

Convolution Layer3의 기본 정보는 다음과 같습니다.

  • 입력 데이터 Shape = (8, 6, 40)
  • 입력 채널 = 40
  • 필터 = (3, 3)
  • 출력 채널 = 60
  • Stride = 1

입력 이미지에 Shape이 (3, 3) 인 필터를 60개 적용할 경우 출력 데이터(Activation Map)의 Shape을 계산하는 과정은 다음과 같다.

RowSize = (8-3)/1+1 = 6
ColumnSize = (6-3)/1+1 = 4

 

따라서 Activation Map의 Shape는 (6, 4, 60)이 된다.
Convolution layer 2에서 학습시킬 대상은 입력채널 40, 필터사이즈 (3, 3), 출력채널 40개입니다.
따라서 이 레이어의 학습 파라미터는 21,600개(4033*60)

3.3 Max Pooling Layer2

Max Pooling Layer 2의 입력 데이터의 shape는 (6, 4, 60)입니다.
Max Pooling 크기가 (2, 2)이기 때문에 출력 데이터 크기는 다음과 같이 계산될 수 있습니다.

6/2 = 3
4/2 = 2

따라서 출력 데이터의 Shape는 (3, 2, 60)입니다.
Max Pooling Layer에서 학습 파라미터가 없습니다.

 

4.1 Layer 4의 Shape과 파라미터

Layer 4는 1개의 Convolution Layer로 구성됩니다.
이 레이어의 출력 데이터 Shape과 파라미터는 다음과 같이 계산할 수 있습니다.

4.2 Convolution Layer 4

Convolution Layer2의 기본 정보는 다음과 같습니다.

  • 입력 데이터 Shape = (3, 2, 60)
  • 입력 채널 = 60
  • 필터 = (2, 2)
  • 출력 채널 = 80
  • Stride = 1

입력 이미지에 Shape이 (2, 2) 인 필터를 60개 적용할 경우 출력 데이터(Activation Map)의 Shape을 계산하는 과정은 다음과 같다.

RowSize = (3-2)/1+1 = 2
ColumnSize = (2-2)/1+1 = 1

따라서 Activation Map의 Shape는 (2, 1, 80)이 된다.
Convolution layer2에서 학습시킬 대상은 입력채널 60, 필터사이즈 (2, 2), 출력채널 80개입니다.
따라서 이 레이어의 학습 파라미터는 19,200개(6022*80)

4.5 Flatten Layer의 Shape

Flatten Layer는 CNN의 데이터 타입을 Fully Connected Neural Network의 형태로 변경하는 레이어입니다.
Flatten 레이어에는 파라미터가 존재하지 않고, 입력 데이터의 Shape 변경만 수행합니다.

  • 입력 데이터 = (2, 1, 80)
  • 출력 데이터 = (160, 1)

이 때, weight shape는 (100, 160)입니다. Softmax 레이어에 파라미터는 160,000개(100*160)

이 CNN을 다음과 같이 도식할 수 있다.

 

 

source
http://taewan.kim/post/cnn/
위 포스팅 참조

728x90
Comments