Path: blob/master/site/ko/guide/keras/custom_callback.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
자신만의 콜백 작성하기
시작하기
콜백은 훈련, 평가 또는 추론 중에 Keras 모델의 동작을 사용자 정의할 수 있는 강력한 도구입니다. TensorBoard로 훈련 진행 상황과 결과를 시각화하기 위한 tf.keras.callbacks.TensorBoard
또는 훈련 도중 모델을 주기적으로 저장하는 tf.keras.callbacks.ModelCheckpoint
등이 여기에 포함됩니다.
이 가이드에서는 Keras 콜백이 무엇인지, 무엇을 할 수 있는지, 어떻게 자신만의 콜백을 빌드할 수 있는지 배웁니다. 콜백 애플리케이션의 몇 가지 간단한 데모를 통해 시작할 수 있습니다.
Setup
Keras 콜백 개요
모든 콜백은 keras.callbacks.Callback
클래스를 하위 클래스화하며, 훈련, 테스트 및 예측의 다양한 단계에서 호출되는 메서드 세트를 재정의합니다. 콜백은 훈련 중 모델의 내부 상태 및 통계를 볼 때 유용합니다.
콜백(키워드 인수 callbacks
와 같은)의 목록을 다음 모델 메서드에 전달할 수 있습니다.
keras.Model.fit()
keras.Model.evaluate()
keras.Model.predict()
콜백 메서드의 개요
전역 메서드
on_(train|test|predict)_begin(self, logs=None)
fit
/evaluate
/predict
시작 시 호출됩니다.
on_(train|test|predict)_end(self, logs=None)
fit
/evaluate
/predict
종료 시 호출됩니다.
훈련/테스트/예측을 위한 배치 레벨의 메서드
on_(train|test|predict)_batch_begin(self, batch, logs=None)
훈련/테스트/예측 중에 배치를 처리하기 직전에 호출됩니다.
on_(train|test|predict)_batch_end(self, batch, logs=None)
훈련/테스트/예측이 끝날 때 호출됩니다. 이 메서드에서 logs
는 메트릭 결과를 포함하는 dict입니다.
에포크 레벨 메서드(훈련만 해당)
on_epoch_begin(self, epoch, logs=None)
훈련 중 epoch가 시작될 때 호출됩니다.
on_epoch_end(self, epoch, logs=None)
훈련 중 epoc가이 끝날 때 호출됩니다.
기본적인 예제
구체적인 예를 살펴보겠습니다. 시작하려면 tensorflow를 가져오고 간단한 Sequential Keras 모델을 정의합니다.
그런 다음 Keras 데이터세트 API에서 훈련 및 테스트용 MNIST 데이터를 로드합니다.
이제 다음의 경우 로깅하는 간단한 사용자 정의 콜백을 정의합니다.
fit
/evaluate
/predict
가 시작하고 끝날 때각 에포크가 시작하고 끝날 때
각 훈련 배치가 시작하고 끝날 때
각 평가(테스트) 배치가 시작하고 끝날 때
각 추론(예측) 배치가 시작하고 끝날 때
사용해 보겠습니다.
logs
dict 사용법
logs
dict에는 손실값과 배치 또는 에포크의 끝에 있는 모든 메트릭이 포함됩니다. 이 예제에는 손실 및 평균 절대 오차가 포함됩니다.
self.model
속성의 사용법
메서드 중 하나가 호출될 때 로그 정보를 수신하는 것 외에도 콜백은 현재 훈련/평가/추론 라운드와 연결된 모델(self.model
)에 액세스할 수 있습니다.
콜백에서 self.model
로 수행할 수 있는 연산은 다음과 같습니다.
훈련을 즉시 중단하려면
self.model.stop_training = True
를 설정합니다.self.model.optimizer.learning_rate
와 같은 옵티마이저(self.model.optimizer
로 사용 가능)의 하이퍼파라미터를 변경합니다.주기적으로 모델을 저장합니다.
각 에포크가 끝날 때 몇 가지 테스트 샘플에
model.predict()
의 출력을 기록하여 훈련 중에 온전성 검사용으로 사용합니다.각 에포크가 끝날 때 중간 특성의 시각화를 추출하여 시간이 지남에 따라 모델이 학습하는 내용을 모니터링합니다.
기타
몇 가지 실제 예를 살펴보겠습니다.
Keras 콜백 애플리케이션의 예
최소 손실 시 조기 중지
이 첫 번째 예는 self.model.stop_training
(boolean) 속성을 설정하여 최소 손실에 도달했을 때 훈련을 중단하는 Callback
을 생성하는 방법을 보여줍니다. 선택적으로, 로컬 최소값에 도달한 후 중단하기 전에 기다려야 하는 에포크 수를 지정하는 인수 patience
을 제공할 수 있습니다.
tf.keras.callbacks.EarlyStopping
은 더 완전한 일반적인 구현을 제공합니다.
학습 속도 스케줄링
이 예제에서는 사용자 정의 콜백을 사용하여 훈련 동안 옵티마이저의 학습 속도를 동적으로 변경하는 방법을 보여줍니다.
보다 일반적인 구현에 대해서는 callbacks.LearningRateScheduler
를 참조하세요.
내장 Keras 콜백
API 문서를 읽고 기존 Keras 콜백을 확인하세요. 애플리케이션에는 CSV에 로깅하기, 모델 저장하기, TensorBoard에서 메트릭 시각화하기 등이 포함됩니다.