모델 구조를 비추는 엑스레이
model.summary()는 레이어 이름, 출력 모양, 레이어별 매개변수 수, 학습 가능·불가능 매개변수의 합계를 표로 보여줘. 모델을 만든 직후 .compile()을 호출하기 전에 확인하는 습관을 들여. 학습을 끝낸 뒤 발견할 구조 오류를 몇 초 만에 잡을 수 있어.
출력 모양이 (None, 128)이라면 None은 학습할 때 정해질 배치 차원이야. 매개변수가 0인 Flatten이나 Dropout은 학습할 가중치가 없는 레이어이므로 정상이고, 학습 불가능 매개변수가 있다면 고정된 레이어나 BatchNormalization의 이동 통계일 수 있어.
매개변수 수를 손으로 확인해
입력 차원이 n, 출력 차원이 m인 Dense에는 n × m개의 가중치와 m개의 편향이 있어. 따라서 길이 784인 벡터를 받는 Dense(128)의 매개변수는 784 × 128 + 128 = 100,480개야. 직접 계산한 값과 summary()가 다르다면 텐서 모양을 잘못 이해한 거야. 학습 전에 바로잡아야 할 신호지.