텐서플로우 콜백함수( Tensorflow Callbacks ) - ModelCheckpoint, ReduceLROnPlateau, EarlyStoppingDeep Learning & Machine Learning/강좌&예제 코드2021. 11. 17. 21:48
Table of Contents
반응형
텐서플로우 콜백함수 ModelCheckpoint, ReduceLROnPlateau, EarlyStopping를 다루고 있습니다.
2021. 11. 17 최초작성
ModelCheckpoint
모델 또는 가중치를 저장할 때 사용되는 콜백함수입니다.
www.tensorflow.org/api_docs/python/tf/keras/callbacks/ModelCheckpoint
인자 | 설명 |
filepath | 모델 파일을 저장할 경로를 입력합니다. 충돌이 나지 않도록 하기 위해 다른 콜백 함수에서 여기에서 지정한 경로를 사용하면 안됩니다. |
monitor | 콜백함수에서 모델을 저장할때 기준이 되는 값을 지정합니다. loss, val_loss, accuracy, val_accuracy등을 지정할 수 있습니다. 보통 Model.compile 메소드에 지정한 metrics과 관련된 것으로 지정합니다. |
verbose | 1로 지정하면 모델 저장시 메시지가 출력되며 0으로 지정하면 아무 메시지도 출력되지 않습니다. |
save_best_only | Ture로 설정하면 이전보다 성능이 좋은 경우에만 모델이 저장됩니다. |
save_weights_only | Ture이면 모델 가중치만 저장되며 False이면 모델 전체가 저장됩니다. |
mode | monitor가 accuracy 또는 val_accuracy로 지정된 경우에는 max로 해야 합니다. 이전 값보다 커지는 경우에만 모델이 저장됩니다. monitor가 loss 또는 val_loss로 지정된 경우에는 min으로 해야 합니다. 이전 값보다 작아지는 경우에만 모델이 저장됩니다. auto의 경우에는 monitor에 지정된 것을 보고 알아서 판단하여 모델이 저장됩니다. |
save_freq | 값으로 문자열 'epoch' 또는 정수를 사용할 수 있습니다. 문자열 'epoch'를 값으로 사용하면 각 epoch 끝날때 마다 모델을 저장합니다. 정수를 값으로 사용하면 지정한 정수만큼의 배치를 사용한 후, 모델을 저장합니다. 모델의 compile 메소드에 steps_per_execution=N 옵션을 추가했다면 N번째 배치마다 모델 저장 기준이 되었는지 확인합니다. 모델 저장이 epoch에 맞춰지지 않으면 모니터링되는 측정항목의 신뢰성이 떨어질 수 있습니다. 왜냐하면 메트릭은 매 epoch마다 재설정되므로 1 배치만큼 적게 반영될 수 있습니다. 디폴트 값은 'epoch'이므로 각 epoch 끝날때 마다 모델을 저장합니다. |
options | save_weights_only가 true인 경우 tf.train.CheckpointOptions 객체 또는 tf.saved_model을 제공할 수 있습니다. SaveOptions object if save_weights_only is false. save_weights_only가 false인 경우에는 SaveOptions 객체를 제공할 수 있습니다. |
ReduceLROnPlateau
모델의 성능이 향상되지 않는 경우 Learning Rate를 낮추는 콜백함수입니다.
www.tensorflow.org/api_docs/python/tf/keras/callbacks/ReduceLROnPlateau
인자 | 설명 |
monitor | 콜백함수에서 Learning Rate를 낮출때 기준이 되는 값을 지정합니다. loss, val_loss, accuracy, val_accuracy등을 지정할 수 있습니다. 보통 Model.compile 메소드에 지정한 metrics과 관련된 것으로 지정합니다. |
factor | 기준을 만족할때 마다 Learning rate를 얼마큼 감소시킬지 정하는 값입니다. 기존의 Learning rate에 여기에 지정된 값을 곱하여 새로운 Learning rate로 사용합니다. new_lr = lr * factor |
patience | monitor에 지정된 값이 patience에서 지정한 횟수만큼 epoch를 진행했는데도 개선되지 않았다면 Learning Rate를 낮추도록 합니다. |
verbose | 1로 지정하면 Learning Rate 낮춰질 때마다 메시지가 출력되며 0으로 지정하면 아무 메시지도 출력되지 않습니다. |
mode | monitor가 accuracy 또는 val_accuracy로 지정된 경우에는 max로 해야 합니다. 이전 값보다 커지지 않은 경우에 Learning Rate를 낮추도록 합니다. monitor가 loss 또는 val_loss로 지정된 경우에는 min으로 해야 합니다. 이전 값보다 작아지지 않은 경우에 Learning Rate를 낮추도록 합니다. auto의 경우에는 monitor에 지정된 것을 보고 알아서 판단하여 Learning Rate를 낮추도록 합니다. |
min_delta | min_delta에서 지정한 값만큼 monitor에서 지정한 값이 변했어야 mode에서 지정한 방향으로 값이 변한 것으로 간주하여 Learning Rate를 낮추도록 합니다. |
cooldown | ReduceLROnPlateau 콜백함수에 의해서 Learning rate가 낮춰진 후 다시 ReduceLROnPlateau 콜백함수가 정상 동작하기 전까지 대기할 epoch 수입니다. |
min_lr | min_lr에서 지정한 값보다 Learning rate가 낮아지지 않도록 합니다. |
EarlyStopping
모델 성능 향상이 없는 경우 학습을 중지하도록 하는 콜백함수입니다.
www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping
인자 | 설명 |
monitor | 콜백함수에서 EarlyStopping 적용할지 여부를 결정할 때 기준이 되는 값을 지정합니다. loss, val_loss, accuracy, val_accuracy등을 지정할 수 있습니다. 보통 Model.compile 메소드에 지정한 metrics과 관련된 것으로 지정합니다. |
min_delta | min_delta에서 지정한 값만큼 monitor에서 지정한 값이 변했어야 mode에서 지정한 방향으로 값이 변한 것으로 간주하여 학습을 중단합니다. |
patience | monitor에 지정된 값이 patience에서 지정한 횟수만큼 epoch를 진행했는데도 개선되지 않았다면 학습을 중단합니다. |
verbose | 1로 지정하면 학습이 중단될 때 메시지가 출력되며 0으로 지정하면 아무 메시지도 출력되지 않습니다. |
mode | monitor가 accuracy 또는 val_accuracy로 지정된 경우에는 max로 해야 합니다. 이전 값보다 커지지 않은 경우에 학습을 중단합니다. monitor가 loss 또는 val_loss로 지정된 경우에는 min으로 해야 합니다. 이전 값보다 작아지지 않은 경우에 학습을 중단합니다. auto의 경우에는 monitor에 지정된 것을 보고 알아서 판단하여 학습을 중단합니다. |
baseline | monitor에 지정된 값이 baseline에 지정된 값보다 개선되지 않으면 학습을 중단합니다. |
restore_best_weights | True이면 학습하는 동안 모니터링된 값중 가장 좋았을 때의 모델 가중치로 복원됩니다. False이면 학습 종료 후의 모델 가중치가 사용됩니다. baseline에 지정된 값과 관계없이 성능 좋았던 모델 가중치로 복원됩니다. baseline에서 지정한 값보다 개선되지 않았다면 patience만큼 epoch를 더 수행한 후, 그 중에 가장 좋은 가중치로 복원합니다. |
반응형
'Deep Learning & Machine Learning > 강좌&예제 코드' 카테고리의 다른 글
Tensorflow 학습 코드를 두 개를 동시에 실행하는 경우 model.fit에서 에러 (0) | 2021.12.01 |
---|---|
Tensorflow - tf.data.Dataset.from_generator 예제 (0) | 2021.11.19 |
tfds build 시 에러 AssertionError: Unrecognized instruction format ( 또는 Unrecognized split format ) (0) | 2021.11.12 |
Tensorflow 디버깅 정보 메시지 안보이게 하기 (0) | 2021.09.14 |
Tensorflow Dataset의 window 메소드 사용법 (0) | 2021.09.14 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!