ModelCheckpoint
ModelCheckpoint(filepath,
monitor='val_loss',
verbose=0,
save_best_only=False,
save_weights_only=False,
mode='auto',
period=1)
filepath : weights.{epoch:02d}-{val_loss:.2f}와 같은 이름으로 설정한다면 epoch와 val_loss를 넣어서 저장할 수 있다.
monitor : 모니터링 할 지표 ex) loss
save_best_only: 가장 좋은 성능만을 저장할 지 여부
save_weights_only: Weights만 저장할지 여부
mode: 모니터링 할 지표가 감소해야할 경우 min, 증가해야 할 경우 max, auto는 monitor 파라미터에 들어가는 argument에서 자동으로 유추
from tensorflow.kears.callbacks import ModelCheckpoint
mcp_cb = ModelCheckpoint(filepath="/경로/weights.{epoch:02d}-{val_loss:.2f}.h5,
monitor = "val_loss",
mode = "min",
save_best_only = True,
save_weights_only = True,
period = 1,
verbose = 1)
history = model.fit(x, y, batch_size, epochs, validation_data, callbacks=[mcp_cb])
ReduceLROnPlateau
특정 epoch 횟수 동안 성능이 개선되지 않을 경우 Learning rate를 동적으로 감소시킴
ReduceLROnPlateau(monitor='val_loss',
factor=0.1,
patience=10,
verbose=0,
mode='auto',
min_delta=0.0001,
cooldown=0,
min_lr=0)
factor: 학습 속도를 줄일 정도, new_lr = lr * factor
patience : lr을 줄이기 전에 모니터링할 epochs 횟수
from tensorflow.keras.callbacks import ReduceLROnPlateau
rlr_cb = ReduceLROnPlateau(monitor='val_loss', factor=0.3, patience=3, mode="min", verbose=1)
history = model.fit(x, y, batch_size, epochs, validation_data, callbacks=[rlr_cb])
EarlyStopping
특정 epochs 동안 성능이 개선되지 않을 경우 학습을 조기에 중단
EarlyStopping(monitor='val_loss',
patience=0,
verbose=0,
mode='auto')
from tensorflow.keras.callbacks import EarlyStopping
ely_cb = EarlyStopping(monitor='val_loss', patience=3, mode='min', verbose=1)
history = model.fit(x, y, batch_size, epochs, validation_data, callbacks=[ely_cb])