C.W.K.
Stream
Lesson 05 of 06 · published

Callback — EarlyStopping, ModelCheckpoint, ReduceLROnPlateau

~11 min · callbacks, early-stopping, checkpoint

Level 0Level 0
0 XP0/78 lessons0/17 achievements
0/100 XP to next level100 XP to go0% complete

모든 걸 바꾸는 hook

Callback은 training 특정 시점에 실행돼 — epoch 시작/끝, batch 시작/끝, training/validation 시작/끝. model.fit 다시 안 짜도 training 제어 가능.

대부분 training run의 표준 레시피:

  • EarlyStopping(patience=10, restore_best_weights=True) — val_loss 정체되면 멈추고 최고 가중치로 복귀.
  • ModelCheckpoint(save_best_only=True) — 최고 model 스냅샷 저장.
  • ReduceLROnPlateau(factor=0.5, patience=5) — training 정체 시 LR 반토막.
  • TensorBoard(log_dir=...) — 나중 시각화 위해 다 로깅.

epochs=500으로 설정하고 이 callback들이 멈춤 시점 결정하게 해. 다시는 epoch 수 수동 튜닝 안 해도 돼.

Code

Standard callback recipe·python
import datetime
from tensorflow import keras

callbacks = [
    keras.callbacks.EarlyStopping(
        monitor='val_loss',
        patience=10,
        min_delta=1e-4,
        restore_best_weights=True,
        start_from_epoch=5,    # don't stop in first 5 epochs (warm-up)
    ),
    keras.callbacks.ModelCheckpoint(
        filepath='checkpoints/best_{epoch:02d}_{val_accuracy:.3f}.keras',
        monitor='val_accuracy',
        save_best_only=True,
        mode='max',
    ),
    keras.callbacks.ReduceLROnPlateau(
        monitor='val_loss',
        factor=0.5,
        patience=5,
        min_delta=1e-4,
        cooldown=2,
        min_lr=1e-7,
    ),
    keras.callbacks.TensorBoard(
        log_dir="logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S"),
        histogram_freq=1,
    ),
]

model.fit(train_ds, validation_data=val_ds, epochs=500, callbacks=callbacks)

Progress

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

댓글 0

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

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