C.W.K.
Stream
Lesson 04 of 07 · published

Fine-tuning

~8 min · transfer

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

Step 2: 위쪽 unfreeze, 아주 작은 learning rate 로 재학습

head 학습 끝나고 accuracy 가 자리 잡으면 fine-tuning 이 나머지를 짜내. base_model.trainable = True 로 풀고, *마지막* 몇 layer 빼고 다시 freeze 해. 왜 위쪽만? 초기 layer 엔 그대로 두고 싶은 보편 edge/texture detector 가 있고, 후반 layer 엔 내 task 쪽으로 살짝 구부릴 만한 ImageNet 전용 개념이 있거든.

learning rate 가 전부야

여기서 제일 중요한 숫자는 learning rate, 1e-5 정도로 — 평소 학습의 약 100× 낮게. pretrained weight 는 이미 좋은 해 근처에 있어. 평소 크기 LR 이면 큰 보폭으로 다 망가뜨려 (catastrophic forgetting). 작은 LR 이 unlearning 없이 딱 specialize 할 만큼만 밀어줘. 10~20 epoch 더 돌리면서 validation accuracy 봐 — 더 안 오르거나 overfit 시작하면 멈춰. 아래 Code section 이 freeze → 재 compile → fit 순서를 그대로 보여줘.

Code

위쪽 layer unfreeze + 1e-5 로 fine-tune·python
# Unfreeze the top layers of the base model
base_model.trainable = True

# Freeze everything except the top 20 layers
for layer in base_model.layers[:-20]:
    layer.trainable = False

# CRITICAL: Re-compile with a very low learning rate
model.compile(
    optimizer=keras.optimizers.Adam(1e-5),  # 100x lower!
    loss="categorical_crossentropy",
    metrics=["accuracy"],
)

# Continue training (~10-20 more epochs)
model.fit(train_ds, epochs=20, validation_data=val_ds)

External links

Exercise

feature-extraction 모델 가져와. backbone 마지막 30 layer 풀어. learning_rate=1e-5 로 재 compile. 3 epoch 더 학습. fine-tune 전후 validation accuracy 비교.

Progress

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

댓글 0

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

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