param_number
= output_size * (input_size + 1)
= output_channel_number *
(input_channel_number * kernel_height * kernel_width + 1) - for. conv
### num_param
1. conv2d (Conv2D) = 32 * ((3 * 3)+1) = 320
2. conv2d_1 (Conv2D) = 64 * ((32 * 3 * 3)+1) = 18496
3. conv2d_2 (Conv2D) = 64 * ((64 * 3 * 3)+1) = 36928
4. dense(Dense) = 64 * (576+1) = 36928
5. dense_1(Dense) = 10 * (64+1) = 650
### num_param
1. conv2d_4 : 32 * ((3*3*3)+1) = 896
2. conv2d_5 : 64 * ((32*3*3)+1) = 18496
3. dense_10 (Dense) : 128 * (774400+1) = 99123328
4. dense_11 (Dense) :10 * (128+1) = 1290
5. flatten은 왜 774400? : 110 * 110 * 64 = 774400
### num_param
1. embedding (Embedding) : 4*10 = 40
2. lstm (LSTM) : 4 * ((4+1)*8 + (8*8)) = 416
params = 4 * ((input_dim + 1) * size_of_lstm output + size_of_lstm output^2)
3. dense (Dense) : 8 * (8+1) = 72
size_of_output * (size_of_input+1) = dense 8 * (lstm 8+1)
4. dense_1 (Dense) : 1 * (8+1) = 9
dense_1 8 * (dense 8+1)
output이라는 건 지금 summary에서 내가 구하고 있는 그 layer.
input은 그 전의 layer의 마지막 output
그래서 conv에서는
= output_channel_number * (input_channel_number * kernel_height * kernel_width + 1)
이 공식을 첫 번째 Conv2D 레이어(즉, conv2d)에 적용하면 모델 요약과 일치하는 32 * (1 * 3 * 3 + 1) = 320을 사용하여 매개변수의 수를 계산할 수 있습니다. 입력 데이터 형태가 28 x 28 x 1이고 숫자 1이 입력 채널이기 때문에 입력 채널 번호는 1입니다.
max_pooling2d레이어의 입력은 (26, 26, 32)의 모양을 가지며 레이어에서 출력됩니다 conv2d. 최대 풀링은 모양이 (26, 26)인 각 필터(n=32)에 적용됩니다. 모델에서 max_pooling2d레이어의 경우 풀의 크기는 2 x 2이므로 데이터의 모양은 (13, 13), 즉 (26 / 2, 26 / 2)가 됩니다.
두 번째 Conv2D 레이어(예: conv2d_1)의 경우 다음과 같이 계산됩니다. 64 * (32 * 3 * 3 + 1) = 18496, 이 레이어에 대한 모델 요약에 표시된 숫자와 일치합니다. 여기서 주목해야 할 두 가지 사항은 출력 채널 번호가 모델 구성에 지정된 대로 64이고 입력 채널 번호가 이전 MaxPooling2D 레이어(즉, max_pooling2d)에서 32라는 것입니다.
유사한 방식으로 세 번째 Conv2D 레이어(예: )의 매개변수 수를 계산할 수 있습니다 conv2d_2. 모델 요약과 일치하는 64 * (64 * 3 * 3 + 1) = 36928입니다.
'Study (Data Science) > DL' 카테고리의 다른 글
Regression (회귀) / 이진분류는 회귀인가 분류인가? (0) | 2023.01.12 |
---|---|
Regularization, Normalization (0) | 2023.01.11 |
활성화함수 종류 (0) | 2022.12.29 |
인공지능, 머신러닝 그리고 딥러닝 (4) | 2022.12.27 |
TF-IDF (0) | 2022.12.19 |
댓글