Tensorflow

Tensorflow 콜백함수: EarlyStopping

카카오그래놀라 2020. 11. 18. 01:28

tf.keras.callbacks.EarlyStopping

 

Tensorflow, 케라스 콜백함수
EarlyStopping

모델을 더 이상 학습을 못할 경우(loss, metric등의 개선이 없을 경우), 학습 도중 미리 학습을 종료시키는 콜백함수입니다.


www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping

tf.keras.callbacks.EarlyStopping(
    monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto',
    baseline=None, restore_best_weights=False
)

 

인자 설명

인자 설명
monitor EarlyStopping의 기준이 되는 값을 입력합니다.

만약 'val_loss'를 입력하면 val_loss가 더이상 감소되지 않을 경우 EarlyStopping을 적용합니다.
이외에도 다양한 값을 입력할 수 있습니다.

min_delta 개선된 것으로 간주하기 위한 최소한의 변화량입니다. 예시로 이해하는 게 좋을 것 같습니다.

예를 들어, min_delta가 0.01이고, 30에폭에 정확도가 0.8532라고 할 때,
만약 31에폭에 정확도가 0.8537라고 하면 이는 0.005의 개선이 있었지만 min_delta 값 0.01에는 미치지 못했으므로 개선된 것으로 보지 않습니다.

patience Training이 진행됨에도 더이상 monitor되는 값의 개선이 없을 경우, 최적의 monitor 값을 기준으로 몇 번의 epoch을 진행할 지 정하는 값. 예시를 통해 이해하는 게 더 좋을 것 같습니다.

예를 들어 patience는 3이고, 30에폭에 정확도가 99%였을 때,
만약 31번째에 정확도 98%, 32번째에 98.5%, 33번째에 98%라면 더 이상 Training을 진행하지 않고 종료시킵니다.

verbose 0 또는 1

1일 경우, EarlyStopping이 적용될 때, 화면에 적용되었다고 나타냅니다.
0일 경우, 화면에 나타냄 없이 종료합니다.

mode "auto" 또는 "min" 또는 "max"

monitor되는 값이 최소가 되어야 하는지, 최대가 되어야 하는지 알려주는 인자입니다.
예를 들어, monitor하는 값이 val_acc 즉 정확도일 경우, 값이 클수록 좋기때문에 "max"를 입력하고, val_loss일 경우 작을수록 좋기 때문에 "min"을 입력합니다.
"auto"는 모델이 알아서 판단합니다.

baseline 모델이 달성해야하는 최소한의 기준값을 선정합니다.
patience 이내에 모델이 baseline보다 개선됨이 보이지 않으면 Training을 중단시킵니다.

예를 들어 patience가 3이고 baseline이 정확도기준 0.98 이라면,
3번의 trianing안에 0.98의 정확도를 달성하지 못하면 Training이 종료됩니다.

restore_best_weights True, False

True라면 training이 끝난 후, model의 weight를 monitor하고 있던 값이 가장 좋았을 때의 weight로 복원합니다.
False라면, 마지막 training이 끝난 후의 weight로 놔둡니다.

 

 

간단한 사용 예시는 아래 링크를 참조해주세요!

텐서플로우 콜백 함수(tensorflow callback)

 

텐서플로우 콜백 함수(tensorflow callback)

https://keras.io/api/callbacks/ Keras documentation: Callbacks API Callbacks API A callback is an object that can perform actions at various stages of training (e.g. at the start or end of an epoch..

deep-deep-deep.tistory.com