Feature extraction 후 추가 단계 — backbone 의 *일부 layer* 도 학습 가능하게 풀고, *매우 낮은* learning rate (1e-5 ~ 1e-4) 로 학습. 이때 backbone freeze 해제는 *위쪽 layer 부터* — 일반적 feature 는 그대로, task-specific 만 조정.
예: for layer in backbone.layers[:-50]: layer.trainable = False — 마지막 50 layer 만 풀기. compile 다시 (trainable 변경 후 필수). 그 후 또 fit.
백엔드 노트:
⚙️ Backend Note
Code
# 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)