model 의 X-ray
model.summary() 는 architecture 를 테이블로 찍어 — layer 이름, output shape, layer 별 parameter 수, trainable / non-trainable 합계까지. build 직후, .compile() 부르기 *전에* 가장 먼저 돌리는 거야. 안 그러면 학습 한 판 통째로 날린 뒤에야 발견할 구조적 실수를 몇 초 만에 잡아주거든.
위에서 아래로 읽으면 세 가지가 눈에 띄어 (Code 섹션에 실제 예시). output shape 가 (None, 128) 이면 None 은 batch dim — fit 때 채워져. parameter 수가 0 이면 학습 weight 없는 layer (Flatten, Dropout), 버그 아니라 정상이야. non-trainable 이 0 이 아니면 frozen layer 거나 BatchNormalization 의 moving stats 를 가리켜.
parameter 숫자는 어디서 나오나
param column 은 마법이 아니야 — 손으로 유도 가능하고, 한 번 해보면 layer 가 실제로 어떻게 도는지 머리에 박혀. 입력 n → 출력 m 인 Dense 는 weight n × m 개에 bias m 개. 그래서 784-벡터 먹는 Dense(128) 은 784 × 128 + 128 = 100,480. 손계산과 summary() 가 어긋나면 shape 멘탈 모델이 틀린 거고, 그게 바로 학습 *전에* 잡고 싶은 버그야.