Step 1: base 는 freeze, 새 head 만 학습
feature extraction 은 transfer 의 가장 안전하고 빠른 형태야. base_model.trainable = False 로 pretrained weight 전부 잠그고, 위에 작은 trainable head 만 얹어. head 만 배우니까 network 대부분은 gradient 자체를 안 계산해 — 학습 싸고, GPU 적게 먹고, pretrained feature 를 망칠 방법이 아예 없어. 항상 이게 *첫* 수야. fine-tuning (다음 lesson) 은 이 baseline 이 plateau 칠 때만 그 복잡함이 값을 해.
사람들이 자주 걸리는 두 지점
head 는 일부러 작게: GlobalAveragePooling2D 가 backbone feature map 을 이미지당 vector 하나로 압축하고, Dropout 이 작은 dataset overfitting 을 막고, class 수에 맞춘 Dense 하나가 예측해. 아래 Code section 에서 안 뻔한 두 가지가 값을 해:
- base 호출할 때
training=False— BatchNorm layer 를 inference mode 로 둬서, weight 가 freeze 된 동안 내 데이터로 running 통계가 흔들리지 않게 해. Sequential로 감싸는 대신 functionalkeras.Input형태 — frozen base / trainable head 경계를 명시적으로 만들고, fine-tuning lesson 이 이 구조 위에 쌓여.