일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Eda
- 기계학습
- 에트리 인턴
- ML
- 시각화
- kaggle
- 에이블러
- 머신러닝
- 하계인턴
- hadoop
- 시계열
- 가나다영
- dx
- kt aivle school
- 빅분기
- KT 에이블스쿨
- 서평
- SQLD
- Ai
- 한국전자통신연구원 인턴
- 소셜네트워크분석
- ETRI
- 한국전자통신연구원
- arima
- ggplot2
- cnn
- matplot
- 하둡
- 지도학습
- 웹크롤링
- httr
- python
- KT AIVLE
- 프로그래머스
- 빅데이터분석기사
- 딥러닝
- 다변량분석
- SQL
- 에이블스쿨
- r
- Today
- Total
소품집
[DL] CNN 입출력, 파라미터 계산 본문
다음 조건과 같은 이미지를 학습하는 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/
위 포스팅 참조
'AI' 카테고리의 다른 글
[ML] A Motion Sensor Data - User Activity 맞추기 (1) | 2022.05.17 |
---|---|
[DL] Reinforcement Learning (Q-learning, Q-network..) (0) | 2021.11.12 |
[DL] CNN, Convolution Neural Network 요약 (0) | 2021.10.01 |
[DL] CNN Convolution(padding, stride) (0) | 2021.09.30 |
[DL] 배치(batch)와 에포크(epoch), 반복(iteration) (0) | 2021.09.30 |