새소식

딥러닝

Keras Callback - ModelCheckpoint, ReduceLROnPlateau, EarlyStopping

  • -

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])

 

728x90

'딥러닝' 카테고리의 다른 글

Automatic Mixed Precision  (0) 2022.08.01
Gradient Accumulation  (0) 2022.08.01
Regularization  (0) 2022.07.16
Neural Network  (0) 2022.07.11
Batch Normalization  (0) 2022.07.10
Contents