본문 바로가기
Study (Data Science)/DL

model.summary 에서의 param# 구하기

by 콜라찡 2023. 1. 6.

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입니다.

 

728x90

'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

댓글