일반 DNN은 기본적으로 1차원 형태의 데이터를 사용한다. 따라서 이미지가 입력될 경우, 이것을 flatten 시켜서 한줄의 데이터로 만들게 된다. 이 과정에서 이미지의 공간적 정보가 손실되어, 특징 추출과 학습이 비효율적이고 정확도의 한계가 발생한다는 문제가 있었다. 그래서 CNN(Convolutional Neural Network)을 통해 이미지를 raw input으로 받음으로써, 공간적/지역적 정보를 그대로 유지한채 특성들의 계층을 빌드업하게 된다.
<식 3>로 계산된 출력 데이터(Activation Map)의 Shape은 (36, 28, 20) 입니다. Convolution Layer 1에서 학습시킬 대상은 입력 채널 1, 필터 사이즈 (4, 4), 출력 채널 20개 입니다. 따라서 이 레이어의 학습 파라미터는 320개 (4X4X20) 입니다.
입력 채널: 1
출력 데이터(Activation Map) Shape: (36, 28, 20)
학습 파라미터: 320개 (1 X 4 X 4 X 20)
3.1.2 Max Pooling Layer 1
Max Pooling Layer 1의 입력 데이터의 Shape은 (36, 28, 20)입니다. Max Pooling 크기가 (2, 2)이기 때문에 출력 데이터 크기는 <식 4>와 같이 계산될 수 있습니다.
<식 4>으로 계산된 출력 데이터의 Shape은 (18, 14, 20) 입니다. Max Pooling Layer에서 학습 파라미터가 없습니다.
입력 채널: 20
출력 데이터 Shape: (18, 14, 20)
학습 파라미터: 0
3.2 Layer 2의 Shape과 파라미터
Layer 2는 1개의 Convolution Layer와 1개의 Pooling Layer로 구성됩니다. 두 레이어이 출력 데이터 shape과 파라미터는 다음과 같이 계산할 수 있습니다.
3.2.1 Convolution Layer 2
Convolution Layer 2의 기본 정보는 다음과 같습니다.
입력 데이터 Shape = (18, 14, 20)
입력 채널 = 20
필터 = (3, 3, 40)
출력 채널 = 40
Stride = 1
입력 이미지에 Shape이 (3, 3)인 필터 40개를 적용할 경우 출력 데이터(Activation Map)의 Shape을 계산하는 과정은 <식 5>과 같습니다.
식 5. Convolution Layer 2의 Activation Map 크기 계산 RowSize = (18-3)+1/1 = 16 ColumnSize = (14-3)+1/1 = 12
<식 5>로 계산된 출력 데이터(Activation Map)의 Shape은 (16, 12, 40)입니다. Convolution Layer 1에서 학습시킬 대상은 입력 채널 20, 필터 사이즈 (3, 3), 출력 필터 40개입니다. 따라서 이 레이어의 학습 파라미터는 7200개 (20 X 3 X 3 X 40) 입니다.
입력 채널: 20
출력 데이터(Activation Map) Shape: (16, 12, 40)
학습 파라미터: 7,200개 (20X3X3X40)
3.2.2 Max Pooling Layer 2
Max Pooling Layer 2의 입력 데이터의 Shape은 (16, 12, 40)입니다. Max Pooling 크기가 (2, 2)이기 때문에 출력 데이터 크기는 <식 6>와 같이 계산될 수 있습니다.
식 6. Max Pooling Layer 2의 출력 데이터 크기 계산 16/2 = 8 12/2 = 6
<식 6>로 계산된 출력 데이터(Activation Map)의 Shape은 (8, 6, 40) 입니다. Max Pooling Layer에서 학습 파라미터가 없습니다.
입력 채널: 40
출력 데이터 Shape: (8, 6, 40)
학습 파라미터: 0
3.3 Layer 3의 Shape과 파라미터
Layer 3도 1개의 Convolution Layer와 1개의 Pooling Layer로 구성됩니다. 두 레이어이 출력 데이터 shape과 파라미터는 다음과 같이 계산할 수 있습니다.
3.3.1 Convolution Layer 3
Convolution Layer 3의 기본 정보는 다음과 같습니다.
입력 데이터 Shape = (8, 6, 40)
입력 채널 = 40
필터=(3, 3)
출력 채널 = 60
Stride = 1
입력 이미지에 Shape이 (3, 3)인 필터 60개를 적용할 경우 출력 데이터(Activation Map)의 Shape을 계산하는 과정은 <식 7>과 같습니다.
식 7. Convolution Layer 3의 Activation Map 크기 계산 RowSize = (8-3)+1/1 = 6 ColumnSize = (6-3)+1/1 = 4
<식 7>로 계산된 출력 데이터(Activation Map)의 Shape은 (6, 4, 60)입니다. Convolution Layer 1에서 학습시킬 대상은 (3, 3) 필터 60개입니다. 따라서 이 레이어의 학습 파라미터는 21,600개 (40X3X3X60) 입니다.
입력 채널: 40
출력 데이터(Activation Map) Shape: (6, 4, 60)
학습 파라미터: 21,600개 (40X3X3X60)
3.3.2 Max Pooling Layer 3
Max Pooling Layer 3의 입력 데이터의 Shape은 (6, 4, 60)입니다. Max Pooling 크기가 (2, 2)이기 때문에 출력 데이터 크기는 <식 8>과 같이 계산될 수 있습니다.
식 8. Max Pooling Layer 3의 출력 데이터 크기 계산 6/2 = 3 4/2 = 2
<식 8>로 계산된 출력 데이터(Activation Map)의 Shape은 (3, 2, 60)입니다. Max Pooling Layer에서 학습 파라미터가 없습니다.
입력 채널: 60
출력 데이터 Shape: (3, 2, 60)
학습 파라미터: 0
3.4 Layer 4의 Shape과 파라미터
Layer 3도 1개의 Convolution Layer로 구성됩니다. 이 레이어의 출력 데이터 shape과 파라미터는 다음과 같이 계산할 수 있습니다.
3.4.1 Convolution Layer 4
Convolution Layer 4의 기본 정보는 다음과 같습니다.
입력 데이터 Shape = (3, 2, 60)
입력 채널 = 60
필터=(2, 2)
출력 채널 = 80
Stride = 1
입력 이미지에 Shape이 (2, 2)인 필터 80개를 적용할 경우 출력 데이터(Activation Map)의 Shape을 계산하는 과정은 <식 9>과 같습니다.
식 9. Convolution Layer 4의 Activation Map 크기 계산 RowSize = (3-2)+1/1 = 2 ColumnSize = (2-2)+1/1 = 1
<식 9>로 계산된 출력 데이터(Activation Map)의 Shape은 (2, 1, 80)입니다. Convolution Layer 1에서 학습시킬 대상은 입력 채널 60, 필터 사이즈 (2, 2), 출력 채널 80개입니다. 따라서 이 레이어의 학습 파라미터는 19,200개 (60X2X2X80)입니다.
입력 채널: 60
출력 데이터(Activation Map) Shape: (2, 1, 80)
학습 파라미터: 19,200개 (2X2X80)
3.5 Flatten Layer의 Shape
Flatten Layer는 CNN의 데이터 타입을 Fully Connected Neural Network의 형태로 변경하는 레이어입니다. Flatten 레이어에는 파라미터가 존재하지 않고, 입력 데이터의 Shape 변경만 수행합니다.
입력 데이터 Shape =(2, 1, 80)
출력 데이터 Shape =(160, 1)
3.6 Softmax Layer
이 레이어의 입력 데이터 Shape은 (160, 1)입니다. 이 네트워크의 분류 클래스가 100개이기 때문에 최종 데이터의 Shape은 (100, 1)입니다.
입력 데이터의 shape: (160, 1)
출력 데이터의 shape: (100, 1)
이때 Weight Shape은 (100, 160)입니다. Softmax 레이어이 파라미터는 160,000개 (100X160)입니다.
3.7 전체 파라미터 수와 레이어별 Input/Output 요약
layerinput channelFilteroutput channelStridePooling활성함수Input ShapeOutput Shape파라미터 수