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' 카테고리의 다른 글
케라스: 시계열을 활용한 기상(weather) 예측 (2) | 2020.12.16 |
---|---|
Tensorflow 콜백함수: ReduceLROnPlateau (2) | 2020.11.18 |
tensorflow 콜백함수: ModelCheckpoint (0) | 2020.11.17 |
Image Augmentation 라이브러리 albumentations 사용법 (0) | 2020.11.13 |
케라스: 시퀀스 to 시퀀스 모델을 적용한 덧셈연산 구현 (0) | 2020.11.12 |