본문 바로가기
C.W.K.
Stream
Lesson 04 of 07 · published

model.summary() 읽는 법

~8 min · sequential

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

모델 구조를 비추는 엑스레이

model.summary()는 레이어 이름, 출력 모양, 레이어별 매개변수 수, 학습 가능·불가능 매개변수의 합계를 표로 보여줘. 모델을 만든 직후 .compile()을 호출하기 전에 확인하는 습관을 들여. 학습을 끝낸 뒤 발견할 구조 오류를 몇 초 만에 잡을 수 있어.

출력 모양이 (None, 128)이라면 None은 학습할 때 정해질 배치 차원이야. 매개변수가 0Flatten이나 Dropout은 학습할 가중치가 없는 레이어이므로 정상이고, 학습 불가능 매개변수가 있다면 고정된 레이어나 BatchNormalization의 이동 통계일 수 있어.

매개변수 수를 손으로 확인해

입력 차원이 n, 출력 차원이 mDense에는 n × m개의 가중치와 m개의 편향이 있어. 따라서 길이 784인 벡터를 받는 Dense(128)의 매개변수는 784 × 128 + 128 = 100,480개야. 직접 계산한 값과 summary()가 다르다면 텐서 모양을 잘못 이해한 거야. 학습 전에 바로잡아야 할 신호지.

Code

주석과 함께 읽는 model.summary() 출력·python
model.summary()
# Output:
# ┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
# ┃ Layer (type)           ┃ Output Shape     ┃    Param # ┃
# ┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
# │ dense (Dense)          │ (None, 128)      │    100,480 │
# │ dropout (Dropout)      │ (None, 128)      │          0 │
# │ dense_1 (Dense)        │ (None, 10)       │      1,290 │
# └───────────────────────┴──────────────────┴────────────┘

External links

Exercise

Conv2D 두 개와 Dense 두 개로 CNN을 만들어. model.summary()를 읽고 각 합성곱 레이어의 매개변수를 (kernel_h × kernel_w × in_channels + 1) × out_channels로 직접 계산해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.